From 8d2850eeb262e46deee8829db4a3e6c816e43506 Mon Sep 17 00:00:00 2001 From: Natsumi Date: Wed, 12 Jul 2023 18:21:33 +1200 Subject: [PATCH] world & group instance sorting --- html/src/app.js | 63 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/html/src/app.js b/html/src/app.js index e53beafc..70af784e 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -17089,9 +17089,6 @@ speechSynthesis.getVoices(); }); } } - D.rooms.sort(function (a, b) { - return b.users.length - a.users.length || b.occupants - a.occupants; - }); if (D.fileSize === 'Loading') { $app.getBundleDateSize(ref) .then(({ createdAt, fileSize }) => { @@ -17285,7 +17282,7 @@ speechSynthesis.getVoices(); friendCount: 0, users: [], shortName: '', - json: {} + ref: {} }; } } @@ -17298,7 +17295,7 @@ speechSynthesis.getVoices(); friendCount: 0, users: [], shortName, - json: {} + ref: {} }; } var cachedCurrentUser = API.cachedUsers.get(API.currentUser.id); @@ -17419,9 +17416,40 @@ speechSynthesis.getVoices(); room.ref = ref; } } - // sort by more friends, occupants rooms.sort(function (a, b) { - return b.users.length - a.users.length || b.occupants - a.occupants; + // sort selected and current instance to top + if ( + b.location === D.$location.tag || + b.location === lastLocation$.tag + ) { + // sort selected instance above current instance + if (a.location === D.$location.tag) { + return -1; + } + return 1; + } + if ( + a.location === D.$location.tag || + a.location === lastLocation$.tag + ) { + // sort selected instance above current instance + if (b.location === D.$location.tag) { + return 1; + } + return -1; + } + // sort by number of users when no friends in instance + if (a.users.length === 0 && b.users.length === 0) { + if (a.ref?.n_users < b.ref?.n_users) { + return 1; + } + return -1; + } + // sort by number of friends in instance + if (a.users.length < b.users.length) { + return 1; + } + return -1; }); D.rooms = rooms; this.updateTimers(); @@ -17560,9 +17588,26 @@ speechSynthesis.getVoices(); }); } } - // sort by more friends, occupants rooms.sort(function (a, b) { - return b.users.length - a.users.length || b.occupants - a.occupants; + // sort current instance to top + if (b.location === currentLocation) { + return 1; + } + if (a.location === currentLocation) { + return -1; + } + // sort by number of users when no friends in instance + if (a.users.length === 0 && b.users.length === 0) { + if (a.ref?.n_users < b.ref?.n_users) { + return 1; + } + return -1; + } + // sort by number of friends in instance + if (a.users.length < b.users.length) { + return 1; + } + return -1; }); D.instances = rooms; this.updateTimers();