This commit is contained in:
pa
2026-01-23 14:32:10 +09:00
parent 4e5acb990f
commit 739418733d
10 changed files with 68 additions and 130 deletions

View File

@@ -569,7 +569,7 @@
<span class="extra">{{ formatDateFilter(groupDialog.ref.createdAt, 'long') }}</span>
</div>
</div>
<div class="x-friend-item" @click="showPreviousInstancesGroupDialog(groupDialog.ref)">
<div class="x-friend-item" @click="showPreviousInstancesListDialog(groupDialog.ref)">
<div class="detail">
<div
class="name"
@@ -1379,8 +1379,8 @@
inviteGroupDialog.value.visible = true;
}
function showPreviousInstancesGroupDialog(groupRef) {
instanceStore.showPreviousInstancesGroupDialog(groupRef);
function showPreviousInstancesListDialog(groupRef) {
instanceStore.showPreviousInstancesListDialog('group', groupRef);
}
function setGroupRepresentation(groupId) {

View File

@@ -33,12 +33,7 @@
const userStore = useUserStore();
const worldStore = useWorldStore();
const {
previousInstancesInfoDialog,
previousInstancesUserDialog,
previousInstancesWorldDialog,
previousInstancesGroupDialog
} = storeToRefs(instanceStore);
const { previousInstancesInfoDialog, previousInstancesListDialog } = storeToRefs(instanceStore);
const isOpen = computed({
get: () =>
@@ -47,9 +42,7 @@
avatarStore.avatarDialog.visible ||
groupStore.groupDialog.visible ||
previousInstancesInfoDialog.value.visible ||
previousInstancesUserDialog.value.visible ||
previousInstancesWorldDialog.value.visible ||
previousInstancesGroupDialog.value.visible,
previousInstancesListDialog.value.visible,
set: (value) => {
if (!value) {
userStore.userDialog.visible = false;
@@ -69,14 +62,8 @@
if (previousInstancesInfoDialog.value.visible) {
return 'previous-instances-info';
}
if (previousInstancesUserDialog.value.visible) {
return 'previous-instances-user';
}
if (previousInstancesWorldDialog.value.visible) {
return 'previous-instances-world';
}
if (previousInstancesGroupDialog.value.visible) {
return 'previous-instances-group';
if (previousInstancesListDialog.value.visible) {
return `previous-instances-${previousInstancesListDialog.value.variant}`;
}
if (userStore.userDialog.visible) {
return 'user';
@@ -185,15 +172,15 @@
return;
}
if (item.type === 'previous-instances-user') {
instanceStore.showPreviousInstancesUserDialog(item.id, { skipBreadcrumb: true });
instanceStore.showPreviousInstancesListDialog('user', item.id, { skipBreadcrumb: true });
return;
}
if (item.type === 'previous-instances-world') {
instanceStore.showPreviousInstancesWorldDialog(item.id, { skipBreadcrumb: true });
instanceStore.showPreviousInstancesListDialog('world', item.id, { skipBreadcrumb: true });
return;
}
if (item.type === 'previous-instances-group') {
instanceStore.showPreviousInstancesGroupDialog(item.id, { skipBreadcrumb: true });
instanceStore.showPreviousInstancesListDialog('group', item.id, { skipBreadcrumb: true });
return;
}
if (item.type === 'previous-instances-info') {

View File

@@ -68,14 +68,7 @@
const instanceStore = useInstanceStore();
const { showPreviousInstancesInfoDialog } = instanceStore;
const {
previousInstancesInfoDialogVisible,
previousInstancesInfoDialogInstanceId,
previousInstancesListState,
previousInstancesUserDialog,
previousInstancesWorldDialog,
previousInstancesGroupDialog
} = storeToRefs(instanceStore);
const { previousInstancesListState, previousInstancesListDialog } = storeToRefs(instanceStore);
const { shiftHeld } = storeToRefs(useUiStore());
const { stringComparer } = storeToRefs(useSearchStore());
const { currentUser } = storeToRefs(useUserStore());
@@ -85,9 +78,7 @@
const { t } = useI18n();
const dialogState = computed(() => {
if (props.variant === 'user') return previousInstancesUserDialog.value;
if (props.variant === 'world') return previousInstancesWorldDialog.value;
return previousInstancesGroupDialog.value;
return previousInstancesListDialog.value;
});
const getListState = () => {
@@ -158,8 +149,8 @@
function deleteGameLogInstance(row) {
if (props.variant === 'user') {
database.deleteGameLogInstance({
id: previousInstancesUserDialog.value.userRef.id,
displayName: previousInstancesUserDialog.value.userRef.displayName,
id: previousInstancesListDialog.value.userRef.id,
displayName: previousInstancesListDialog.value.userRef.displayName,
location: row.location,
events: row.events
});
@@ -195,7 +186,7 @@
createPreviousInstancesColumns(props.variant, {
shiftHeld,
currentUserId: currentUser.value?.id,
forceUpdateKey: previousInstancesWorldDialog.value?.forceUpdate,
forceUpdateKey: previousInstancesListDialog.value?.forceUpdate,
onLaunch: showLaunchDialog,
onShowInfo: handleShowInfo,
onDelete: deleteGameLogInstance,
@@ -248,14 +239,14 @@
const array = [];
try {
if (props.variant === 'user') {
const data = await database.getPreviousInstancesByUserId(previousInstancesUserDialog.value.userRef);
const data = await database.getPreviousInstancesByUserId(previousInstancesListDialog.value.userRef);
for (const item of data.values()) {
item.$location = parseLocation(item.location);
item.timer = item.time > 0 ? timeToText(item.time) : '';
array.push(item);
}
} else if (props.variant === 'world') {
const D = previousInstancesWorldDialog.value;
const D = previousInstancesListDialog.value;
const data = await database.getPreviousInstancesByWorldId(D.worldRef);
for (const ref of data.values()) {
ref.$location = parseLocation(ref.location);
@@ -263,7 +254,7 @@
array.push(ref);
}
} else {
const D = previousInstancesGroupDialog.value;
const D = previousInstancesListDialog.value;
const data = await database.getPreviousInstancesByGroupId(D.groupRef.id);
for (const ref of data.values()) {
ref.$location = parseLocation(ref.location);

View File

@@ -265,7 +265,7 @@
</div>
</div>
<div class="x-friend-item" @click="showPreviousInstancesUserDialog(userDialog.ref)">
<div class="x-friend-item" @click="showPreviousInstancesListDialog(userDialog.ref)">
<div class="detail">
<div
class="name"
@@ -298,7 +298,7 @@
:disabled="currentUser.id !== userDialog.id"
side="top"
:content="t('dialog.user.info.open_previous_instance')">
<div class="x-friend-item" @click="showPreviousInstancesUserDialog(userDialog.ref)">
<div class="x-friend-item" @click="showPreviousInstancesListDialog(userDialog.ref)">
<div class="detail">
<span class="name">
{{ t('dialog.user.info.play_time') }}
@@ -1804,7 +1804,7 @@
toast.error('No fallback avatar set');
}
} else if (command === 'Previous Instances') {
showPreviousInstancesUserDialog(D.ref);
showPreviousInstancesListDialog(D.ref);
} else if (command === 'Manage Gallery') {
userDialog.value.visible = false;
showGalleryPage();
@@ -2337,8 +2337,8 @@
}
}
function showPreviousInstancesUserDialog(userRef) {
instanceStore.showPreviousInstancesUserDialog(userRef);
function showPreviousInstancesListDialog(userRef) {
instanceStore.showPreviousInstancesListDialog('user', userRef);
}
function toggleAvatarCopying() {

View File

@@ -643,7 +643,7 @@
</div>
</div>
<div class="x-friend-item" @click="showPreviousInstancesWorldDialog(worldDialog.ref)">
<div class="x-friend-item" @click="showPreviousInstancesListDialog(worldDialog.ref)">
<div class="detail">
<div
class="name"
@@ -809,7 +809,7 @@
const { lastLocation } = storeToRefs(useLocationStore());
const { newInstanceSelfInvite, canOpenInstanceInGame } = useInviteStore();
const { showFavoriteDialog } = useFavoriteStore();
const { showPreviousInstancesInfoDialog, showPreviousInstancesWorldDialog: openPreviousInstancesWorldDialog } =
const { showPreviousInstancesInfoDialog, showPreviousInstancesListDialog: openPreviousInstancesListDialog } =
useInstanceStore();
const { instanceJoinHistory } = storeToRefs(useInstanceStore());
const { isGameRunning } = storeToRefs(useGameStore());
@@ -1068,7 +1068,7 @@
.catch(() => {});
break;
case 'Previous Instances':
showPreviousInstancesWorldDialog(D.ref);
showPreviousInstancesListDialog(D.ref);
break;
case 'Share':
copyWorldUrl();
@@ -1284,8 +1284,8 @@
database.deleteWorldMemo(worldId);
}
}
function showPreviousInstancesWorldDialog(worldRef) {
openPreviousInstancesWorldDialog(worldRef);
function showPreviousInstancesListDialog(worldRef) {
openPreviousInstancesListDialog('world', worldRef);
}
function refreshWorldDialogTreeData() {
treeData.value = formatJsonVars(worldDialog.value.ref);

View File

@@ -189,9 +189,7 @@ export const useAvatarStore = defineStore('Avatar', () => {
worldStore.worldDialog.visible ||
groupStore.groupDialog.visible ||
instanceStore.previousInstancesInfoDialog.visible ||
instanceStore.previousInstancesUserDialog.visible ||
instanceStore.previousInstancesWorldDialog.visible ||
instanceStore.previousInstancesGroupDialog.visible;
instanceStore.previousInstancesListDialog.visible;
if (!hadActiveDialog) {
uiStore.clearDialogCrumbs();
}

View File

@@ -141,9 +141,7 @@ export const useGroupStore = defineStore('Group', () => {
worldStore.worldDialog.visible ||
avatarStore.avatarDialog.visible ||
instanceStore.previousInstancesInfoDialog.visible ||
instanceStore.previousInstancesUserDialog.visible ||
instanceStore.previousInstancesWorldDialog.visible ||
instanceStore.previousInstancesGroupDialog.visible;
instanceStore.previousInstancesListDialog.visible;
if (!hadActiveDialog) {
uiStore.clearDialogCrumbs();
}

View File

@@ -115,27 +115,18 @@ export const useInstanceStore = defineStore('Instance', () => {
visible: false
});
const previousInstancesUserDialog = ref({
const previousInstancesListDialog = ref({
visible: false,
openFlg: false,
variant: 'user',
userRef: {
id: '',
displayName: ''
}
});
const previousInstancesWorldDialog = ref({
visible: false,
openFlg: false,
},
worldRef: {
id: '',
name: ''
}
});
const previousInstancesGroupDialog = ref({
visible: false,
openFlg: false,
},
groupRef: {
id: '',
name: ''
@@ -158,9 +149,8 @@ export const useInstanceStore = defineStore('Instance', () => {
currentInstanceUsersData.value = [];
instanceJoinHistory.clear();
previousInstancesInfoDialog.value.visible = false;
previousInstancesUserDialog.value.visible = false;
previousInstancesWorldDialog.value.visible = false;
previousInstancesGroupDialog.value.visible = false;
previousInstancesListDialog.value.visible = false;
previousInstancesListDialog.value.openFlg = false;
cachedInstances.clear();
queuedInstances.clear();
if (isLoggedIn) {
@@ -197,12 +187,8 @@ export const useInstanceStore = defineStore('Instance', () => {
function hidePreviousInstancesDialogs() {
previousInstancesInfoDialog.value.visible = false;
previousInstancesUserDialog.value.visible = false;
previousInstancesUserDialog.value.openFlg = false;
previousInstancesWorldDialog.value.visible = false;
previousInstancesWorldDialog.value.openFlg = false;
previousInstancesGroupDialog.value.visible = false;
previousInstancesGroupDialog.value.openFlg = false;
previousInstancesListDialog.value.visible = false;
previousInstancesListDialog.value.openFlg = false;
}
async function resolveUserRef(input) {
@@ -335,50 +321,36 @@ export const useInstanceStore = defineStore('Instance', () => {
}
}
async function showPreviousInstancesUserDialog(userRef, options = {}) {
async function showPreviousInstancesListDialog(
variant,
targetRef,
options = {}
) {
hidePreviousInstancesDialogs();
const resolved = await resolveUserRef(userRef);
previousInstancesUserDialog.value.userRef = resolved;
previousInstancesUserDialog.value.visible = true;
previousInstancesUserDialog.value.openFlg = true;
nextTick(() => (previousInstancesUserDialog.value.openFlg = false));
if (!options.skipBreadcrumb && resolved.id) {
uiStore.pushDialogCrumb(
'previous-instances-user',
resolved.id,
resolved.displayName || resolved.id
);
previousInstancesListDialog.value.variant = variant;
let resolved = null;
if (variant === 'user') {
resolved = await resolveUserRef(targetRef);
previousInstancesListDialog.value.userRef = resolved;
} else if (variant === 'world') {
resolved = await resolveWorldRef(targetRef);
previousInstancesListDialog.value.worldRef = resolved;
} else {
resolved = await resolveGroupRef(targetRef);
previousInstancesListDialog.value.groupRef = resolved;
}
}
async function showPreviousInstancesWorldDialog(worldRef, options = {}) {
hidePreviousInstancesDialogs();
const resolved = await resolveWorldRef(worldRef);
previousInstancesWorldDialog.value.worldRef = resolved;
previousInstancesWorldDialog.value.visible = true;
previousInstancesWorldDialog.value.openFlg = true;
nextTick(() => (previousInstancesWorldDialog.value.openFlg = false));
if (!options.skipBreadcrumb && resolved.id) {
previousInstancesListDialog.value.visible = true;
previousInstancesListDialog.value.openFlg = true;
nextTick(() => (previousInstancesListDialog.value.openFlg = false));
if (!options.skipBreadcrumb && resolved?.id) {
const label =
variant === 'user'
? resolved.displayName || resolved.id
: resolved.name || resolved.id;
uiStore.pushDialogCrumb(
'previous-instances-world',
`previous-instances-${variant}`,
resolved.id,
resolved.name || resolved.id
);
}
}
async function showPreviousInstancesGroupDialog(groupRef, options = {}) {
hidePreviousInstancesDialogs();
const resolved = await resolveGroupRef(groupRef);
previousInstancesGroupDialog.value.groupRef = resolved;
previousInstancesGroupDialog.value.visible = true;
previousInstancesGroupDialog.value.openFlg = true;
nextTick(() => (previousInstancesGroupDialog.value.openFlg = false));
if (!options.skipBreadcrumb && resolved.id) {
uiStore.pushDialogCrumb(
'previous-instances-group',
resolved.id,
resolved.name || resolved.id
label
);
}
}
@@ -1465,9 +1437,7 @@ export const useInstanceStore = defineStore('Instance', () => {
currentInstanceLocation,
queuedInstances,
previousInstancesInfoDialog,
previousInstancesUserDialog,
previousInstancesWorldDialog,
previousInstancesGroupDialog,
previousInstancesListDialog,
previousInstancesListState,
instanceJoinHistory,
currentInstanceUsersData,
@@ -1484,9 +1454,7 @@ export const useInstanceStore = defineStore('Instance', () => {
instanceQueueUpdate,
hidePreviousInstancesDialogs,
showPreviousInstancesInfoDialog,
showPreviousInstancesUserDialog,
showPreviousInstancesWorldDialog,
showPreviousInstancesGroupDialog,
showPreviousInstancesListDialog,
addInstanceJoinHistory,
getCurrentInstanceUserList,
getInstanceJoinHistory,

View File

@@ -773,9 +773,7 @@ export const useUserStore = defineStore('User', () => {
avatarStore.avatarDialog.visible ||
groupStore.groupDialog.visible ||
instanceStore.previousInstancesInfoDialog.visible ||
instanceStore.previousInstancesUserDialog.visible ||
instanceStore.previousInstancesWorldDialog.visible ||
instanceStore.previousInstancesGroupDialog.visible;
instanceStore.previousInstancesListDialog.visible;
if (!hadActiveDialog) {
uiStore.clearDialogCrumbs();
}

View File

@@ -90,9 +90,7 @@ export const useWorldStore = defineStore('World', () => {
avatarStore.avatarDialog.visible ||
groupStore.groupDialog.visible ||
instanceStore.previousInstancesInfoDialog.visible ||
instanceStore.previousInstancesUserDialog.visible ||
instanceStore.previousInstancesWorldDialog.visible ||
instanceStore.previousInstancesGroupDialog.visible;
instanceStore.previousInstancesListDialog.visible;
if (!hadActiveDialog) {
uiStore.clearDialogCrumbs();
}