mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-22 00:03:51 +02:00
Restore friend order
This commit is contained in:
@@ -52,6 +52,7 @@ import _memos from './classes/memos.js';
|
||||
import _languages from './classes/languages.js';
|
||||
import _groups from './classes/groups.js';
|
||||
import _vrcRegistry from './classes/vrcRegistry.js';
|
||||
import _restoreFriendOrder from './classes/restoreFriendOrder.js';
|
||||
|
||||
// API classes
|
||||
import _config from './classes/API/config.js';
|
||||
@@ -116,7 +117,8 @@ speechSynthesis.getVoices();
|
||||
config: new _config($app, API, $t),
|
||||
languages: new _languages($app, API, $t),
|
||||
groups: new _groups($app, API, $t),
|
||||
vrcRegistry: new _vrcRegistry($app, API, $t)
|
||||
vrcRegistry: new _vrcRegistry($app, API, $t),
|
||||
restoreFriendOrder: new _restoreFriendOrder($app, API, $t)
|
||||
};
|
||||
|
||||
await configRepository.init();
|
||||
@@ -570,6 +572,7 @@ speechSynthesis.getVoices();
|
||||
$previousLocation: '',
|
||||
$customTag: '',
|
||||
$customTagColour: '',
|
||||
$friendNumber: 0,
|
||||
//
|
||||
...json
|
||||
};
|
||||
@@ -4144,7 +4147,7 @@ speechSynthesis.getVoices();
|
||||
|
||||
$app.data.friends = new Map();
|
||||
$app.data.pendingActiveFriends = new Set();
|
||||
$app.data.friendsNo = 0;
|
||||
$app.data.friendNumber = 0;
|
||||
$app.data.isFriendsGroupMe = true;
|
||||
$app.data.isVIPFriends = true;
|
||||
$app.data.isOnlineFriends = true;
|
||||
@@ -4251,7 +4254,7 @@ speechSynthesis.getVoices();
|
||||
API.$on('LOGIN', function () {
|
||||
$app.friends.clear();
|
||||
$app.pendingActiveFriends.clear();
|
||||
$app.friendsNo = 0;
|
||||
$app.friendNumber = 0;
|
||||
$app.isVIPFriends = true;
|
||||
$app.isOnlineFriends = true;
|
||||
$app.isActiveFriends = true;
|
||||
@@ -4342,40 +4345,6 @@ speechSynthesis.getVoices();
|
||||
this.deleteFriend(id);
|
||||
}
|
||||
}
|
||||
|
||||
this.saveFriendOrder();
|
||||
};
|
||||
|
||||
$app.methods.saveFriendOrder = async function () {
|
||||
var currentTime = Date.now();
|
||||
var lastStoreTime = await configRepository.getString(
|
||||
`VRCX_lastStoreTime_${API.currentUser.id}`,
|
||||
''
|
||||
);
|
||||
// store once every week
|
||||
if (lastStoreTime && currentTime - lastStoreTime < 604800000) {
|
||||
return;
|
||||
}
|
||||
var storedData = {};
|
||||
try {
|
||||
var data = await configRepository.getString(
|
||||
`VRCX_friendOrder_${API.currentUser.id}`
|
||||
);
|
||||
if (data) {
|
||||
var storedData = JSON.parse(data);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
storedData[currentTime] = Array.from(this.friends.keys());
|
||||
await configRepository.setString(
|
||||
`VRCX_friendOrder_${API.currentUser.id}`,
|
||||
JSON.stringify(storedData)
|
||||
);
|
||||
await configRepository.setString(
|
||||
`VRCX_lastStoreTime_${API.currentUser.id}`,
|
||||
currentTime
|
||||
);
|
||||
};
|
||||
|
||||
$app.methods.addFriend = function (id, state) {
|
||||
@@ -4395,7 +4364,6 @@ speechSynthesis.getVoices();
|
||||
isVIP,
|
||||
ref,
|
||||
name,
|
||||
no: ++this.friendsNo,
|
||||
memo: '',
|
||||
pendingOffline: false,
|
||||
pendingOfflineTime: '',
|
||||
@@ -7088,7 +7056,8 @@ speechSynthesis.getVoices();
|
||||
var row = {
|
||||
userId: ref.id,
|
||||
displayName: ref.displayName,
|
||||
trustLevel: ref.$trustLevel
|
||||
trustLevel: ref.$trustLevel,
|
||||
friendNumber: 0
|
||||
};
|
||||
this.friendLog.set(friend.id, row);
|
||||
sqlValues.unshift(row);
|
||||
@@ -7110,6 +7079,11 @@ speechSynthesis.getVoices();
|
||||
};
|
||||
|
||||
$app.methods.getFriendLog = async function (currentUser) {
|
||||
this.friendNumber = await configRepository.getInt(
|
||||
`VRCX_friendNumber_${currentUser.id}`,
|
||||
0
|
||||
);
|
||||
|
||||
var friendLogCurrentArray = await database.getFriendLogCurrent();
|
||||
for (var friend of friendLogCurrentArray) {
|
||||
this.friendLog.set(friend.userId, friend);
|
||||
@@ -7118,7 +7092,9 @@ speechSynthesis.getVoices();
|
||||
this.friendLogTable.data = await database.getFriendLogHistory();
|
||||
this.refreshFriends(currentUser, true);
|
||||
await API.refreshFriends();
|
||||
await this.tryRestoreFriendNumber();
|
||||
this.friendLogInitStatus = true;
|
||||
|
||||
// check for friend/name/rank change AFTER friendLogInitStatus is set
|
||||
for (var friend of friendLogCurrentArray) {
|
||||
var ref = API.cachedUsers.get(friend.userId);
|
||||
@@ -7154,12 +7130,21 @@ speechSynthesis.getVoices();
|
||||
userId: id
|
||||
}).then((args) => {
|
||||
if (args.json.isFriend && !this.friendLog.has(id)) {
|
||||
if (this.friendNumber === 0) {
|
||||
this.friendNumber = this.friends.size;
|
||||
}
|
||||
ref.$friendNumber = ++this.friendNumber;
|
||||
configRepository.setInt(
|
||||
`VRCX_friendNumber_${API.currentUser.id}`,
|
||||
this.friendNumber
|
||||
);
|
||||
this.addFriend(id, ref.state);
|
||||
var friendLogHistory = {
|
||||
created_at: new Date().toJSON(),
|
||||
type: 'Friend',
|
||||
userId: id,
|
||||
displayName: ref.displayName
|
||||
displayName: ref.displayName,
|
||||
friendNumber: ref.$friendNumber
|
||||
};
|
||||
this.friendLogTable.data.push(friendLogHistory);
|
||||
database.addFriendLogHistory(friendLogHistory);
|
||||
@@ -7167,7 +7152,8 @@ speechSynthesis.getVoices();
|
||||
var friendLogCurrent = {
|
||||
userId: id,
|
||||
displayName: ref.displayName,
|
||||
trustLevel: ref.$trustLevel
|
||||
trustLevel: ref.$trustLevel,
|
||||
friendNumber: ref.$friendNumber
|
||||
};
|
||||
this.friendLog.set(id, friendLogCurrent);
|
||||
database.setFriendLogCurrent(friendLogCurrent);
|
||||
@@ -7255,7 +7241,8 @@ speechSynthesis.getVoices();
|
||||
type: 'DisplayName',
|
||||
userId: ref.id,
|
||||
displayName: ref.displayName,
|
||||
previousDisplayName: ctx.displayName
|
||||
previousDisplayName: ctx.displayName,
|
||||
friendNumber: ref.$friendNumber
|
||||
};
|
||||
this.friendLogTable.data.push(friendLogHistoryDisplayName);
|
||||
database.addFriendLogHistory(friendLogHistoryDisplayName);
|
||||
@@ -7263,7 +7250,8 @@ speechSynthesis.getVoices();
|
||||
var friendLogCurrent = {
|
||||
userId: ref.id,
|
||||
displayName: ref.displayName,
|
||||
trustLevel: ref.$trustLevel
|
||||
trustLevel: ref.$trustLevel,
|
||||
friendNumber: ref.$friendNumber
|
||||
};
|
||||
this.friendLog.set(ref.id, friendLogCurrent);
|
||||
database.setFriendLogCurrent(friendLogCurrent);
|
||||
@@ -7286,7 +7274,8 @@ speechSynthesis.getVoices();
|
||||
var friendLogCurrent3 = {
|
||||
userId: ref.id,
|
||||
displayName: ref.displayName,
|
||||
trustLevel: ref.$trustLevel
|
||||
trustLevel: ref.$trustLevel,
|
||||
friendNumber: ref.$friendNumber
|
||||
};
|
||||
this.friendLog.set(ref.id, friendLogCurrent3);
|
||||
database.setFriendLogCurrent(friendLogCurrent3);
|
||||
@@ -7298,7 +7287,8 @@ speechSynthesis.getVoices();
|
||||
userId: ref.id,
|
||||
displayName: ref.displayName,
|
||||
trustLevel: ref.$trustLevel,
|
||||
previousTrustLevel: ctx.trustLevel
|
||||
previousTrustLevel: ctx.trustLevel,
|
||||
friendNumber: ref.$friendNumber
|
||||
};
|
||||
this.friendLogTable.data.push(friendLogHistoryTrustLevel);
|
||||
database.addFriendLogHistory(friendLogHistoryTrustLevel);
|
||||
@@ -7306,7 +7296,8 @@ speechSynthesis.getVoices();
|
||||
var friendLogCurrent2 = {
|
||||
userId: ref.id,
|
||||
displayName: ref.displayName,
|
||||
trustLevel: ref.$trustLevel
|
||||
trustLevel: ref.$trustLevel,
|
||||
friendNumber: ref.$friendNumber
|
||||
};
|
||||
this.friendLog.set(ref.id, friendLogCurrent2);
|
||||
database.setFriendLogCurrent(friendLogCurrent2);
|
||||
@@ -7314,6 +7305,9 @@ speechSynthesis.getVoices();
|
||||
this.updateSharedFeed(true);
|
||||
}
|
||||
ctx.trustLevel = ref.$trustLevel;
|
||||
if (ctx.friendNumber) {
|
||||
ref.$friendNumber = ctx.friendNumber;
|
||||
}
|
||||
};
|
||||
|
||||
$app.methods.deleteFriendLog = function (row) {
|
||||
@@ -7787,7 +7781,7 @@ speechSynthesis.getVoices();
|
||||
stripe: true,
|
||||
size: 'mini',
|
||||
defaultSort: {
|
||||
prop: '$friendNum',
|
||||
prop: '$friendNumber',
|
||||
order: 'descending'
|
||||
}
|
||||
},
|
||||
@@ -14828,7 +14822,7 @@ speechSynthesis.getVoices();
|
||||
this.stringComparer
|
||||
);
|
||||
}
|
||||
if (!match && filters.includes('Rank') && ctx.ref.$friendNum) {
|
||||
if (!match && filters.includes('Rank')) {
|
||||
match = String(ctx.ref.$trustLevel)
|
||||
.toUpperCase()
|
||||
.includes(query.toUpperCase());
|
||||
@@ -14837,7 +14831,6 @@ speechSynthesis.getVoices();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
ctx.ref.$friendNum = ctx.no;
|
||||
results.push(ctx.ref);
|
||||
}
|
||||
this.getAllUserStats();
|
||||
@@ -19429,7 +19422,7 @@ speechSynthesis.getVoices();
|
||||
);
|
||||
|
||||
$app.methods.updateDatabaseVersion = async function () {
|
||||
var databaseVersion = 10;
|
||||
var databaseVersion = 11;
|
||||
if (this.databaseVersion < databaseVersion) {
|
||||
if (this.databaseVersion) {
|
||||
var msgBox = this.$message({
|
||||
@@ -19448,11 +19441,11 @@ speechSynthesis.getVoices();
|
||||
await database.fixNegativeGPS(); // fix GPS being a negative value due to VRCX bug with traveling
|
||||
await database.fixBrokenLeaveEntries(); // fix user instance timer being higher than current user location timer
|
||||
await database.fixBrokenGroupInvites(); // fix notification v2 in wrong table
|
||||
await database.updateTableForGroupNames(); // alter tables to include group name
|
||||
await database.fixBrokenNotifications(); // fix notifications being null
|
||||
await database.fixBrokenGroupChange(); // fix spam group left & name change
|
||||
await database.fixCancelFriendRequestTypo(); // fix CancelFriendRequst typo
|
||||
await database.fixBrokenGameLogDisplayNames(); // fix gameLog display names "DisplayName (userId)"
|
||||
await database.upgradeDatabaseVersion(); // update database version
|
||||
await database.vacuum(); // succ
|
||||
await configRepository.setInt(
|
||||
'VRCX_databaseVersion',
|
||||
|
||||
Reference in New Issue
Block a user