fix: instanceJoinHistory not updating correctly (#1478)

This commit is contained in:
pa
2025-11-10 12:08:03 +09:00
committed by Natsumi
parent 16cd28ebe4
commit b28dec1b99
2 changed files with 50 additions and 41 deletions

View File

@@ -342,42 +342,44 @@
<template <template
v-if="isAgeGatedInstancesVisible || !(room.ageGate || room.location?.includes('~ageGate'))"> v-if="isAgeGatedInstancesVisible || !(room.ageGate || room.location?.includes('~ageGate'))">
<div style="margin: 5px 0"> <div style="margin: 5px 0">
<LocationWorld <div class="flex-align-center">
:locationobject="room.$location" <LocationWorld
:currentuserid="currentUser.id" :locationobject="room.$location"
:worlddialogshortname="worldDialog.$location.shortName" /> :currentuserid="currentUser.id"
<Launch :location="room.tag" style="margin-left: 5px" /> :worlddialogshortname="worldDialog.$location.shortName" />
<InviteYourself <Launch :location="room.tag" style="margin-left: 5px" />
:location="room.$location.tag" <InviteYourself
:shortname="room.$location.shortName" :location="room.$location.tag"
style="margin-left: 5px" /> :shortname="room.$location.shortName"
<el-tooltip style="margin-left: 5px" />
placement="top" <el-tooltip
:content="t('dialog.world.instances.refresh_instance_info')"> placement="top"
<el-button :content="t('dialog.world.instances.refresh_instance_info')">
size="small" <el-button
:icon="Refresh" size="small"
style="margin-left: 5px" :icon="Refresh"
circle style="margin-left: 5px"
@click="refreshInstancePlayerCount(room.tag)" /> circle
</el-tooltip> @click="refreshInstancePlayerCount(room.tag)" />
<el-tooltip </el-tooltip>
v-if="instanceJoinHistory.get(room.$location.tag)" <el-tooltip
placement="top" v-if="instanceJoinHistory.get(room.$location.tag)"
:content="t('dialog.previous_instances.info')"> placement="top"
<el-button :content="t('dialog.previous_instances.info')">
size="small" <el-button
:icon="DataLine" size="small"
style="margin-left: 5px" :icon="DataLine"
plain style="margin-left: 5px"
circle plain
@click="showPreviousInstancesInfoDialog(room.location)" /> circle
</el-tooltip> @click="showPreviousInstancesInfoDialog(room.location)" />
<LastJoin :location="room.$location.tag" :currentlocation="lastLocation.location" /> </el-tooltip>
<InstanceInfo <LastJoin :location="room.$location.tag" :currentlocation="lastLocation.location" />
:location="room.tag" <InstanceInfo
:instance="room.ref" :location="room.tag"
:friendcount="room.friendCount" /> :instance="room.ref"
:friendcount="room.friendCount" />
</div>
<div <div
v-if="room.$location.userId || room.users.length" v-if="room.$location.userId || room.users.length"
class="x-friend-list" class="x-friend-list"
@@ -1400,3 +1402,10 @@
D.visible = true; D.visible = true;
} }
</script> </script>
<style scoped>
.flex-align-center {
display: flex;
align-items: center;
}
</style>

View File

@@ -16,7 +16,8 @@ import {
hasGroupPermission, hasGroupPermission,
isRealInstance, isRealInstance,
parseLocation, parseLocation,
replaceBioSymbols replaceBioSymbols,
replaceReactiveObject
} from '../shared/utils'; } from '../shared/utils';
import { instanceRequest, userRequest, worldRequest } from '../api'; import { instanceRequest, userRequest, worldRequest } from '../api';
import { database } from '../service/database'; import { database } from '../service/database';
@@ -79,7 +80,7 @@ export const useInstanceStore = defineStore('Instance', () => {
const previousInstancesInfoDialogInstanceId = ref(''); const previousInstancesInfoDialogInstanceId = ref('');
let instanceJoinHistory = reactive(new Map()); const instanceJoinHistory = reactive(new Map());
const currentInstanceUsersData = ref([]); const currentInstanceUsersData = ref([]);
const currentInstanceUsersTable = computed(() => { const currentInstanceUsersTable = computed(() => {
@@ -116,9 +117,8 @@ export const useInstanceStore = defineStore('Instance', () => {
async function getInstanceJoinHistory() { async function getInstanceJoinHistory() {
try { try {
instanceJoinHistory = reactive( const data = await database.getInstanceJoinHistory();
await database.getInstanceJoinHistory() replaceReactiveObject(instanceJoinHistory, data);
);
} catch (error) { } catch (error) {
console.error('Failed to get instance join history:', error); console.error('Failed to get instance join history:', error);
} }