diff --git a/apps/app-frontend/src/components/ui/InstanceCreationModal.vue b/apps/app-frontend/src/components/ui/InstanceCreationModal.vue index 6e3a51d19..6135b9951 100644 --- a/apps/app-frontend/src/components/ui/InstanceCreationModal.vue +++ b/apps/app-frontend/src/components/ui/InstanceCreationModal.vue @@ -218,7 +218,6 @@ import { get_game_versions, get_loader_versions } from '@/helpers/metadata' import { handleError } from '@/store/notifications.js' import Multiselect from 'vue-multiselect' import { trackEvent } from '@/helpers/analytics' -import { listen } from '@tauri-apps/api/event' import { install_from_file } from '@/helpers/pack.js' import { get_default_launcher_path, @@ -226,6 +225,7 @@ import { import_instance, } from '@/helpers/import.js' import ProgressBar from '@/components/ui/ProgressBar.vue' +import { getCurrentWebview } from '@tauri-apps/api/webview' const profile_name = ref('') const game_version = ref('') @@ -255,13 +255,15 @@ defineExpose({ isShowing.value = true modal.value.show() - unlistener.value = await listen('tauri://file-drop', async (event) => { + unlistener.value = await getCurrentWebview().onDragDropEvent(async (event) => { // Only if modal is showing if (!isShowing.value) return + if (event.payload.type !== 'drop') return if (creationType.value !== 'from file') return hide() - if (event.payload && event.payload.length > 0 && event.payload[0].endsWith('.mrpack')) { - await install_from_file(event.payload[0]).catch(handleError) + const { paths } = event.payload + if (paths && paths.length > 0 && paths[0].endsWith('.mrpack')) { + await install_from_file(paths[0]).catch(handleError) trackEvent('InstanceCreate', { source: 'CreationModalFileDrop', }) diff --git a/apps/app-frontend/src/pages/instance/Mods.vue b/apps/app-frontend/src/pages/instance/Mods.vue index 91bc317e3..f686b6bb2 100644 --- a/apps/app-frontend/src/pages/instance/Mods.vue +++ b/apps/app-frontend/src/pages/instance/Mods.vue @@ -378,7 +378,6 @@ import { } from '@/helpers/profile.js' import { handleError } from '@/store/notifications.js' import { trackEvent } from '@/helpers/analytics' -import { listen } from '@tauri-apps/api/event' import { highlightModInProfile } from '@/helpers/utils.js' import { MenuIcon, ToggleIcon, TextInputIcon, AddProjectImage, PackageIcon } from '@/assets/icons' import ExportModal from '@/components/ui/ExportModal.vue' @@ -393,6 +392,7 @@ import { import { profile_listener } from '@/helpers/events.js' import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue' import ShareModalWrapper from '@/components/ui/modal/ShareModalWrapper.vue' +import { getCurrentWebview } from '@tauri-apps/api/webview' const props = defineProps({ instance: { @@ -879,8 +879,10 @@ async function refreshProjects() { refreshingProjects.value = false } -const unlisten = await listen('tauri://file-drop', async (event) => { - for (const file of event.payload) { +const unlisten = await getCurrentWebview().onDragDropEvent(async (event) => { + if (event.payload.type !== 'drop') return + + for (const file of event.payload.paths) { if (file.endsWith('.mrpack')) continue await add_project_from_path(props.instance.path, file).catch(handleError) }