diff --git a/composables/dialog.ts b/composables/dialog.ts index 883fcb3e..db0dede0 100644 --- a/composables/dialog.ts +++ b/composables/dialog.ts @@ -57,14 +57,33 @@ if (isPreviewHelpOpen.value) { }) } +function restoreMediaPreviewFromState() { + mediaPreviewList.value = JSON.parse(history.state?.mediaPreviewList ?? '[]') + mediaPreviewIndex.value = history.state?.mediaPreviewIndex ?? 0 + isMediaPreviewOpen.value = history.state?.mediaPreview ?? false +} + +if (process.client) { + window.addEventListener('popstate', restoreMediaPreviewFromState) + + restoreMediaPreviewFromState() +} + export function openMediaPreview(attachments: Attachment[], index = 0) { mediaPreviewList.value = attachments mediaPreviewIndex.value = index isMediaPreviewOpen.value = true + + history.pushState({ + ...history.state, + mediaPreview: true, + mediaPreviewList: JSON.stringify(attachments), + mediaPreviewIndex: index, + }, '') } export function closeMediaPreview() { - isMediaPreviewOpen.value = false + history.back() } export function openEditHistoryDialog(edit: StatusEdit) {