import { defineStore } from 'pinia' import { toast } from '../utils/toast.js' import { ref } from 'vue' import { useApi } from '../composables/useApi.js' // Import SETTINGS only. The manual-scan trigger + task-list surfaces retired // with the Import tab (2026-07-02): imports arrive via downloads/extension and // heal themselves (Layer-2 auto-refetch sweep); their runs show in Activity. // The /api/import/trigger + /tasks endpoints remain for direct/API use. // Consumers: ImportFiltersForm (Maintenance → Ingestion & filters) and the // Subscriptions Settings tab (downloader/extdl/schedule fields on the same // ImportSettings row). export const useImportStore = defineStore('import', () => { const api = useApi() const settings = ref(null) const settingsLoading = ref(false) const settingsError = ref(null) const wipScanBusy = ref(false) async function loadSettings() { settingsLoading.value = true settingsError.value = null try { settings.value = await api.get('/api/settings/import') } catch (e) { settingsError.value = e.message } finally { settingsLoading.value = false } } async function patchSettings(patch) { settingsError.value = null try { settings.value = await api.patch('/api/settings/import', { body: patch }) } catch (e) { settingsError.value = e.message toast({ text: `Settings save failed: ${e.message}`, type: 'error' }) throw e } } // Enqueue the back-catalogue WIP-title scan (task #1458). New imports are // tagged live; this catches posts already in the library. Fire-and-forget — // the sweep runs on the maintenance worker and its run shows in Activity. async function scanWipTitles() { wipScanBusy.value = true try { const r = await api.post('/api/settings/wip-title/scan') toast({ text: 'Scanning existing posts for WIP titles…', type: 'success' }) return r } catch (e) { toast({ text: `WIP scan failed: ${e.message}`, type: 'error' }) throw e } finally { wipScanBusy.value = false } } return { settings, settingsLoading, settingsError, wipScanBusy, loadSettings, patchSettings, scanWipTitles, } })