1405/04/27
-
This commit is contained in:
@@ -22,6 +22,28 @@ export const useSettingsStore = defineStore('settings', () => {
|
||||
return item?.value ?? null
|
||||
}
|
||||
|
||||
function mergeSettings(items?: AppSetting[] | null) {
|
||||
if (!items?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const merged = [...settings.value]
|
||||
items.forEach((item) => {
|
||||
if (!item?.key) {
|
||||
return
|
||||
}
|
||||
|
||||
const index = merged.findIndex((setting) => setting.key === item.key)
|
||||
if (index >= 0) {
|
||||
merged[index] = { ...merged[index], ...item }
|
||||
} else {
|
||||
merged.push(item)
|
||||
}
|
||||
})
|
||||
|
||||
settings.value = merged
|
||||
}
|
||||
|
||||
async function fetchSettings(force = false) {
|
||||
if (!force && fetchPromise) {
|
||||
return fetchPromise
|
||||
@@ -31,7 +53,7 @@ export const useSettingsStore = defineStore('settings', () => {
|
||||
try {
|
||||
const data = await getSettings()
|
||||
if (Array.isArray(data)) {
|
||||
settings.value = data
|
||||
mergeSettings(data)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
@@ -49,6 +71,7 @@ export const useSettingsStore = defineStore('settings', () => {
|
||||
settings,
|
||||
loaded,
|
||||
fetchSettings,
|
||||
mergeSettings,
|
||||
getSettingByKey,
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user