|
import { defineStore } from 'pinia'; |
|
import { Provider, TSearCategory, TSearchEngine, TSearchMode } from 'src/interface'; |
|
import { ref } from 'vue'; |
|
|
|
type Theme = 'dark' | 'light' |
|
type Lan = 'zh' | 'en' | 'ptBR'; |
|
export const useAppStore = defineStore('app', () => { |
|
const engine = ref<TSearchEngine>('SEARXNG'); |
|
const model = ref(''); |
|
const localModel = ref(''); |
|
const localProvider = ref<Provider>('ollama'); |
|
const enableLocal = ref(false); |
|
const theme = ref<Theme>(); |
|
const language = ref<Lan>(); |
|
|
|
const category = ref<TSearCategory>('general'); |
|
|
|
const mode = ref<TSearchMode>('simple'); |
|
|
|
const updateModel = (val: string) => { |
|
model.value = val; |
|
}; |
|
|
|
const updateLocalModel = (val: string) => { |
|
localModel.value = val; |
|
}; |
|
|
|
const updateLocalProvider = (val: Provider) => { |
|
localProvider.value = val; |
|
}; |
|
|
|
const updateEngine = (val: TSearchEngine) => { |
|
engine.value = val; |
|
}; |
|
|
|
const updateTheme = (val: Theme) => { |
|
document.documentElement.setAttribute('theme-mode', val); |
|
theme.value = val; |
|
}; |
|
|
|
const updateLanguage = (val: Lan) => { |
|
language.value = val; |
|
}; |
|
|
|
const switchLocalModel = (val: boolean) => { |
|
enableLocal.value = val; |
|
}; |
|
|
|
const updateCategory = (val: TSearCategory) => { |
|
category.value = val; |
|
} |
|
|
|
const updateMode = (val: TSearchMode) => { |
|
mode.value = val; |
|
} |
|
|
|
return { |
|
engine, |
|
model, |
|
localModel, |
|
enableLocal, |
|
theme, |
|
language, |
|
category, |
|
mode, |
|
localProvider, |
|
updateModel, |
|
updateLocalModel, |
|
switchLocalModel, |
|
updateEngine, |
|
updateTheme, |
|
updateLanguage, |
|
updateCategory, |
|
updateMode, |
|
updateLocalProvider |
|
}; |
|
}, { |
|
persist: true |
|
}); |
|
|