mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-14 04:13:52 +02:00
fix main dialog flickr issue
This commit is contained in:
@@ -143,22 +143,18 @@
|
||||
}
|
||||
uiStore.jumpDialogCrumb(index);
|
||||
if (item.type === 'user') {
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
userStore.showUserDialog(item.id, { skipBreadcrumb: true });
|
||||
return;
|
||||
}
|
||||
if (item.type === 'world') {
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
worldStore.showWorldDialog(item.id, null, { skipBreadcrumb: true });
|
||||
return;
|
||||
}
|
||||
if (item.type === 'avatar') {
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
avatarStore.showAvatarDialog(item.id, { skipBreadcrumb: true });
|
||||
return;
|
||||
}
|
||||
if (item.type === 'group') {
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
groupStore.showGroupDialog(item.id, { skipBreadcrumb: true });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -278,13 +278,4 @@
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
watch(
|
||||
() => dialogState.value?.openFlg,
|
||||
() => {
|
||||
if (dialogState.value?.visible) {
|
||||
refreshTable();
|
||||
}
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
@@ -18,13 +18,10 @@ import { database } from '../service/database';
|
||||
import { useAdvancedSettingsStore } from './settings/advanced';
|
||||
import { useAvatarProviderStore } from './avatarProvider';
|
||||
import { useFavoriteStore } from './favorite';
|
||||
import { useGroupStore } from './group';
|
||||
import { useInstanceStore } from './instance';
|
||||
import { useModalStore } from './modal';
|
||||
import { useUiStore } from './ui';
|
||||
import { useUserStore } from './user';
|
||||
import { useVRCXUpdaterStore } from './vrcxUpdater';
|
||||
import { useWorldStore } from './world';
|
||||
import { watchState } from '../service/watchState';
|
||||
|
||||
import webApiService from '../service/webapi';
|
||||
@@ -34,10 +31,7 @@ export const useAvatarStore = defineStore('Avatar', () => {
|
||||
const avatarProviderStore = useAvatarProviderStore();
|
||||
const vrcxUpdaterStore = useVRCXUpdaterStore();
|
||||
const advancedSettingsStore = useAdvancedSettingsStore();
|
||||
const instanceStore = useInstanceStore();
|
||||
const userStore = useUserStore();
|
||||
const worldStore = useWorldStore();
|
||||
const groupStore = useGroupStore();
|
||||
const modalStore = useModalStore();
|
||||
const uiStore = useUiStore();
|
||||
const { t } = useI18n();
|
||||
@@ -183,23 +177,11 @@ export const useAvatarStore = defineStore('Avatar', () => {
|
||||
*/
|
||||
function showAvatarDialog(avatarId, options = {}) {
|
||||
const D = avatarDialog.value;
|
||||
const hadActiveDialog =
|
||||
avatarDialog.value.visible ||
|
||||
userStore.userDialog.visible ||
|
||||
worldStore.worldDialog.visible ||
|
||||
groupStore.groupDialog.visible ||
|
||||
instanceStore.previousInstancesInfoDialog.visible ||
|
||||
instanceStore.previousInstancesListDialog.visible;
|
||||
uiStore.openDialog({
|
||||
type: 'avatar',
|
||||
id: avatarId,
|
||||
skipBreadcrumb: options.skipBreadcrumb,
|
||||
hadActiveDialog
|
||||
skipBreadcrumb: options.skipBreadcrumb
|
||||
});
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
userStore.userDialog.visible = false;
|
||||
worldStore.worldDialog.visible = false;
|
||||
groupStore.groupDialog.visible = false;
|
||||
|
||||
D.loading = true;
|
||||
D.id = avatarId;
|
||||
@@ -233,9 +215,11 @@ export const useAvatarStore = defineStore('Avatar', () => {
|
||||
ref2.authorId !== userStore.currentUser.id
|
||||
) {
|
||||
D.loading = false;
|
||||
D.visible = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
D.visible = true;
|
||||
avatarRequest
|
||||
.getAvatar({ avatarId })
|
||||
.then((args) => {
|
||||
@@ -247,7 +231,6 @@ export const useAvatarStore = defineStore('Avatar', () => {
|
||||
D.ref?.name || D.id
|
||||
);
|
||||
getAvatarGallery(avatarId);
|
||||
D.visible = true;
|
||||
updateVRChatAvatarCache();
|
||||
if (/quest/.test(ref.tags)) {
|
||||
D.isQuestFallback = true;
|
||||
|
||||
@@ -135,24 +135,13 @@ export const useGroupStore = defineStore('Group', () => {
|
||||
if (!groupId) {
|
||||
return;
|
||||
}
|
||||
const hadActiveDialog =
|
||||
groupDialog.value.visible ||
|
||||
userStore.userDialog.visible ||
|
||||
worldStore.worldDialog.visible ||
|
||||
avatarStore.avatarDialog.visible ||
|
||||
instanceStore.previousInstancesInfoDialog.visible ||
|
||||
instanceStore.previousInstancesListDialog.visible;
|
||||
uiStore.openDialog({
|
||||
type: 'group',
|
||||
id: groupId,
|
||||
skipBreadcrumb: options.skipBreadcrumb,
|
||||
hadActiveDialog
|
||||
skipBreadcrumb: options.skipBreadcrumb
|
||||
});
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
userStore.userDialog.visible = false;
|
||||
worldStore.worldDialog.visible = false;
|
||||
avatarStore.avatarDialog.visible = false;
|
||||
const D = groupDialog.value;
|
||||
D.visible = true;
|
||||
D.loading = true;
|
||||
D.id = groupId;
|
||||
D.inGroup = false;
|
||||
|
||||
@@ -117,7 +117,6 @@ export const useInstanceStore = defineStore('Instance', () => {
|
||||
|
||||
const previousInstancesListDialog = ref({
|
||||
visible: false,
|
||||
openFlg: false,
|
||||
variant: 'user',
|
||||
userRef: {
|
||||
id: '',
|
||||
@@ -148,9 +147,7 @@ export const useInstanceStore = defineStore('Instance', () => {
|
||||
(isLoggedIn) => {
|
||||
currentInstanceUsersData.value = [];
|
||||
instanceJoinHistory.clear();
|
||||
previousInstancesInfoDialog.value.visible = false;
|
||||
previousInstancesListDialog.value.visible = false;
|
||||
previousInstancesListDialog.value.openFlg = false;
|
||||
hidePreviousInstancesDialogs();
|
||||
cachedInstances.clear();
|
||||
queuedInstances.clear();
|
||||
if (isLoggedIn) {
|
||||
@@ -188,7 +185,6 @@ export const useInstanceStore = defineStore('Instance', () => {
|
||||
function hidePreviousInstancesDialogs() {
|
||||
previousInstancesInfoDialog.value.visible = false;
|
||||
previousInstancesListDialog.value.visible = false;
|
||||
previousInstancesListDialog.value.openFlg = false;
|
||||
}
|
||||
|
||||
async function resolveUserRef(input) {
|
||||
@@ -290,24 +286,17 @@ export const useInstanceStore = defineStore('Instance', () => {
|
||||
}
|
||||
|
||||
function showPreviousInstancesInfoDialog(instanceId, options = {}) {
|
||||
const hadActiveDialog =
|
||||
userStore.userDialog.visible ||
|
||||
worldStore.worldDialog.visible ||
|
||||
groupStore.groupDialog.visible ||
|
||||
previousInstancesInfoDialog.value.visible ||
|
||||
previousInstancesListDialog.value.visible ||
|
||||
uiStore.dialogCrumbs.length > 0;
|
||||
hidePreviousInstancesDialogs();
|
||||
previousInstancesInfoDialog.value.visible = true;
|
||||
previousInstancesInfoDialog.value.instanceId = instanceId;
|
||||
uiStore.openDialog({
|
||||
type: 'previous-instances-info',
|
||||
id: instanceId || '',
|
||||
label: instanceId
|
||||
? formatPreviousInstancesInfoLabel(instanceId)
|
||||
: '',
|
||||
skipBreadcrumb: options.skipBreadcrumb
|
||||
});
|
||||
if (instanceId) {
|
||||
uiStore.openDialog({
|
||||
type: 'previous-instances-info',
|
||||
id: instanceId,
|
||||
label: formatPreviousInstancesInfoLabel(instanceId),
|
||||
skipBreadcrumb: options.skipBreadcrumb,
|
||||
hadActiveDialog
|
||||
});
|
||||
const location = parseLocation(instanceId);
|
||||
if (
|
||||
location.worldId &&
|
||||
@@ -335,14 +324,6 @@ export const useInstanceStore = defineStore('Instance', () => {
|
||||
targetRef,
|
||||
options = {}
|
||||
) {
|
||||
const hadActiveDialog =
|
||||
userStore.userDialog.visible ||
|
||||
worldStore.worldDialog.visible ||
|
||||
groupStore.groupDialog.visible ||
|
||||
previousInstancesInfoDialog.value.visible ||
|
||||
previousInstancesListDialog.value.visible ||
|
||||
uiStore.dialogCrumbs.length > 0;
|
||||
hidePreviousInstancesDialogs();
|
||||
previousInstancesListDialog.value.variant = variant;
|
||||
let resolved = null;
|
||||
if (variant === 'user') {
|
||||
@@ -356,21 +337,18 @@ export const useInstanceStore = defineStore('Instance', () => {
|
||||
previousInstancesListDialog.value.groupRef = resolved;
|
||||
}
|
||||
previousInstancesListDialog.value.visible = true;
|
||||
previousInstancesListDialog.value.openFlg = true;
|
||||
nextTick(() => (previousInstancesListDialog.value.openFlg = false));
|
||||
if (resolved?.id) {
|
||||
const label =
|
||||
variant === 'user'
|
||||
? resolved.displayName || resolved.id
|
||||
: resolved.name || resolved.id;
|
||||
uiStore.openDialog({
|
||||
type: `previous-instances-${variant}`,
|
||||
id: resolved.id,
|
||||
label,
|
||||
skipBreadcrumb: options.skipBreadcrumb,
|
||||
hadActiveDialog
|
||||
});
|
||||
}
|
||||
const dialogId = resolved?.id || '';
|
||||
const label = resolved?.id
|
||||
? variant === 'user'
|
||||
? resolved.displayName || resolved.id
|
||||
: resolved.name || resolved.id
|
||||
: '';
|
||||
uiStore.openDialog({
|
||||
type: `previous-instances-${variant}`,
|
||||
id: dialogId,
|
||||
label,
|
||||
skipBreadcrumb: options.skipBreadcrumb
|
||||
});
|
||||
}
|
||||
|
||||
function updateCurrentInstanceWorld() {
|
||||
|
||||
@@ -8,8 +8,13 @@ import { AppDebug } from '../service/appConfig';
|
||||
import { refreshCustomCss } from '../shared/utils/base/ui';
|
||||
import { updateLocalizedStrings } from '../plugin/i18n';
|
||||
import { useAppearanceSettingsStore } from './settings/appearance';
|
||||
import { useAvatarStore } from './avatar';
|
||||
import { useGroupStore } from './group';
|
||||
import { useInstanceStore } from './instance';
|
||||
import { useNotificationStore } from './notification';
|
||||
import { useSearchStore } from './search';
|
||||
import { useUserStore } from './user';
|
||||
import { useWorldStore } from './world';
|
||||
|
||||
export const useUiStore = defineStore('Ui', () => {
|
||||
const notificationStore = useNotificationStore();
|
||||
@@ -107,13 +112,45 @@ export const useUiStore = defineStore('Ui', () => {
|
||||
dialogCrumbs.value = [];
|
||||
}
|
||||
|
||||
function openDialog({
|
||||
type,
|
||||
id,
|
||||
label = '',
|
||||
skipBreadcrumb = false,
|
||||
hadActiveDialog = false
|
||||
}) {
|
||||
function openDialog({ type, id, label = '', skipBreadcrumb = false }) {
|
||||
const userStore = useUserStore();
|
||||
const worldStore = useWorldStore();
|
||||
const avatarStore = useAvatarStore();
|
||||
const groupStore = useGroupStore();
|
||||
const instanceStore = useInstanceStore();
|
||||
const isPrevInfo = type === 'previous-instances-info';
|
||||
const isPrevList =
|
||||
type &&
|
||||
type.startsWith('previous-instances-') &&
|
||||
type !== 'previous-instances-info';
|
||||
const hadActiveDialog =
|
||||
dialogCrumbs.value.length > 0 ||
|
||||
userStore.userDialog.visible ||
|
||||
worldStore.worldDialog.visible ||
|
||||
avatarStore.avatarDialog.visible ||
|
||||
groupStore.groupDialog.visible ||
|
||||
(instanceStore.previousInstancesInfoDialog.visible &&
|
||||
!isPrevInfo) ||
|
||||
(instanceStore.previousInstancesListDialog.visible && !isPrevList);
|
||||
|
||||
if (type !== 'user') {
|
||||
userStore.userDialog.visible = false;
|
||||
}
|
||||
if (type !== 'world') {
|
||||
worldStore.worldDialog.visible = false;
|
||||
}
|
||||
if (type !== 'avatar') {
|
||||
avatarStore.avatarDialog.visible = false;
|
||||
}
|
||||
if (type !== 'group') {
|
||||
groupStore.groupDialog.visible = false;
|
||||
}
|
||||
if (!isPrevInfo) {
|
||||
instanceStore.previousInstancesInfoDialog.visible = false;
|
||||
}
|
||||
if (!isPrevList) {
|
||||
instanceStore.previousInstancesListDialog.visible = false;
|
||||
}
|
||||
if (!hadActiveDialog) {
|
||||
clearDialogCrumbs();
|
||||
}
|
||||
|
||||
@@ -767,24 +767,13 @@ export const useUserStore = defineStore('User', () => {
|
||||
) {
|
||||
return;
|
||||
}
|
||||
const hadActiveDialog =
|
||||
userDialog.value.visible ||
|
||||
worldStore.worldDialog.visible ||
|
||||
avatarStore.avatarDialog.visible ||
|
||||
groupStore.groupDialog.visible ||
|
||||
instanceStore.previousInstancesInfoDialog.visible ||
|
||||
instanceStore.previousInstancesListDialog.visible;
|
||||
uiStore.openDialog({
|
||||
type: 'user',
|
||||
id: userId,
|
||||
skipBreadcrumb: options.skipBreadcrumb,
|
||||
hadActiveDialog
|
||||
skipBreadcrumb: options.skipBreadcrumb
|
||||
});
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
worldStore.worldDialog.visible = false;
|
||||
avatarStore.avatarDialog.visible = false;
|
||||
groupStore.groupDialog.visible = false;
|
||||
const D = userDialog.value;
|
||||
D.visible = true;
|
||||
D.id = userId;
|
||||
D.treeData = {};
|
||||
D.memo = '';
|
||||
|
||||
@@ -84,24 +84,12 @@ export const useWorldStore = defineStore('World', () => {
|
||||
if (L.worldId === '') {
|
||||
return;
|
||||
}
|
||||
const hadActiveDialog =
|
||||
worldDialog.visible ||
|
||||
userStore.userDialog.visible ||
|
||||
avatarStore.avatarDialog.visible ||
|
||||
groupStore.groupDialog.visible ||
|
||||
instanceStore.previousInstancesInfoDialog.visible ||
|
||||
instanceStore.previousInstancesListDialog.visible;
|
||||
uiStore.openDialog({
|
||||
type: 'world',
|
||||
id: L.worldId,
|
||||
skipBreadcrumb: options.skipBreadcrumb,
|
||||
hadActiveDialog
|
||||
skipBreadcrumb: options.skipBreadcrumb
|
||||
});
|
||||
D.visible = true;
|
||||
instanceStore.hidePreviousInstancesDialogs();
|
||||
userStore.userDialog.visible = false;
|
||||
avatarStore.avatarDialog.visible = false;
|
||||
groupStore.groupDialog.visible = false;
|
||||
L.shortName = shortName;
|
||||
D.id = L.worldId;
|
||||
D.$location = L;
|
||||
|
||||
Reference in New Issue
Block a user