diff --git a/components/status/StatusActions.vue b/components/status/StatusActions.vue index dab93916..8e44833d 100644 --- a/components/status/StatusActions.vue +++ b/components/status/StatusActions.vue @@ -97,6 +97,12 @@ const deleteStatus = async () => { const deleteAndRedraft = async () => { // TODO confirm to delete + if (process.dev) { + // eslint-disable-next-line no-alert + const result = confirm('[DEV] Are you sure you want to delete and re-draft this post?') + if (!result) + return + } const { text } = await useMasto().statuses.remove(status.id) openPublishDialog('dialog', getDraftFromStatus(status, text), true) diff --git a/composables/dialog.ts b/composables/dialog.ts index c3562f54..4b212b6a 100644 --- a/composables/dialog.ts +++ b/composables/dialog.ts @@ -21,11 +21,22 @@ export function openSigninDialog() { export function openPublishDialog(draftKey = 'dialog', draft?: Draft, overwrite = false): void { dialogDraftKey.value = draftKey - if (overwrite) { - // TODO overwrite warning + + if (draft) { + if (overwrite && !isEmptyDraft(currentUserDrafts.value[draftKey])) { + // TODO overwrite warning + // TODO don't overwrite, have a draft list + if (process.dev) { + // eslint-disable-next-line no-alert + const result = confirm('[DEV] Are you sure you overwrite draft content?') + if (!result) + return + } + } + + if (overwrite || !currentUserDrafts.value[draftKey]) + currentUserDrafts.value[draftKey] = draft } - if (draft && (overwrite || !currentUserDrafts.value[draftKey])) - currentUserDrafts.value[draftKey] = draft isPublishDialogOpen.value = true } diff --git a/composables/statusDrafts.ts b/composables/statusDrafts.ts index da4c2348..d0470eb3 100644 --- a/composables/statusDrafts.ts +++ b/composables/statusDrafts.ts @@ -61,7 +61,9 @@ export function getReplyDraft(status: Status) { } } -export const isEmptyDraft = (draft: Draft) => { +export const isEmptyDraft = (draft: Draft | null | undefined) => { + if (!draft) + return true const { params, attachments } = draft const status = params.status || '' return (status.length === 0 || status === '
')