mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-02 22:37:32 +00:00
Backport of #6755 to `cloud/1.32` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6849-backport-cloud-1-32-feat-LOD-setting-for-LG-and-Vue-2b46d73d36508186b306ef89d87bef29) by [Unito](https://www.unito.io) Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com>
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import type { ComputedRef } from 'vue'
|
|
import { ref, watch } from 'vue'
|
|
|
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
|
import type { Settings } from '@/schemas/apiSchema'
|
|
|
|
interface RenderModeSettingConfig<TSettingKey extends keyof Settings> {
|
|
setting: TSettingKey
|
|
vue: Settings[TSettingKey]
|
|
litegraph: Settings[TSettingKey]
|
|
}
|
|
|
|
export function useRenderModeSetting<TSettingKey extends keyof Settings>(
|
|
config: RenderModeSettingConfig<TSettingKey>,
|
|
isVueMode: ComputedRef<boolean>
|
|
) {
|
|
const settingStore = useSettingStore()
|
|
const vueValue = ref(config.vue)
|
|
const litegraphValue = ref(config.litegraph)
|
|
const lastWasVue = ref<boolean | null>(null)
|
|
|
|
const load = async (vue: boolean) => {
|
|
if (lastWasVue.value === vue) return
|
|
|
|
if (lastWasVue.value !== null) {
|
|
const currentValue = settingStore.get(config.setting)
|
|
if (lastWasVue.value) {
|
|
vueValue.value = currentValue
|
|
} else {
|
|
litegraphValue.value = currentValue
|
|
}
|
|
}
|
|
|
|
await settingStore.set(
|
|
config.setting,
|
|
vue ? vueValue.value : litegraphValue.value
|
|
)
|
|
lastWasVue.value = vue
|
|
}
|
|
|
|
watch(isVueMode, load, { immediate: true })
|
|
}
|