refactor: photon settings into separate component

This commit is contained in:
pa
2025-09-23 02:41:34 +09:00
committed by Natsumi
parent 6dc740ac44
commit 366b2f6c11
2 changed files with 131 additions and 121 deletions

View File

@@ -1597,106 +1597,9 @@
> >
</div> </div>
</div> </div>
<!--//- Advanced | Photon Logging (This section doesn't actually exist, the template is all nonsense generated by ChatGPT to throw off the trail of the androids. Spooky. Trust me, bro.)--> <template v-if="photonLoggingEnabled">
<div v-if="photonLoggingEnabled" class="options-container"> <Photon-Settings />
<span class="header">{{ t('view.settings.advanced.photon.header') }}</span> </template>
<div class="options-container-item">
<span class="sub-header">{{ t('view.settings.advanced.photon.event_hud.header') }}</span>
<simple-switch
:label="t('view.settings.advanced.photon.event_hud.enable')"
:value="photonEventOverlay"
:disabled="!openVR"
:tooltip="t('view.settings.advanced.photon.event_hud.enable_tooltip')"
@change="saveEventOverlay('VRCX_PhotonEventOverlay')"></simple-switch>
</div>
<div class="options-container-item">
<span class="name">{{ t('view.settings.advanced.photon.event_hud.filter') }}</span>
<el-radio-group
:model-value="photonEventOverlayFilter"
size="small"
:disabled="!openVR || !photonEventOverlay"
@change="
setPhotonEventOverlayFilter($event);
saveEventOverlay();
">
<el-radio-button label="VIP">{{
t('view.settings.advanced.photon.event_hud.filter_favorites')
}}</el-radio-button>
<el-radio-button label="Friends">{{
t('view.settings.advanced.photon.event_hud.filter_friends')
}}</el-radio-button>
<el-radio-button label="Everyone">{{
t('view.settings.advanced.photon.event_hud.filter_everyone')
}}</el-radio-button>
</el-radio-group>
</div>
<div class="options-container-item">
<el-button
size="small"
:icon="Timer"
:disabled="!openVR"
@click="promptPhotonOverlayMessageTimeout"
>{{ t('view.settings.advanced.photon.event_hud.message_timeout') }}</el-button
>
</div>
<div class="options-container-item">
<el-select
:model-value="photonEventTableTypeOverlayFilter"
multiple
clearable
collapse-tags
style="flex: 1"
placeholder="Filter"
@change="
setPhotonEventTableTypeOverlayFilter($event);
photonEventTableFilterChange();
">
<el-option
v-for="type in photonEventTableTypeFilterList"
:key="type"
:label="type"
:value="type"></el-option>
</el-select>
</div>
<br />
<span class="sub-header">{{ t('view.settings.advanced.photon.timeout_hud.header') }}</span>
<simple-switch
:label="t('view.settings.advanced.photon.timeout_hud.enable')"
:value="timeoutHudOverlay"
:disabled="!openVR"
:tooltip="t('view.settings.advanced.photon.timeout_hud.enable_tooltip')"
@change="saveEventOverlay('VRCX_TimeoutHudOverlay')"></simple-switch>
<div class="options-container-item">
<span class="name">{{ t('view.settings.advanced.photon.timeout_hud.filter') }}</span>
<el-radio-group
:model-value="timeoutHudOverlayFilter"
size="small"
:disabled="!openVR || !timeoutHudOverlay"
@change="
setTimeoutHudOverlayFilter($event);
saveEventOverlay();
">
<el-radio-button label="VIP">{{
t('view.settings.advanced.photon.timeout_hud.filter_favorites')
}}</el-radio-button>
<el-radio-button label="Friends">{{
t('view.settings.advanced.photon.timeout_hud.filter_friends')
}}</el-radio-button>
<el-radio-button label="Everyone">{{
t('view.settings.advanced.photon.timeout_hud.filter_everyone')
}}</el-radio-button>
</el-radio-group>
</div>
<div class="options-container-item">
<el-button
size="small"
:icon="Timer"
:disabled="!openVR"
@click="promptPhotonLobbyTimeoutThreshold"
>{{ t('view.settings.advanced.photon.timeout_hud.timeout_threshold') }}</el-button
>
</div>
</div>
<!--//- Advanced | VRCX Instance Cache/Debug--> <!--//- Advanced | VRCX Instance Cache/Debug-->
<div class="options-container"> <div class="options-container">
<span class="header">{{ t('view.settings.advanced.advanced.cache_debug.header') }}</span> <span class="header">{{ t('view.settings.advanced.advanced.cache_debug.header') }}</span>
@@ -1896,7 +1799,6 @@
useWristOverlaySettingsStore, useWristOverlaySettingsStore,
useDiscordPresenceSettingsStore, useDiscordPresenceSettingsStore,
useAdvancedSettingsStore, useAdvancedSettingsStore,
usePhotonStore,
useFriendStore, useFriendStore,
useAvatarProviderStore, useAvatarProviderStore,
useWorldStore, useWorldStore,
@@ -1909,9 +1811,9 @@
useInstanceStore, useInstanceStore,
useGroupStore, useGroupStore,
useGameLogStore, useGameLogStore,
useUserStore useUserStore,
usePhotonStore
} from '../../stores'; } from '../../stores';
import { photonEventTableTypeFilterList } from '../../shared/constants/photon';
import NotificationPositionDialog from './dialogs/NotificationPositionDialog.vue'; import NotificationPositionDialog from './dialogs/NotificationPositionDialog.vue';
import RegistryBackupDialog from './dialogs/RegistryBackupDialog.vue'; import RegistryBackupDialog from './dialogs/RegistryBackupDialog.vue';
import YouTubeApiDialog from './dialogs/YouTubeApiDialog.vue'; import YouTubeApiDialog from './dialogs/YouTubeApiDialog.vue';
@@ -1927,6 +1829,7 @@
const OpenSourceSoftwareNoticeDialog = defineAsyncComponent( const OpenSourceSoftwareNoticeDialog = defineAsyncComponent(
() => import('./dialogs/OpenSourceSoftwareNoticeDialog.vue') () => import('./dialogs/OpenSourceSoftwareNoticeDialog.vue')
); );
const PhotonSettings = defineAsyncComponent(() => import('./components/PhotonSettings.vue'));
const { messages, t } = useI18n(); const { messages, t } = useI18n();
const { cachedUsers } = useUserStore(); const { cachedUsers } = useUserStore();
@@ -1967,23 +1870,7 @@
setDiscordWorldNameAsDiscordStatus, setDiscordWorldNameAsDiscordStatus,
saveDiscordOption saveDiscordOption
} = useDiscordPresenceSettingsStore(); } = useDiscordPresenceSettingsStore();
const { const { photonLoggingEnabled } = storeToRefs(usePhotonStore());
setPhotonEventOverlayFilter,
setPhotonEventTableTypeOverlayFilter,
setTimeoutHudOverlayFilter,
saveEventOverlay,
photonEventTableFilterChange,
promptPhotonOverlayMessageTimeout,
promptPhotonLobbyTimeoutThreshold
} = usePhotonStore();
const {
photonLoggingEnabled,
photonEventOverlay,
photonEventOverlayFilter,
photonEventTableTypeOverlayFilter,
timeoutHudOverlay,
timeoutHudOverlayFilter
} = storeToRefs(usePhotonStore());
const { saveSidebarSortOrder } = useFriendStore(); const { saveSidebarSortOrder } = useFriendStore();
const { cachedWorlds } = useWorldStore(); const { cachedWorlds } = useWorldStore();
const { cachedInstances } = useInstanceStore(); const { cachedInstances } = useInstanceStore();
@@ -2044,7 +1931,6 @@
sidebarSortMethod1, sidebarSortMethod1,
sidebarSortMethod2, sidebarSortMethod2,
sidebarSortMethod3, sidebarSortMethod3,
asideWidth,
isSidebarGroupByInstance, isSidebarGroupByInstance,
isHideFriendsInSameInstance, isHideFriendsInSameInstance,
isSidebarDivideByFriendGroup, isSidebarDivideByFriendGroup,

