File
Blob: src/client/lib/affordance/archive.ts
| 1 | import { |
| 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 | |
| 10 | export 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 | } |