diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2024-03-12 23:18:23 +0000 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2024-03-12 23:18:23 +0000 |
| commit | a072c91cc0dc26e417c51f666e8547e08ef40942 (patch) | |
| tree | 1a7296d2acb9038b1928cc1f0f5a08aa6b92b222 /components/loader/LoaderFileSystemButton.vue | |
| parent | a4052ffee8bc7c6c8a69eba5120b5c6c2d951b0f (diff) | |
Add import from file system
Diffstat (limited to 'components/loader/LoaderFileSystemButton.vue')
| -rw-r--r-- | components/loader/LoaderFileSystemButton.vue | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/components/loader/LoaderFileSystemButton.vue b/components/loader/LoaderFileSystemButton.vue new file mode 100644 index 0000000..0d02477 --- /dev/null +++ b/components/loader/LoaderFileSystemButton.vue @@ -0,0 +1,40 @@ +<script setup lang="ts"> +import type LoaderFileSystemModal from './LoaderFileSystemModal.vue'; + +const loaderStore = useLoaderStore(); + +const { canUseFsApi } = getBrowserCapabilities(); + +const fileSystemModal = ref<InstanceType<typeof LoaderFileSystemModal> | null>(null); + +const openFileSystemPrompt = async () => { + fileSystemModal.value?.open(); + loaderStore.setFileSystemLoaderStatus('pending'); + const dirHandle = await openFileSystem(); + if (!dirHandle) { + loaderStore.setFileSystemLoaderStatus('inactive'); + return; + } + loaderStore.setPath(dirHandle.name); + loaderStore.setFileSystemLoaderStatus('loaded'); + try { + const { categories, quests, items } = await enumerateQuestDirectory(dirHandle); + loaderStore.setCategories(categories); + loaderStore.setQuests(quests); + loaderStore.setItems(items); + loaderStore.setFileSystemLoaderStatus('valid'); + } catch (e) { + console.error(e); + loaderStore.setFileSystemLoaderStatus('invalid'); + } +} +</script> + +<template> + <ClientOnly> + <Button type="solid" :icon="['fas', 'folder-open']" label="Import from Filesystem" @click="openFileSystemPrompt" + :disabled="!canUseFsApi" /> + + <LoaderFileSystemModal ref="fileSystemModal" /> + </ClientOnly> +</template>
\ No newline at end of file |
