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,
  }
})
