Skip to content
File

Blob: src/client/lib/affordance/archive.ts

typescript21 lines
1import {
2 ENABLED_ACTION,
3 HIDDEN_ACTION,
4 disabledAction,
5 OFFLINE_ACTION_REASON,
6 ARCHIVE_OWNERSHIP_ACTION_REASON,
7 type UiActionState,
8} from "@/client/lib/affordance/action-state";
9 
10export function resolveArchiveAffordance(input: {
11 archiveAnyPage: boolean;
12 archiveOwnPage: boolean;
13 ownsPage: boolean;
14 online: boolean;
15}): UiActionState {
16 const { archiveAnyPage, archiveOwnPage, ownsPage, online } = input;
17 if (!archiveAnyPage && !archiveOwnPage) return HIDDEN_ACTION;
18 if (!archiveAnyPage && !ownsPage) return disabledAction(ARCHIVE_OWNERSHIP_ACTION_REASON);
19 return online ? ENABLED_ACTION : disabledAction(OFFLINE_ACTION_REASON);
20}