diff --git a/src/bootstrap.js b/src/bootstrap.js index f99f9ac1..ee30ece6 100644 --- a/src/bootstrap.js +++ b/src/bootstrap.js @@ -20,26 +20,31 @@ import { import { i18n } from './plugin'; configRepository.init(); -i18n.locale = await configRepository.getString('VRCX_appLanguage', 'en'); AppApi.SetUserAgent(); -const initThemeMode = await configRepository.getString( - 'VRCX_ThemeMode', - 'system' -); +try { + i18n.locale = await configRepository.getString('VRCX_appLanguage', 'en'); -let isDarkMode; + const initThemeMode = await configRepository.getString( + 'VRCX_ThemeMode', + 'system' + ); -if (initThemeMode === 'light') { - isDarkMode = false; -} else if (initThemeMode === 'system') { - isDarkMode = systemIsDarkMode(); -} else { - isDarkMode = true; + let isDarkMode; + + if (initThemeMode === 'light') { + isDarkMode = false; + } else if (initThemeMode === 'system') { + isDarkMode = systemIsDarkMode(); + } else { + isDarkMode = true; + } + changeAppDarkStyle(isDarkMode); + changeAppThemeStyle(initThemeMode); +} catch (error) { + console.error('Error initializing locale and theme:', error); } -changeAppDarkStyle(isDarkMode); -changeAppThemeStyle(initThemeMode); refreshCustomCss(); refreshCustomScript(); diff --git a/src/components/FriendItem.vue b/src/components/FriendItem.vue index 07779043..6547e3ca 100644 --- a/src/components/FriendItem.vue +++ b/src/components/FriendItem.vue @@ -74,10 +74,10 @@ const { hideNicknames } = storeToRefs(useAppearanceSettingsStore()); const { isRefreshFriendsLoading } = storeToRefs(useFriendStore()); - const isFriendTraveling = computed(() => props.friend.ref.location === 'traveling'); + const isFriendTraveling = computed(() => props.friend.ref?.location === 'traveling'); const isFriendActiveOrOffline = computed(() => props.friend.state === 'active' || props.friend.state === 'offline'); const epoch = computed(() => - isFriendTraveling.value ? props.friend.ref.$travelingToTime : props.friend.ref.$location_at + isFriendTraveling.value ? props.friend.ref?.$travelingToTime : props.friend.ref?.$location_at ); diff --git a/src/service/websocket.js b/src/service/websocket.js index 101b0c96..ca598cf4 100644 --- a/src/service/websocket.js +++ b/src/service/websocket.js @@ -94,8 +94,9 @@ function connectWebSocket(token) { return; } lastWebSocketMessage = data; - const json = JSON.parse(data); + let json; try { + json = JSON.parse(data); json.content = JSON.parse(json.content); } catch { // ignore parse error diff --git a/src/stores/auth.js b/src/stores/auth.js index 71e3d973..f4484d3e 100644 --- a/src/stores/auth.js +++ b/src/stores/auth.js @@ -75,13 +75,22 @@ export const useAuthStore = defineStore('Auth', () => { configRepository.getString('lastUserLoggedIn'), configRepository.getBool('VRCX_enableCustomEndpoint', false) ]); - state.loginForm = { - ...state.loginForm, - savedCredentials: savedCredentials - ? JSON.parse(savedCredentials) - : {}, - lastUserLoggedIn - }; + try { + state.loginForm = { + ...state.loginForm, + savedCredentials: savedCredentials + ? JSON.parse(savedCredentials) + : {}, + lastUserLoggedIn + }; + } catch (error) { + console.error('Failed to parse savedCredentials:', error); + state.loginForm = { + ...state.loginForm, + savedCredentials: {}, + lastUserLoggedIn + }; + } state.enableCustomEndpoint = enableCustomEndpoint; }