1
0
mirror of https://github.com/elk-zone/elk synced 2024-11-28 06:48:14 +09:00
elk/composables/dialog.ts
2022-11-28 18:27:38 +08:00

55 lines
1.6 KiB
TypeScript

import type { StatusEdit } from 'masto'
import type { Draft } from './statusDrafts'
import { STORAGE_KEY_FIRST_VISIT, STORAGE_KEY_ZEN_MODE } from '~/constants'
export const imagePreview = ref({ src: '', alt: '' })
export const statusEdit = ref<StatusEdit>()
export const dialogDraftKey = ref<string>()
export const isFirstVisit = useLocalStorage(STORAGE_KEY_FIRST_VISIT, true)
export const isZenMode = useLocalStorage(STORAGE_KEY_ZEN_MODE, false)
export const toggleZenMode = useToggle(isZenMode)
export const isSigninDialogOpen = ref(false)
export const isPublishDialogOpen = ref(false)
export const isImagePreviewDialogOpen = ref(false)
export const isEditHistoryDialogOpen = ref(false)
export const isPreviewHelpOpen = ref(isFirstVisit.value)
export function openSigninDialog() {
isSigninDialogOpen.value = true
}
export function openPublishDialog(draftKey = 'dialog', draft?: Draft, overwrite = false): void {
dialogDraftKey.value = draftKey
if (overwrite) {
// TODO overwrite warning
}
if (draft && (overwrite || !currentUserDrafts.value[draftKey]))
currentUserDrafts.value[draftKey] = draft
isPublishDialogOpen.value = true
}
if (isPreviewHelpOpen.value) {
watch(isPreviewHelpOpen, () => {
isFirstVisit.value = false
})
}
export function openImagePreviewDialog(image: { src: string; alt: string }) {
imagePreview.value = image
isImagePreviewDialogOpen.value = true
}
export function openEditHistoryDialog(edit: StatusEdit) {
statusEdit.value = edit
isEditHistoryDialogOpen.value = true
}
export function openPreviewHelp() {
isPreviewHelpOpen.value = true
}
export function closePreviewHelp() {
isPreviewHelpOpen.value = false
}