diff --git a/src/components/dialogs/UserDialog/UserDialog.vue b/src/components/dialogs/UserDialog/UserDialog.vue
index f42c14c4..d546de4d 100644
--- a/src/components/dialogs/UserDialog/UserDialog.vue
+++ b/src/components/dialogs/UserDialog/UserDialog.vue
@@ -356,8 +356,8 @@
-
-
+
+
{{ ref.type }}: {{ formatDateFilter(ref.created_at, 'long') }}
@@ -1309,11 +1309,11 @@
import { userDialogGroupSortingOptions, userDialogMutualFriendSortingOptions } from '../../../shared/constants';
import { userDialogWorldOrderOptions, userDialogWorldSortingOptions } from '../../../shared/constants/';
import { database } from '../../../service/database';
+ import { formatJsonVars } from '../../../shared/utils/base/ui';
import InstanceActionBar from '../../InstanceActionBar.vue';
import SendInviteDialog from '../InviteDialog/SendInviteDialog.vue';
import UserSummaryHeader from './UserSummaryHeader.vue';
- import { formatJsonVars } from '../../../shared/utils/base/ui';
const BioDialog = defineAsyncComponent(() => import('./BioDialog.vue'));
const LanguageDialog = defineAsyncComponent(() => import('./LanguageDialog.vue'));
diff --git a/src/service/database/friendLogHistory.js b/src/service/database/friendLogHistory.js
index 97ec7693..bdcf868c 100644
--- a/src/service/database/friendLogHistory.js
+++ b/src/service/database/friendLogHistory.js
@@ -83,6 +83,39 @@ const friendLogHistory = {
);
},
+ async getFriendLogHistoryForUserId(userId, types) {
+ let friendLogHistory = [];
+ let typeFilter = '';
+ if (types && types.length > 0) {
+ const escapedTypes = types.map((t) => `'${t.replace(/'/g, "''")}'`);
+ typeFilter = ` AND type IN (${escapedTypes.join(', ')})`;
+ }
+ await sqliteService.execute(
+ (dbRow) => {
+ const row = {
+ rowId: dbRow[0],
+ created_at: dbRow[1],
+ type: dbRow[2],
+ userId: dbRow[3],
+ displayName: dbRow[4],
+ friendNumber: dbRow[8]
+ };
+ if (row.type === 'DisplayName') {
+ row.previousDisplayName = dbRow[5];
+ } else if (row.type === 'TrustLevel') {
+ row.trustLevel = dbRow[6];
+ row.previousTrustLevel = dbRow[7];
+ }
+ friendLogHistory.push(row);
+ },
+ `SELECT * FROM ${dbVars.userPrefix}_friend_log_history WHERE user_id = @user_id${typeFilter}`,
+ {
+ '@user_id': userId
+ }
+ );
+ return friendLogHistory;
+ },
+
deleteFriendLogHistory(rowId) {
sqliteService.executeNonQuery(
`DELETE FROM ${dbVars.userPrefix}_friend_log_history WHERE id = @row_id`,
diff --git a/src/stores/friend.js b/src/stores/friend.js
index 52598930..64dffa9d 100644
--- a/src/stores/friend.js
+++ b/src/stores/friend.js
@@ -69,7 +69,6 @@ export const useFriendStore = defineStore('Friend', () => {
const isRefreshFriendsLoading = ref(false);
const onlineFriendCount = ref(0);
- const isFriendLogLoaded = ref(false);
const pendingOfflineDelay = 170000;
let pendingOfflineWorker = null;
@@ -1286,7 +1285,6 @@ export const useFriendStore = defineStore('Friend', () => {
friendLogTable.value.loading = true;
friendLogTable.value.data = await database.getFriendLogHistory();
friendLogTable.value.loading = false;
- isFriendLogLoaded.value = true;
}
/**
@@ -1658,7 +1656,6 @@ export const useFriendStore = defineStore('Friend', () => {
onlineFriendCount,
friendLog,
friendLogTable,
- isFriendLogLoaded,
initFriendsList,
updateLocalFavoriteFriends,
diff --git a/src/stores/user.js b/src/stores/user.js
index 40df9908..ef623082 100644
--- a/src/stores/user.js
+++ b/src/stores/user.js
@@ -911,52 +911,57 @@ export const useUserStore = defineStore('User', () => {
}
const displayNameMap =
ref1.previousDisplayNames;
- if (!friendStore.isFriendLogLoaded) {
- await friendStore.initFriendLogHistoryTable();
- }
- friendStore.friendLogTable.data.forEach(
- (ref2) => {
- if (ref2.userId === D.id) {
+ const userNotifications =
+ await database.getFriendLogHistoryForUserId(
+ D.id,
+ [
+ 'DisplayName',
+ 'Friend',
+ 'Unfriend'
+ ]
+ );
+ for (const notification of userNotifications) {
+ if (notification.userId !== D.id) {
+ continue;
+ }
+ if (
+ notification.type === 'DisplayName'
+ ) {
+ displayNameMap.set(
+ notification.previousDisplayName,
+ notification.created_at
+ );
+ }
+ if (!D.dateFriended) {
+ if (
+ notification.type === 'Unfriend'
+ ) {
+ D.unFriended = true;
if (
- ref2.type === 'DisplayName'
+ !appearanceSettingsStore.hideUnfriends
) {
- displayNameMap.set(
- ref2.previousDisplayName,
- ref2.created_at
- );
- }
- if (!D.dateFriended) {
- if (
- ref2.type === 'Unfriend'
- ) {
- D.unFriended = true;
- if (
- !appearanceSettingsStore.hideUnfriends
- ) {
- D.dateFriended =
- ref2.created_at;
- }
- }
- if (
- ref2.type === 'Friend'
- ) {
- D.unFriended = false;
- D.dateFriended =
- ref2.created_at;
- }
- }
- if (
- ref2.type === 'Friend' ||
- (ref2.type === 'Unfriend' &&
- !appearanceSettingsStore.hideUnfriends)
- ) {
- D.dateFriendedInfo.push(
- ref2
- );
+ D.dateFriended =
+ notification.created_at;
}
}
+ if (
+ notification.type === 'Friend'
+ ) {
+ D.unFriended = false;
+ D.dateFriended =
+ notification.created_at;
+ }
}
- );
+ if (
+ notification.type === 'Friend' ||
+ (notification.type === 'Unfriend' &&
+ !appearanceSettingsStore.hideUnfriends)
+ ) {
+ D.dateFriendedInfo.push(
+ notification
+ );
+ }
+ }
displayNameMap.forEach(
(updated_at, displayName) => {
D.previousDisplayNames.push({