27 lines
791 B
TypeScript
27 lines
791 B
TypeScript
import { useRoute, useRouter } from 'vue-router'
|
|
import type { AppPreferences } from '@/config/urlPreferences'
|
|
import type { AppLocale } from '@/i18n/locale'
|
|
import { useAppStore } from '@/stores/app'
|
|
import type { AppTheme } from '@/theme/types'
|
|
|
|
export function useUrlPreferences() {
|
|
const route = useRoute()
|
|
const router = useRouter()
|
|
const appStore = useAppStore()
|
|
|
|
function replacePreferences(partial: Partial<AppPreferences>) {
|
|
const query = appStore.buildQueryForPreferences(partial, route.query)
|
|
router.replace({ path: route.path, hash: route.hash, query })
|
|
}
|
|
|
|
function setLocale(next: AppLocale) {
|
|
replacePreferences({ locale: next })
|
|
}
|
|
|
|
function setTheme(next: AppTheme) {
|
|
replacePreferences({ theme: next })
|
|
}
|
|
|
|
return { setLocale, setTheme }
|
|
}
|