Toggle notification tray icon dot

This commit is contained in:
Natsumi
2025-12-02 14:46:04 +13:00
parent f552341c31
commit 1e32417e24
4 changed files with 39 additions and 9 deletions
+2 -1
View File
@@ -519,7 +519,8 @@
"sort_instance_users_by": "Sort Instance Users by", "sort_instance_users_by": "Sort Instance Users by",
"sort_instance_users_by_time": "time", "sort_instance_users_by_time": "time",
"sort_instance_users_by_alphabet": "alphabetical", "sort_instance_users_by_alphabet": "alphabetical",
"table_max_size": "Table Max Size" "table_max_size": "Table Max Size",
"show_notification_icon_dot": "Show Tray Notification Dot"
}, },
"timedate": { "timedate": {
"header": "Time/Date", "header": "Time/Date",
+19 -3
View File
@@ -19,6 +19,7 @@ import { useFriendStore } from '../friend';
import { useGameLogStore } from '../gameLog'; import { useGameLogStore } from '../gameLog';
import { useModerationStore } from '../moderation'; import { useModerationStore } from '../moderation';
import { useNotificationStore } from '../notification'; import { useNotificationStore } from '../notification';
import { useUiStore } from '../ui';
import { useUserStore } from '../user'; import { useUserStore } from '../user';
import { useVrStore } from '../vr'; import { useVrStore } from '../vr';
import { useVrcxStore } from '../vrcx'; import { useVrcxStore } from '../vrcx';
@@ -39,6 +40,7 @@ export const useAppearanceSettingsStore = defineStore(
const vrcxStore = useVrcxStore(); const vrcxStore = useVrcxStore();
const userStore = useUserStore(); const userStore = useUserStore();
const router = useRouter(); const router = useRouter();
const uiStore = useUiStore();
const { t, availableLocales, locale } = useI18n(); const { t, availableLocales, locale } = useI18n();
@@ -79,6 +81,7 @@ export const useAppearanceSettingsStore = defineStore(
troll: '#782F2F' troll: '#782F2F'
}); });
const currentCulture = ref(''); const currentCulture = ref('');
const notificationIconDot = ref(false);
const isSideBarTabShow = computed(() => { const isSideBarTabShow = computed(() => {
const currentRouteName = router.currentRoute.value?.name; const currentRouteName = router.currentRoute.value?.name;
return !( return !(
@@ -109,7 +112,8 @@ export const useAppearanceSettingsStore = defineStore(
hideUserMemosConfig, hideUserMemosConfig,
hideUnfriendsConfig, hideUnfriendsConfig,
randomUserColoursConfig, randomUserColoursConfig,
trustColorConfig trustColorConfig,
notificationIconDotConfig
] = await Promise.all([ ] = await Promise.all([
configRepository.getString('VRCX_appLanguage'), configRepository.getString('VRCX_appLanguage'),
configRepository.getString('VRCX_ThemeMode', 'system'), configRepository.getString('VRCX_ThemeMode', 'system'),
@@ -160,7 +164,8 @@ export const useAppearanceSettingsStore = defineStore(
vip: '#FF2626', vip: '#FF2626',
troll: '#782F2F' troll: '#782F2F'
}) })
) ),
configRepository.getBool('VRCX_notificationIconDot', true)
]); ]);
if (!appLanguageConfig) { if (!appLanguageConfig) {
@@ -213,6 +218,7 @@ export const useAppearanceSettingsStore = defineStore(
hideUserMemos.value = hideUserMemosConfig; hideUserMemos.value = hideUserMemosConfig;
hideUnfriends.value = hideUnfriendsConfig; hideUnfriends.value = hideUnfriendsConfig;
randomUserColours.value = randomUserColoursConfig; randomUserColours.value = randomUserColoursConfig;
notificationIconDot.value = notificationIconDotConfig;
// Migrate old settings // Migrate old settings
// Assume all exist if one does // Assume all exist if one does
@@ -424,6 +430,14 @@ export const useAppearanceSettingsStore = defineStore(
displayVRCPlusIconsAsAvatar.value displayVRCPlusIconsAsAvatar.value
); );
} }
function setNotificationIconDot() {
notificationIconDot.value = !notificationIconDot.value;
configRepository.setBool(
'VRCX_notificationIconDot',
notificationIconDot.value
);
uiStore.updateTrayIconNotify();
}
function setHideNicknames() { function setHideNicknames() {
hideNicknames.value = !hideNicknames.value; hideNicknames.value = !hideNicknames.value;
configRepository.setBool('VRCX_hideNicknames', hideNicknames.value); configRepository.setBool('VRCX_hideNicknames', hideNicknames.value);
@@ -711,6 +725,7 @@ export const useAppearanceSettingsStore = defineStore(
trustColor, trustColor,
currentCulture, currentCulture,
isSideBarTabShow, isSideBarTabShow,
notificationIconDot,
setAppLanguage, setAppLanguage,
setDisplayVRCPlusIconsAsAvatar, setDisplayVRCPlusIconsAsAvatar,
@@ -741,7 +756,8 @@ export const useAppearanceSettingsStore = defineStore(
userColourInit, userColourInit,
applyUserTrustLevel, applyUserTrustLevel,
changeAppLanguage, changeAppLanguage,
promptMaxTableSizeDialog promptMaxTableSizeDialog,
setNotificationIconDot
}; };
} }
); );
+7 -3
View File
@@ -7,6 +7,7 @@ import { useRouter } from 'vue-router';
import { AppDebug } from '../service/appConfig'; import { AppDebug } from '../service/appConfig';
import { refreshCustomCss } from '../shared/utils/base/ui'; import { refreshCustomCss } from '../shared/utils/base/ui';
import { updateLocalizedStrings } from '../plugin/i18n'; import { updateLocalizedStrings } from '../plugin/i18n';
import { useAppearanceSettingsStore } from './settings/appearance';
import { useNotificationStore } from './notification'; import { useNotificationStore } from './notification';
import { useSearchStore } from './search'; import { useSearchStore } from './search';
@@ -15,6 +16,7 @@ export const useUiStore = defineStore('Ui', () => {
const router = useRouter(); const router = useRouter();
const keys = useMagicKeys(); const keys = useMagicKeys();
const { directAccessPaste } = useSearchStore(); const { directAccessPaste } = useSearchStore();
const appearanceSettings = useAppearanceSettingsStore();
const ctrlR = keys['Ctrl+R']; const ctrlR = keys['Ctrl+R'];
const ctrlD = keys['Ctrl+D']; const ctrlD = keys['Ctrl+D'];
@@ -116,8 +118,9 @@ export const useUiStore = defineStore('Ui', () => {
function updateTrayIconNotify(force = false) { function updateTrayIconNotify(force = false) {
const newState = const newState =
notifiedMenus.value.includes('notification') || appearanceSettings.notificationIconDot &&
notifiedMenus.value.includes('friend-log'); (notifiedMenus.value.includes('notification') ||
notifiedMenus.value.includes('friend-log'));
if (trayIconNotify.value !== newState || force) { if (trayIconNotify.value !== newState || force) {
trayIconNotify.value = newState; trayIconNotify.value = newState;
@@ -136,6 +139,7 @@ export const useUiStore = defineStore('Ui', () => {
notifyMenu, notifyMenu,
removeNotify, removeNotify,
showConsole showConsole,
updateTrayIconNotify
}; };
}); });
@@ -54,6 +54,13 @@
style="width: 128px" style="width: 128px"
@change="setZoomLevel" /> @change="setZoomLevel" />
</div> </div>
<simple-switch
:label="t('view.settings.appearance.appearance.show_notification_icon_dot')"
:value="notificationIconDot"
@change="
setNotificationIconDot();
saveOpenVROption();
" />
<simple-switch <simple-switch
:label="t('view.settings.appearance.appearance.vrcplus_profile_icons')" :label="t('view.settings.appearance.appearance.vrcplus_profile_icons')"
:value="displayVRCPlusIconsAsAvatar" :value="displayVRCPlusIconsAsAvatar"
@@ -391,7 +398,8 @@
hideUserMemos, hideUserMemos,
hideUnfriends, hideUnfriends,
randomUserColours, randomUserColours,
trustColor trustColor,
notificationIconDot
} = storeToRefs(appearanceSettingsStore); } = storeToRefs(appearanceSettingsStore);
const { saveSortFavoritesOption } = useFavoriteStore(); const { saveSortFavoritesOption } = useFavoriteStore();
@@ -415,7 +423,8 @@
updateTrustColor, updateTrustColor,
saveThemeMode, saveThemeMode,
changeAppLanguage, changeAppLanguage,
promptMaxTableSizeDialog promptMaxTableSizeDialog,
setNotificationIconDot
} = appearanceSettingsStore; } = appearanceSettingsStore;
const zoomLevel = ref(100); const zoomLevel = ref(100);