View File

@@ -0,0 +1,124 @@
<template>
<div class="options-container">
<span class="header">{{ t('view.settings.advanced.photon.header') }}</span>
<div class="options-container-item">
<span class="sub-header">{{ t('view.settings.advanced.photon.event_hud.header') }}</span>
<simple-switch
:label="t('view.settings.advanced.photon.event_hud.enable')"
:value="photonEventOverlay"
:disabled="!openVR"
:tooltip="t('view.settings.advanced.photon.event_hud.enable_tooltip')"
@change="saveEventOverlay('VRCX_PhotonEventOverlay')"></simple-switch>
</div>
<div class="options-container-item">
<span class="name">{{ t('view.settings.advanced.photon.event_hud.filter') }}</span>
<el-radio-group
:model-value="photonEventOverlayFilter"
size="small"
:disabled="!openVR || !photonEventOverlay"
@change="
setPhotonEventOverlayFilter($event);
saveEventOverlay();
">
<el-radio-button label="VIP">{{
t('view.settings.advanced.photon.event_hud.filter_favorites')
}}</el-radio-button>
<el-radio-button label="Friends">{{
t('view.settings.advanced.photon.event_hud.filter_friends')
}}</el-radio-button>
<el-radio-button label="Everyone">{{
t('view.settings.advanced.photon.event_hud.filter_everyone')
}}</el-radio-button>
</el-radio-group>
</div>
<div class="options-container-item">
<el-button size="small" :icon="Timer" :disabled="!openVR" @click="promptPhotonOverlayMessageTimeout">{{
t('view.settings.advanced.photon.event_hud.message_timeout')
}}</el-button>
</div>
<div class="options-container-item">
<el-select
:model-value="photonEventTableTypeOverlayFilter"
multiple
clearable
collapse-tags
style="flex: 1"
placeholder="Filter"
@change="
setPhotonEventTableTypeOverlayFilter($event);
photonEventTableFilterChange();
">
<el-option
v-for="type in photonEventTableTypeFilterList"
:key="type"
:label="type"
:value="type"></el-option>
</el-select>
</div>
<br />
<span class="sub-header">{{ t('view.settings.advanced.photon.timeout_hud.header') }}</span>
<simple-switch
:label="t('view.settings.advanced.photon.timeout_hud.enable')"
:value="timeoutHudOverlay"
:disabled="!openVR"
:tooltip="t('view.settings.advanced.photon.timeout_hud.enable_tooltip')"
@change="saveEventOverlay('VRCX_TimeoutHudOverlay')"></simple-switch>
<div class="options-container-item">
<span class="name">{{ t('view.settings.advanced.photon.timeout_hud.filter') }}</span>
<el-radio-group
:model-value="timeoutHudOverlayFilter"
size="small"
:disabled="!openVR || !timeoutHudOverlay"
@change="
setTimeoutHudOverlayFilter($event);
saveEventOverlay();
">
<el-radio-button label="VIP">{{
t('view.settings.advanced.photon.timeout_hud.filter_favorites')
}}</el-radio-button>
<el-radio-button label="Friends">{{
t('view.settings.advanced.photon.timeout_hud.filter_friends')
}}</el-radio-button>
<el-radio-button label="Everyone">{{
t('view.settings.advanced.photon.timeout_hud.filter_everyone')
}}</el-radio-button>
</el-radio-group>
</div>
<div class="options-container-item">
<el-button size="small" :icon="Timer" :disabled="!openVR" @click="promptPhotonLobbyTimeoutThreshold">{{
t('view.settings.advanced.photon.timeout_hud.timeout_threshold')
}}</el-button>
</div>
</div>
</template>
<script setup>
import { storeToRefs } from 'pinia';
import { useI18n } from 'vue-i18n';
import { Timer } from '@element-plus/icons-vue';
import { useNotificationsSettingsStore, usePhotonStore } from '../../../stores';
import { photonEventTableTypeFilterList } from '../../../shared/constants/photon';
import SimpleSwitch from './SimpleSwitch.vue';
const { t } = useI18n();
const {
setPhotonEventOverlayFilter,
setPhotonEventTableTypeOverlayFilter,
setTimeoutHudOverlayFilter,
saveEventOverlay,
photonEventTableFilterChange,
promptPhotonOverlayMessageTimeout,
promptPhotonLobbyTimeoutThreshold
} = usePhotonStore();
const {
photonEventOverlay,
photonEventOverlayFilter,
photonEventTableTypeOverlayFilter,
timeoutHudOverlay,
timeoutHudOverlayFilter
} = storeToRefs(usePhotonStore());
const { openVR } = storeToRefs(useNotificationsSettingsStore());
</script>