fix: setting states not persisting (#4872)

Closes: 4867
This commit is contained in:
Calum H.
2025-12-08 23:29:52 +00:00
committed by GitHub
parent fec395a4cf
commit d5b7ac3542
2 changed files with 27 additions and 52 deletions

View File

@@ -9,7 +9,7 @@ import useMemorySlider from '@/composables/useMemorySlider'
import { edit, get_optimal_jre_key } from '@/helpers/profile' import { edit, get_optimal_jre_key } from '@/helpers/profile'
import { get } from '@/helpers/settings.ts' import { get } from '@/helpers/settings.ts'
import type { AppSettings, InstanceSettingsTabProps, MemorySettings } from '../../../helpers/types' import type { AppSettings, InstanceSettingsTabProps } from '../../../helpers/types'
const { handleError } = injectNotificationManager() const { handleError } = injectNotificationManager()
const { formatMessage } = useVIntl() const { formatMessage } = useVIntl()
@@ -22,12 +22,12 @@ const overrideJavaInstall = ref(!!props.instance.java_path)
const optimalJava = readonly(await get_optimal_jre_key(props.instance.path).catch(handleError)) const optimalJava = readonly(await get_optimal_jre_key(props.instance.path).catch(handleError))
const javaInstall = ref({ path: optimalJava.path ?? props.instance.java_path }) const javaInstall = ref({ path: optimalJava.path ?? props.instance.java_path })
const overrideJavaArgs = ref(props.instance.extra_launch_args?.length !== undefined) const overrideJavaArgs = ref((props.instance.extra_launch_args?.length ?? 0) > 0)
const javaArgs = ref( const javaArgs = ref(
(props.instance.extra_launch_args ?? globalSettings.extra_launch_args).join(' '), (props.instance.extra_launch_args ?? globalSettings.extra_launch_args).join(' '),
) )
const overrideEnvVars = ref(props.instance.custom_env_vars?.length !== undefined) const overrideEnvVars = ref((props.instance.custom_env_vars?.length ?? 0) > 0)
const envVars = ref( const envVars = ref(
(props.instance.custom_env_vars ?? globalSettings.custom_env_vars) (props.instance.custom_env_vars ?? globalSettings.custom_env_vars)
.map((x) => x.join('=')) .map((x) => x.join('='))
@@ -42,36 +42,23 @@ const { maxMemory, snapPoints } = (await useMemorySlider().catch(handleError)) a
} }
const editProfileObject = computed(() => { const editProfileObject = computed(() => {
const editProfile: { return {
java_path?: string java_path:
extra_launch_args?: string[] overrideJavaInstall.value && javaInstall.value.path !== ''
custom_env_vars?: string[][] ? javaInstall.value.path.replace('java.exe', 'javaw.exe')
memory?: MemorySettings : null,
} = {} extra_launch_args: overrideJavaArgs.value
? javaArgs.value.trim().split(/\s+/).filter(Boolean)
if (overrideJavaInstall.value) { : null,
if (javaInstall.value.path !== '') { custom_env_vars: overrideEnvVars.value
editProfile.java_path = javaInstall.value.path.replace('java.exe', 'javaw.exe') ? envVars.value
} .trim()
.split(/\s+/)
.filter(Boolean)
.map((x) => x.split('=').filter(Boolean))
: null,
memory: overrideMemorySettings.value ? memory.value : null,
} }
if (overrideJavaArgs.value) {
editProfile.extra_launch_args = javaArgs.value.trim().split(/\s+/).filter(Boolean)
}
if (overrideEnvVars.value) {
editProfile.custom_env_vars = envVars.value
.trim()
.split(/\s+/)
.filter(Boolean)
.map((x) => x.split('=').filter(Boolean))
}
if (overrideMemorySettings.value) {
editProfile.memory = memory.value
}
return editProfile
}) })
watch( watch(

View File

@@ -26,20 +26,16 @@ const fullscreenSetting: Ref<boolean> = ref(
) )
const editProfileObject = computed(() => { const editProfileObject = computed(() => {
const editProfile: { if (!overrideWindowSettings.value) {
force_fullscreen?: boolean return {
game_resolution?: [number, number] force_fullscreen: null,
} = {} game_resolution: null,
if (overrideWindowSettings.value) {
editProfile.force_fullscreen = fullscreenSetting.value
if (!fullscreenSetting.value) {
editProfile.game_resolution = resolution.value
} }
} }
return {
return editProfile force_fullscreen: fullscreenSetting.value,
game_resolution: fullscreenSetting.value ? null : resolution.value,
}
}) })
watch( watch(
@@ -95,14 +91,6 @@ const messages = defineMessages({
<Checkbox <Checkbox
v-model="overrideWindowSettings" v-model="overrideWindowSettings"
:label="formatMessage(messages.customWindowSettings)" :label="formatMessage(messages.customWindowSettings)"
@update:model-value="
(value) => {
if (!value) {
resolution = globalSettings.game_resolution
fullscreenSetting = globalSettings.force_fullscreen
}
}
"
/> />
<div class="mt-2 flex items-center gap-4 justify-between"> <div class="mt-2 flex items-center gap-4 justify-between">
<div> <div>