pptEditor.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template>
  2. <div class="pptEditor">
  3. <Screen v-if="screening" />
  4. <Editor v-else />
  5. </div>
  6. </template>
  7. <script setup lang="ts">
  8. import Editor from "../Editor/index.vue"
  9. import Screen from "../Screen/index.vue"
  10. import { onMounted } from "vue"
  11. import { storeToRefs } from "pinia"
  12. import { useScreenStore, useMainStore, useSnapshotStore } from "@/store"
  13. import { LOCALSTORAGE_KEY_DISCARDED_DB } from "@/configs/storage"
  14. import { deleteDiscardedDB } from "@/utils/database"
  15. const mainStore = useMainStore()
  16. const snapshotStore = useSnapshotStore()
  17. const { databaseId } = storeToRefs(mainStore)
  18. const { screening } = storeToRefs(useScreenStore())
  19. if (import.meta.env.MODE !== "development") {
  20. window.onbeforeunload = () => false
  21. }
  22. onMounted(async () => {
  23. await deleteDiscardedDB()
  24. snapshotStore.initSnapshotDatabase()
  25. mainStore.setAvailableFonts()
  26. })
  27. // 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库
  28. window.addEventListener("unload", () => {
  29. const discardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)
  30. const discardedDBList: string[] = discardedDB ? JSON.parse(discardedDB) : []
  31. discardedDBList.push(databaseId.value)
  32. const newDiscardedDB = JSON.stringify(discardedDBList)
  33. localStorage.setItem(LOCALSTORAGE_KEY_DISCARDED_DB, newDiscardedDB)
  34. })
  35. </script>
  36. <style lang="scss" scoped>
  37. .pptEditor {
  38. width: 100%;
  39. height: 100%;
  40. }
  41. </style>