quivr/frontend/app/studio/[brainId]/BrainManagementTabs/utils/getBrainPermissions.ts
Antoine Dewez 8fc8c5e3ed
fix(frontend): revamp quivr studio (#2274)
# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):
2024-02-28 16:42:14 -08:00

39 lines
973 B
TypeScript

import { UUID } from "crypto";
import { MinimalBrainForUser } from "@/lib/context/BrainProvider/types";
import { isUserBrainOwner } from "./isUserBrainEditor";
import { isUserBrainEditor } from "./isUserBrainOwner";
type GetBrainPermissionsProps = {
brainId?: UUID;
userAccessibleBrains: MinimalBrainForUser[];
};
export const getBrainPermissions = ({
brainId,
userAccessibleBrains,
}: GetBrainPermissionsProps): {
isPublicBrain: boolean;
hasEditRights: boolean;
isOwnedByCurrentUser: boolean;
} => {
const isOwnedByCurrentUser = isUserBrainOwner({
brainId,
userAccessibleBrains,
});
const userHasBrainEditorRights = isUserBrainEditor({
brainId,
userAccessibleBrains,
});
const isPublicBrain =
userAccessibleBrains.find((brain) => brain.id === brainId)?.status ===
"public";
const hasEditRights = isOwnedByCurrentUser || userHasBrainEditorRights;
return { isPublicBrain, hasEditRights, isOwnedByCurrentUser };
};