Files
VRCX/src/stores/index.js

208 lines
6.7 KiB
JavaScript

import { createPinia } from 'pinia';
import { getSentry, isSentryOptedIn } from '../plugin';
import { createPiniaActionTrailPlugin } from '../plugin/piniaActionTrail';
import { useAdvancedSettingsStore } from './settings/advanced';
import { useAppearanceSettingsStore } from './settings/appearance';
import { useAuthStore } from './auth';
import { useAvatarProviderStore } from './avatarProvider';
import { useAvatarStore } from './avatar';
import { useChartsStore } from './charts';
import { useDiscordPresenceSettingsStore } from './settings/discordPresence';
import { useFavoriteStore } from './favorite';
import { useFeedStore } from './feed';
import { useFriendStore } from './friend';
import { useGalleryStore } from './gallery';
import { useGameLogStore } from './gameLog';
import { useGameStore } from './game';
import { useGeneralSettingsStore } from './settings/general';
import { useGroupStore } from './group';
import { useInstanceStore } from './instance';
import { useInviteStore } from './invite';
import { useLaunchStore } from './launch';
import { useLocationStore } from './location';
import { useModalStore } from './modal';
import { useModerationStore } from './moderation';
import { useNotificationStore } from './notification';
import { useNotificationsSettingsStore } from './settings/notifications';
import { usePhotonStore } from './photon';
import { useSearchStore } from './search';
import { useSharedFeedStore } from './sharedFeed';
import { useUiStore } from './ui';
import { useUpdateLoopStore } from './updateLoop';
import { useUserStore } from './user';
import { useVRCXUpdaterStore } from './vrcxUpdater';
import { useVrStore } from './vr';
import { useVrcStatusStore } from './vrcStatus';
import { useVrcxStore } from './vrcx';
import { useWorldStore } from './world';
import { useWristOverlaySettingsStore } from './settings/wristOverlay';
export const pinia = createPinia();
function registerPiniaActionTrailPlugin() {
if (!NIGHTLY) return;
pinia.use(createPiniaActionTrailPlugin({ maxEntries: 200 }));
}
async function registerSentryPiniaPlugin() {
if (!NIGHTLY) return;
if (!(await isSentryOptedIn())) return;
const Sentry = await getSentry();
pinia.use(
Sentry.createSentryPiniaPlugin({
stateTransformer: (state) => ({
...state,
Auth: null,
Feed: null,
Favorite: null,
Friend: null,
User: {
// @ts-ignore
...state.User,
currentUser: null,
subsetOfLanguages: null,
languageDialog: {
// @ts-ignore
...state.User.languageDialog,
languages: null
}
},
GameLog: {
// @ts-ignore
...state.GameLog,
gameLogTable: null,
gameLogSessionTable: null
},
Notification: {
// @ts-ignore
...state.Notification,
notificationTable: null
},
Moderation: {
// @ts-ignore
...state.Moderation,
playerModerationTable: null,
cachedPlayerModerations: null,
cachedPlayerModerationsUserIds: null
},
Photon: null,
SharedFeed: {
// @ts-ignore
...state.SharedFeed,
sharedFeed: null
},
Group: {
// @ts-ignore
...state.Group,
groupInstances: null,
inGameGroupOrder: null
},
Avatar: {
// @ts-ignore
...state.Avatar,
avatarHistory: null
},
Gallery: {
// @ts-ignore
...state.Gallery,
emojiTable: null,
galleryTable: null,
instanceStickersCache: null,
inventoryTable: null,
printTable: null,
stickerTable: null,
VRCPlusIconsTable: null
}
})
})
);
}
export async function initPiniaPlugins() {
await registerSentryPiniaPlugin();
setTimeout(() => {
registerPiniaActionTrailPlugin();
}, 60000);
}
export function createGlobalStores() {
return {
advancedSettings: useAdvancedSettingsStore(),
appearanceSettings: useAppearanceSettingsStore(),
discordPresenceSettings: useDiscordPresenceSettingsStore(),
generalSettings: useGeneralSettingsStore(),
notificationsSettings: useNotificationsSettingsStore(),
wristOverlaySettings: useWristOverlaySettingsStore(),
avatarProvider: useAvatarProviderStore(),
favorite: useFavoriteStore(),
friend: useFriendStore(),
photon: usePhotonStore(),
user: useUserStore(),
vrcxUpdater: useVRCXUpdaterStore(),
avatar: useAvatarStore(),
world: useWorldStore(),
group: useGroupStore(),
location: useLocationStore(),
instance: useInstanceStore(),
moderation: useModerationStore(),
invite: useInviteStore(),
gallery: useGalleryStore(),
notification: useNotificationStore(),
feed: useFeedStore(),
ui: useUiStore(),
gameLog: useGameLogStore(),
search: useSearchStore(),
game: useGameStore(),
launch: useLaunchStore(),
vr: useVrStore(),
vrcx: useVrcxStore(),
sharedFeed: useSharedFeedStore(),
updateLoop: useUpdateLoopStore(),
auth: useAuthStore(),
vrcStatus: useVrcStatusStore(),
charts: useChartsStore(),
modal: useModalStore()
};
}
export {
useAuthStore,
useAvatarStore,
useAvatarProviderStore,
useFavoriteStore,
useFeedStore,
useFriendStore,
useGalleryStore,
useGameStore,
useGameLogStore,
useGroupStore,
useInstanceStore,
useInviteStore,
useLaunchStore,
useLocationStore,
useModerationStore,
useNotificationStore,
usePhotonStore,
useSearchStore,
useChartsStore,
useAdvancedSettingsStore,
useAppearanceSettingsStore,
useDiscordPresenceSettingsStore,
useGeneralSettingsStore,
useNotificationsSettingsStore,
useWristOverlaySettingsStore,
useUiStore,
useUserStore,
useVrStore,
useVrcxStore,
useVRCXUpdaterStore,
useWorldStore,
useSharedFeedStore,
useUpdateLoopStore,
useVrcStatusStore,
useModalStore
};