From b290f9b8d1f1a2fa80a976269be062fc56af7578 Mon Sep 17 00:00:00 2001 From: Chris Privitere <23177737+cprivitere@users.noreply.github.com> Date: Wed, 13 May 2026 19:50:33 -0500 Subject: [PATCH] feat: default file pickers to configured game data folders --- src/components/Settings/AdvancedSettings.vue | 3 +++ src/components/Settings/ChatLogsSettings.vue | 2 ++ src/components/StallTracker/StallTrackerView.vue | 3 +++ src/stores/breweryStore.ts | 3 +++ src/stores/cooksHelperStore.ts | 3 +++ src/stores/gourmandStore.ts | 3 +++ 6 files changed, 17 insertions(+) diff --git a/src/components/Settings/AdvancedSettings.vue b/src/components/Settings/AdvancedSettings.vue index 59bbae4..7e4d7e8 100644 --- a/src/components/Settings/AdvancedSettings.vue +++ b/src/components/Settings/AdvancedSettings.vue @@ -255,6 +255,7 @@ const parseError = ref(null); async function browseAndParsePlayerLog() { const selected = await open({ multiple: false, + defaultPath: settingsStore.settings.logFilePath || settingsStore.settings.gameDataPath || undefined, filters: [{ name: "Log Files", extensions: ["log", "txt"] }], }); if (selected) { @@ -293,6 +294,7 @@ let unlistenProgress: UnlistenFn | null = null; async function pickPlayerLogForReplay() { const selected = await open({ multiple: false, + defaultPath: settingsStore.settings.logFilePath || settingsStore.settings.gameDataPath || undefined, filters: [{ name: "Log Files", extensions: ["log", "txt"] }], }); if (selected) { @@ -303,6 +305,7 @@ async function pickPlayerLogForReplay() { async function pickChatLogForReplay() { const selected = await open({ multiple: false, + defaultPath: (settingsStore.settings.gameDataPath ? settingsStore.settings.gameDataPath + "/ChatLogs" : undefined), filters: [{ name: "Log Files", extensions: ["log", "txt"] }], }); if (selected) { diff --git a/src/components/Settings/ChatLogsSettings.vue b/src/components/Settings/ChatLogsSettings.vue index 88da9bb..304a08a 100644 --- a/src/components/Settings/ChatLogsSettings.vue +++ b/src/components/Settings/ChatLogsSettings.vue @@ -225,6 +225,7 @@ const parseResult = ref(null); async function selectAndParseFile() { const selected = await open({ multiple: false, + defaultPath: (settingsStore.settings.gameDataPath ? settingsStore.settings.gameDataPath + "/ChatLogs" : undefined), filters: [{ name: "Chat Log Files", extensions: ["log", "txt"] }], }); if (selected) { @@ -243,6 +244,7 @@ async function parseFolder() { const selected = await open({ directory: true, multiple: false, + defaultPath: (settingsStore.settings.gameDataPath ? settingsStore.settings.gameDataPath + "/ChatLogs" : undefined), }); if (selected) { parseResult.value = null; diff --git a/src/components/StallTracker/StallTrackerView.vue b/src/components/StallTracker/StallTrackerView.vue index 03efb09..ffbace6 100644 --- a/src/components/StallTracker/StallTrackerView.vue +++ b/src/components/StallTracker/StallTrackerView.vue @@ -114,9 +114,11 @@ import StallInventoryTab from './StallInventoryTab.vue' import StallShopLogTab from './StallShopLogTab.vue' import { useStallTrackerStore } from '../../stores/stallTrackerStore' import { useViewPrefs } from '../../composables/useViewPrefs' +import { useSettingsStore } from '../../stores/settingsStore' import type { ImportResult, ExportResult } from '../../types/stallTracker' const store = useStallTrackerStore() +const settingsStore = useSettingsStore() // Ephemeral status text shown in the action row (auto-clears after 5s). const actionMessage = ref('') @@ -136,6 +138,7 @@ async function handleImport() { if (actionInProgress.value) return const selected = await openDialog({ multiple: true, + defaultPath: settingsStore.settings.gameDataPath || undefined, filters: [{ name: 'Shop log book', extensions: ['txt'] }], }) if (!selected) return diff --git a/src/stores/breweryStore.ts b/src/stores/breweryStore.ts index 632c64f..a6d7c16 100644 --- a/src/stores/breweryStore.ts +++ b/src/stores/breweryStore.ts @@ -1,6 +1,7 @@ import { defineStore } from "pinia"; import { ref, computed } from "vue"; import { invoke } from "@tauri-apps/api/core"; +import { useSettingsStore } from "./settingsStore"; import type { BrewingRecipe, BrewingIngredient, @@ -311,8 +312,10 @@ export const useBreweryStore = defineStore("brewery", () => { async function importCsv(character: string): Promise { if (scanning.value) return null; + const settingsStore = useSettingsStore(); const { open } = await import("@tauri-apps/plugin-dialog"); const filePath = await open({ + defaultPath: settingsStore.settings.gameDataPath || undefined, filters: [{ name: "CSV", extensions: ["csv"] }], multiple: false, }); diff --git a/src/stores/cooksHelperStore.ts b/src/stores/cooksHelperStore.ts index 35bb67b..9d3116b 100644 --- a/src/stores/cooksHelperStore.ts +++ b/src/stores/cooksHelperStore.ts @@ -4,6 +4,7 @@ import { invoke } from '@tauri-apps/api/core' import { open } from '@tauri-apps/plugin-dialog' import { useCraftingStore } from './craftingStore' import { useGameStateStore } from './gameStateStore' +import { useSettingsStore } from './settingsStore' import type { RecipeInfo } from '../types/gameData/recipes' import type { FoodItem } from '../types/gourmand' import type { MaterialNeed } from '../types/crafting' @@ -145,7 +146,9 @@ export const useCooksHelperStore = defineStore('cooksHelper', () => { async function importFile() { error.value = null + const settingsStore = useSettingsStore() const filePath = await open({ + defaultPath: (settingsStore.settings.gameDataPath ? settingsStore.settings.gameDataPath + '/Reports' : undefined), filters: [{ name: 'Gourmand Skill Report', extensions: ['txt'] }], }) diff --git a/src/stores/gourmandStore.ts b/src/stores/gourmandStore.ts index a4f70a0..7a6ff27 100644 --- a/src/stores/gourmandStore.ts +++ b/src/stores/gourmandStore.ts @@ -5,6 +5,7 @@ import { listen } from '@tauri-apps/api/event' import { open, save } from '@tauri-apps/plugin-dialog' import { useGameStateStore } from './gameStateStore' import { useCharacterStore } from './characterStore' +import { useSettingsStore } from './settingsStore' import type { FoodItem, GourmandFoodEntry, GourmandImportResult } from '../types/gourmand' export const useGourmandStore = defineStore('gourmand', () => { @@ -153,7 +154,9 @@ export const useGourmandStore = defineStore('gourmand', () => { async function importReport() { error.value = null + const settingsStore = useSettingsStore() const filePath = await open({ + defaultPath: (settingsStore.settings.gameDataPath ? settingsStore.settings.gameDataPath + '/Reports' : undefined), filters: [{ name: 'Gourmand Report', extensions: ['txt'] }], })