import { PERMISSIONS } from '../actions/actionsTypes';
import { type TActionPermissions } from '../actions/permissions';
import { type SUPPORTED_PERMISSIONS } from '../lib/methods/getPermissions';

export type TSupportedPermissions = (typeof SUPPORTED_PERMISSIONS)[number];

export type IPermissionsState = {
	[K in TSupportedPermissions]?: string[];
};

export const initialState: IPermissionsState = {};

export default function permissions(state = initialState, action: TActionPermissions): IPermissionsState {
	switch (action.type) {
		case PERMISSIONS.SET:
			return action.permissions;
		case PERMISSIONS.UPDATE:
			return {
				...state,
				[action.payload.id]: action.payload.roles
			};
		default:
			return state;
	}
}
