refactor store

This commit is contained in:
pa
2026-03-10 15:25:23 +09:00
parent d7220baaf6
commit 95c4a1d3e6
82 changed files with 3243 additions and 3066 deletions

View File

@@ -22,6 +22,7 @@
import { TooltipWrapper } from './ui/tooltip';
import { useAvatarStore } from '../stores';
import { getAvatarName, showAvatarAuthorDialog } from '../coordinators/avatarCoordinator';
const { t } = useI18n();
const avatarStore = useAvatarStore();
@@ -54,7 +55,7 @@
ownerId = props.hintownerid;
} else {
try {
const info = await avatarStore.getAvatarName(props.imageurl);
const info = await getAvatarName(props.imageurl);
avatarName.value = info.avatarName;
ownerId = info.ownerId;
} catch {
@@ -77,7 +78,7 @@
const confirm = () => {
if (!props.imageurl) return;
avatarStore.showAvatarAuthorDialog(props.userid, ownerId, props.imageurl);
showAvatarAuthorDialog(props.userid, ownerId, props.imageurl);
};
watch([() => props.imageurl, () => props.userid, () => props.avatartags], parse, { immediate: true });

View File

@@ -1,14 +1,12 @@
<template>
<span @click="showUserDialog" class="cursor-pointer">{{ username }}</span>
<span @click="openUserDialog" class="cursor-pointer">{{ username }}</span>
</template>
<script setup>
import { ref, watch } from 'vue';
import { queryRequest } from '../api';
import { useUserStore } from '../stores';
const userStore = useUserStore();
import { showUserDialog } from '../coordinators/userCoordinator';
const props = defineProps({
userid: String,
@@ -40,9 +38,10 @@
/**
*
*/
function showUserDialog() {
userStore.showUserDialog(props.userid);
function openUserDialog() {
showUserDialog(props.userid);
}
watch([() => props.userid, () => props.location, () => props.forceUpdateKey], parse, { immediate: true });
</script>

View File

@@ -161,6 +161,7 @@
} from '../stores';
import { checkCanInviteSelf, formatDateFilter, hasGroupPermission, parseLocation } from '../shared/utils';
import { instanceRequest, miscRequest } from '../api';
import { showUserDialog } from '../coordinators/userCoordinator';
defineOptions({
inheritAttrs: false
@@ -352,9 +353,7 @@
}
};
const showUserDialog = (userId) => {
userStore.showUserDialog(userId);
};
const closeInstance = (location) => {
modalStore

View File

@@ -50,12 +50,13 @@
useSearchStore,
useWorldStore
} from '../stores';
import { showWorldDialog } from '../coordinators/worldCoordinator';
import { Spinner } from './ui/spinner';
import { accessTypeLocaleKeyMap } from '../shared/constants';
const { t } = useI18n();
const { cachedWorlds, showWorldDialog } = useWorldStore();
const { cachedWorlds } = useWorldStore();
const { showGroupDialog } = useGroupStore();
const { showPreviousInstancesInfoDialog } = useInstanceStore();
const { verifyShortName } = useSearchStore();

View File

@@ -5,7 +5,7 @@
<Unlock v-if="isUnlocked" :class="['inline-block', 'mr-1.25']" />
<span> {{ accessTypeName }} #{{ instanceName }}</span>
</span>
<span v-if="groupName" @click="showGroupDialog" class="cursor-pointer">({{ groupName }})</span>
<span v-if="groupName" @click="openLocationGroupDialog" class="cursor-pointer">({{ groupName }})</span>
<TooltipWrapper v-if="isClosed" :content="t('dialog.user.info.instance_closed')">
<AlertTriangle :class="['inline-block', 'ml-1']" style="color: lightcoral" />
</TooltipWrapper>
@@ -20,6 +20,7 @@
import { useI18n } from 'vue-i18n';
import { useGroupStore, useInstanceStore, useLaunchStore } from '../stores';
import { showGroupDialog } from '../coordinators/groupCoordinator';
import { getGroupName, parseLocation } from '../shared/utils';
import { accessTypeLocaleKeyMap } from '../shared/constants';
@@ -135,10 +136,10 @@
/**
*
*/
function showGroupDialog() {
function openLocationGroupDialog() {
if (!location.value) return;
const L = parseLocation(location.value);
if (!L.groupId) return;
groupStore.showGroupDialog(L.groupId);
showGroupDialog(L.groupId);
}
</script>

View File

@@ -601,20 +601,22 @@
import { formatJsonVars } from '../../../shared/utils/base/ui';
import { handleImageUploadInput } from '../../../shared/utils/imageUpload';
import { runDeleteVRChatCacheFlow as deleteVRChatCache } from '../../../coordinators/gameCoordinator';
import { showAvatarDialog, applyAvatar, selectAvatarWithoutConfirmation } from '../../../coordinators/avatarCoordinator';
import { useAvatarDialogCommands } from './useAvatarDialogCommands';
import DialogJsonTab from '../DialogJsonTab.vue';
import ImageCropDialog from '../ImageCropDialog.vue';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const SetAvatarStylesDialog = defineAsyncComponent(() => import('./SetAvatarStylesDialog.vue'));
const SetAvatarTagsDialog = defineAsyncComponent(() => import('./SetAvatarTagsDialog.vue'));
const { showUserDialog, sortUserDialogAvatars } = useUserStore();
const { sortUserDialogAvatars } = useUserStore();
const { userDialog, currentUser } = storeToRefs(useUserStore());
const avatarStore = useAvatarStore();
const { cachedAvatarModerations, cachedAvatars } = avatarStore;
const { avatarDialog } = storeToRefs(avatarStore);
const { showAvatarDialog, getAvatarGallery, applyAvatarModeration, applyAvatar, selectAvatarWithoutConfirmation } =
const { getAvatarGallery, applyAvatarModeration } =
avatarStore;
const { showFavoriteDialog } = useFavoriteStore();
const { isGameRunning } = storeToRefs(useGameStore());

View File

@@ -93,6 +93,7 @@
import { avatarRequest, queryRequest } from '../../../api';
import { arraysMatch } from '../../../shared/utils';
import { useAvatarStore } from '../../../stores';
import { applyAvatar } from '../../../coordinators/avatarCoordinator';
const props = defineProps({
setAvatarStylesDialog: {
@@ -104,7 +105,6 @@
const emit = defineEmits(['update:setAvatarStylesDialog']);
const { t } = useI18n();
const { applyAvatar } = useAvatarStore();
const SELECT_CLEAR_VALUE = '__clear__';

View File

@@ -128,8 +128,8 @@
import { avatarRequest } from '../../../api';
import { removeFromArray } from '../../../shared/utils';
import { useAvatarStore } from '../../../stores';
import { showAvatarDialog, applyAvatar } from '../../../coordinators/avatarCoordinator';
const { showAvatarDialog, applyAvatar } = useAvatarStore();
const { cachedAvatars } = useAvatarStore();
const { t } = useI18n();

View File

@@ -407,6 +407,13 @@
removeFromArray
} from '../../../shared/utils';
import { useGalleryStore, useGroupStore, useModalStore, useUserStore } from '../../../stores';
import {
getGroupDialogGroup,
showGroupDialog,
leaveGroupPrompt,
setGroupVisibility,
setGroupSubscription
} from '../../../coordinators/groupCoordinator';
import { groupRequest, queryRequest } from '../../../api';
import { queryKeys, refetchActiveEntityQuery } from '../../../queries';
import { Badge } from '../../ui/badge';
@@ -419,6 +426,7 @@
import GroupDialogPhotosTab from './GroupDialogPhotosTab.vue';
import GroupDialogPostsTab from './GroupDialogPostsTab.vue';
import GroupPostEditDialog from './GroupPostEditDialog.vue';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const { t } = useI18n();
const groupDialogTabs = computed(() => [
@@ -431,16 +439,11 @@
const modalStore = useModalStore();
const { showUserDialog } = useUserStore();
const { currentUser } = storeToRefs(useUserStore());
const { groupDialog, inviteGroupDialog } = storeToRefs(useGroupStore());
const {
getGroupDialogGroup,
updateGroupPostSearch,
showGroupDialog,
leaveGroupPrompt,
setGroupVisibility,
setGroupSubscription,
showGroupMemberModerationDialog
} = useGroupStore();

View File

@@ -361,6 +361,7 @@
import GroupCalendarEventCard from '../../../views/Tools/components/GroupCalendarEventCard.vue';
import InstanceActionBar from '../../InstanceActionBar.vue';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const props = defineProps({
showGroupPostEditDialog: {
@@ -375,7 +376,7 @@
const { t } = useI18n();
const { showUserDialog } = useUserStore();
const { groupDialog } = storeToRefs(useGroupStore());
const { lastLocation } = storeToRefs(useLocationStore());
const { showFullscreenImageDialog } = useGalleryStore();

View File

@@ -212,15 +212,16 @@
import { downloadAndSaveJson, hasGroupPermission, userImage } from '../../../shared/utils';
import { useGroupStore, useUserStore } from '../../../stores';
import { applyGroupMember, handleGroupMember } from '../../../coordinators/groupCoordinator';
import { groupDialogSortingOptions } from '../../../shared/constants';
import { useGroupMembers } from './useGroupMembers';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const { t } = useI18n();
const { showUserDialog } = useUserStore();
const { currentUser } = storeToRefs(useUserStore());
const { groupDialog } = storeToRefs(useGroupStore());
const { applyGroupMember, handleGroupMember } = useGroupStore();
const {
isGroupMembersDone,

View File

@@ -122,6 +122,7 @@
import { useI18n } from 'vue-i18n';
import { useAppearanceSettingsStore, useGalleryStore, useGroupStore, useUserStore } from '../../../stores';
import { applyGroupMember, handleGroupMember, handleGroupMemberProps } from '../../../coordinators/groupCoordinator';
import { hasGroupPermission, userImage, userImageFull } from '../../../shared/utils';
import { groupDialogFilterOptions, groupDialogSortingOptions } from '../../../shared/constants';
import { groupRequest, userRequest } from '../../../api';
@@ -138,14 +139,14 @@
import GroupModerationInvitesTab from './GroupModerationInvitesTab.vue';
import GroupModerationLogsTab from './GroupModerationLogsTab.vue';
import GroupModerationMembersTab from './GroupModerationMembersTab.vue';
import { showUserDialog } from '../../../coordinators/userCoordinator';
// ── Stores ───────────────────────────────────────────────────
const appearanceSettingsStore = useAppearanceSettingsStore();
const { randomUserColours } = storeToRefs(appearanceSettingsStore);
const { showUserDialog } = useUserStore();
const { currentUser } = storeToRefs(useUserStore());
const { groupDialog, groupMemberModeration } = storeToRefs(useGroupStore());
const { applyGroupMember, handleGroupMember, handleGroupMemberProps } = useGroupStore();
const { showFullscreenImageDialog } = useGalleryStore();
const { t } = useI18n();

View File

@@ -43,8 +43,9 @@
import { createColumns } from './previousInstancesInfoColumns.jsx';
import { database } from '../../../service/database';
import { useVrcxVueTable } from '../../../lib/table/useVrcxVueTable';
import { lookupUser } from '../../../coordinators/userCoordinator';
const { lookupUser } = useUserStore();
const { previousInstancesInfoDialog, previousInstancesInfoState } = storeToRefs(useInstanceStore());
const { gameLogIsFriend, gameLogIsFavorite } = useGameLogStore();
const { t } = useI18n();

View File

@@ -91,6 +91,7 @@
useNotificationStore,
useUserStore
} from '../../../stores';
import { showGroupDialog } from '../../../coordinators/groupCoordinator';
import { copyToClipboard } from '../../../shared/utils';
import { formatJsonVars } from '../../../shared/utils/base/ui';
import { miscRequest } from '../../../api';
@@ -139,11 +140,12 @@
const instanceStore = useInstanceStore();
const { userDialog, languageDialog, currentUser, isLocalUserVrcPlusSupporter } = storeToRefs(useUserStore());
const { cachedUsers, showUserDialog, refreshUserDialogAvatars, showSendBoopDialog } = useUserStore();
const { cachedUsers, showSendBoopDialog } = useUserStore();
const { showFavoriteDialog } = useFavoriteStore();
const { showAvatarDialog, showAvatarAuthorDialog } = useAvatarStore();
import { showAvatarDialog, showAvatarAuthorDialog } from '../../../coordinators/avatarCoordinator';
import { showUserDialog, refreshUserDialogAvatars } from '../../../coordinators/userCoordinator';
const { showGroupDialog, showModerateGroupDialog } = useGroupStore();
const { showModerateGroupDialog } = useGroupStore();
const { inviteGroupDialog } = storeToRefs(useGroupStore());
const { lastLocation, lastLocationDestination } = storeToRefs(useLocationStore());
const { refreshInviteMessageTableData } = useInviteStore();

View File

@@ -119,7 +119,7 @@
const { userDialog, currentUser } = storeToRefs(userStore);
const { sortUserDialogAvatars, refreshUserDialogAvatars } = userStore;
const { showAvatarDialog, lookupAvatars } = useAvatarStore();
import { showAvatarDialog, lookupAvatars } from '../../../coordinators/avatarCoordinator';
const { cachedAvatars } = useAvatarStore();
const { avatarRemoteDatabase } = storeToRefs(useAdvancedSettingsStore());

View File

@@ -76,6 +76,7 @@
import DeprecationAlert from '@/components/DeprecationAlert.vue';
import { useFavoriteStore, useUserStore, useWorldStore } from '../../../stores';
import { showWorldDialog } from '../../../coordinators/worldCoordinator';
import { handleFavoriteWorldList } from '../../../coordinators/favoriteCoordinator';
import { favoriteRequest } from '../../../api';
@@ -83,7 +84,7 @@
const { userDialog, currentUser } = storeToRefs(useUserStore());
const { favoriteLimits } = storeToRefs(useFavoriteStore());
const { showWorldDialog } = useWorldStore();
const favoriteWorldsTab = ref('0');
const userDialogFavoriteWorldsRequestId = ref(0);

View File

@@ -372,15 +372,7 @@
import { useI18n } from 'vue-i18n';
import { useAuthStore, useGroupStore, useUiStore, useUserStore } from '../../../stores';
import { compareByMemberCount, compareByName } from '../../../shared/utils';
import { groupRequest } from '../../../api';
import { useOptionKeySelect } from '../../../composables/useOptionKeySelect';
import { userDialogGroupSortingOptions } from '../../../shared/constants';
const { t } = useI18n();
const { userDialog, currentUser, isLocalUserVrcPlusSupporter } = storeToRefs(useUserStore());
const {
import {
showGroupDialog,
applyGroup,
saveCurrentUserGroups,
@@ -389,7 +381,15 @@
leaveGroupPrompt,
setGroupVisibility,
handleGroupList
} = useGroupStore();
} from '../../../coordinators/groupCoordinator';
import { compareByMemberCount, compareByName } from '../../../shared/utils';
import { groupRequest } from '../../../api';
import { useOptionKeySelect } from '../../../composables/useOptionKeySelect';
import { userDialogGroupSortingOptions } from '../../../shared/constants';
const { t } = useI18n();
const { userDialog, currentUser, isLocalUserVrcPlusSupporter } = storeToRefs(useUserStore());
const { currentUserGroups, inGameGroupOrder } = storeToRefs(useGroupStore());
const { cachedConfig } = storeToRefs(useAuthStore());
const { shiftHeld } = storeToRefs(useUiStore());

View File

@@ -501,9 +501,11 @@
useUserStore,
useWorldStore
} from '../../../stores';
import { showWorldDialog } from '../../../coordinators/worldCoordinator';
import { queryRequest, userRequest } from '../../../api';
import InstanceActionBar from '../../InstanceActionBar.vue';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const EditNoteAndMemoDialog = defineAsyncComponent(() => import('./EditNoteAndMemoDialog.vue'));
@@ -518,8 +520,8 @@
const { bioLanguage, translationApi, translationApiType } = storeToRefs(useAdvancedSettingsStore());
const { translateText } = useAdvancedSettingsStore();
const { userDialog, currentUser } = storeToRefs(useUserStore());
const { showUserDialog, toggleSharedConnectionsOptOut, toggleDiscordFriendsOptOut } = useUserStore();
const { showWorldDialog } = useWorldStore();
const { toggleSharedConnectionsOptOut, toggleDiscordFriendsOptOut } = useUserStore();
const { showGroupDialog } = useGroupStore();
const { lastLocation } = storeToRefs(useLocationStore());
const { showFullscreenImageDialog } = useGalleryStore();

View File

@@ -73,12 +73,13 @@
import { useUserStore } from '../../../stores';
import { userDialogMutualFriendSortingOptions } from '../../../shared/constants';
import { userRequest } from '../../../api';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const { t } = useI18n();
const userStore = useUserStore();
const { userDialog, currentUser } = storeToRefs(userStore);
const { cachedUsers, showUserDialog } = userStore;
const { cachedUsers } = userStore;
const { selectedKey: userDialogMutualFriendSortingKey, selectByKey: setUserDialogMutualFriendSortingByKey } =
useOptionKeySelect(

View File

@@ -86,6 +86,7 @@
import { useI18n } from 'vue-i18n';
import { useUserStore, useWorldStore } from '../../../stores';
import { showWorldDialog } from '../../../coordinators/worldCoordinator';
import { userDialogWorldOrderOptions, userDialogWorldSortingOptions } from '../../../shared/constants/';
import { queryRequest } from '../../../api';
import { useOptionKeySelect } from '../../../composables/useOptionKeySelect';
@@ -94,7 +95,7 @@
const userStore = useUserStore();
const { userDialog, currentUser } = storeToRefs(userStore);
const { cachedWorlds, showWorldDialog } = useWorldStore();
const { cachedWorlds } = useWorldStore();
const userDialogWorldsRequestId = ref(0);

View File

@@ -110,6 +110,7 @@
import { useI18n } from 'vue-i18n';
import { useWorldStore } from '../../../stores';
import { showWorldDialog } from '../../../coordinators/worldCoordinator';
import { worldRequest } from '../../../api';
const props = defineProps({
@@ -133,7 +134,7 @@
const emit = defineEmits(['update:isSetWorldTagsDialogVisible']);
const { showWorldDialog } = useWorldStore();
const { t } = useI18n();

View File

@@ -395,6 +395,7 @@
useUserStore,
useWorldStore
} from '../../../stores';
import { showWorldDialog } from '../../../coordinators/worldCoordinator';
import {
DropdownMenu,
DropdownMenuContent,
@@ -412,15 +413,16 @@
import ImageCropDialog from '../ImageCropDialog.vue';
import WorldDialogInfoTab from './WorldDialogInfoTab.vue';
import WorldDialogInstancesTab from './WorldDialogInstancesTab.vue';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const SetWorldTagsDialog = defineAsyncComponent(() => import('./SetWorldTagsDialog.vue'));
const WorldAllowedDomainsDialog = defineAsyncComponent(() => import('./WorldAllowedDomainsDialog.vue'));
const NewInstanceDialog = defineAsyncComponent(() => import('../NewInstanceDialog.vue'));
const { showUserDialog } = useUserStore();
const { currentUser, userDialog } = storeToRefs(useUserStore());
const { worldDialog } = storeToRefs(useWorldStore());
const { cachedWorlds, showWorldDialog } = useWorldStore();
const { cachedWorlds } = useWorldStore();
const { lastLocation } = storeToRefs(useLocationStore());
const { canOpenInstanceInGame } = useInviteStore();
const { showFavoriteDialog } = useFavoriteStore();

View File

@@ -118,11 +118,12 @@
} from '../../../stores';
import InstanceActionBar from '../../InstanceActionBar.vue';
import { showUserDialog } from '../../../coordinators/userCoordinator';
const { t } = useI18n();
const { isAgeGatedInstancesVisible } = storeToRefs(useAppearanceSettingsStore());
const { showUserDialog } = useUserStore();
const { currentUser } = storeToRefs(useUserStore());
const { worldDialog } = storeToRefs(useWorldStore());
const { lastLocation } = storeToRefs(useLocationStore());