Skip to content
File

Blob: src/shared/entitlements/page-edit.ts

typescript59 lines
1import type { EntitlementSurface, PageAccessLevel } from "@/shared/entitlements/common";
2 
3export interface PageEditEntitlements {
4 editDocument: boolean;
5 editPageMetadata: boolean;
6 insertPageMention: boolean;
7 uploadImage: boolean;
8}
9 
10const PAGE_EDIT_TABLE: Record<EntitlementSurface, Record<PageAccessLevel, PageEditEntitlements>> = {
11 canonical: {
12 none: {
13 editDocument: false,
14 editPageMetadata: false,
15 insertPageMention: false,
16 uploadImage: false,
17 },
18 view: {
19 editDocument: false,
20 editPageMetadata: false,
21 insertPageMention: false,
22 uploadImage: false,
23 },
24 edit: {
25 editDocument: true,
26 editPageMetadata: true,
27 insertPageMention: true,
28 uploadImage: true,
29 },
30 },
31 shared: {
32 none: {
33 editDocument: false,
34 editPageMetadata: false,
35 insertPageMention: false,
36 uploadImage: false,
37 },
38 view: {
39 editDocument: false,
40 editPageMetadata: false,
41 insertPageMention: false,
42 uploadImage: false,
43 },
44 edit: {
45 editDocument: true,
46 editPageMetadata: true,
47 insertPageMention: false,
48 uploadImage: true,
49 },
50 },
51};
52 
53export function getPageEditEntitlements(
54 surface: EntitlementSurface,
55 pageAccess: PageAccessLevel,
56): PageEditEntitlements {
57 return PAGE_EDIT_TABLE[surface][pageAccess];
58}