import { rootSelector } from '@/redux/root/root.selectors'; import { createSelector } from '@reduxjs/toolkit'; import { projectIdSelector } from '@/redux/project/project.selectors'; import { hasPrivilegeToObject } from '@/redux/user/user.utils'; import { UserPrivilege } from '@/types/models'; export const userSelector = createSelector(rootSelector, state => state.user); export const authenticatedUserSelector = createSelector(userSelector, state => state.authenticated); export const loadingUserSelector = createSelector(userSelector, state => state.loading); export const loginUserSelector = createSelector(userSelector, state => state.login); export const userRoleSelector = createSelector(userSelector, state => state.role); export const userPrivilegesSelector = createSelector( userSelector, state => state.userData?.privileges || [], ); export const hasPrivilegeToWriteProjectSelector = createSelector( userPrivilegesSelector, projectIdSelector, (userPrivileges: UserPrivilege[], projectId: string | undefined): boolean => { if (!projectId) { return false; } return hasPrivilegeToObject(userPrivileges, 'WRITE_PROJECT', projectId); }, );