diff --git a/html/src/app.js b/html/src/app.js index f64c7ccd..08156998 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -5107,16 +5107,24 @@ speechSynthesis.getVoices(); $app.data.orderFriendsGroup1 = configRepository.getBool('orderFriendGroup1'); $app.data.orderFriendsGroup2 = configRepository.getBool('orderFriendGroup2'); $app.data.orderFriendsGroup3 = configRepository.getBool('orderFriendGroup3'); + $app.data.orderFriendsGroupPrivate = configRepository.getBool('orderFriendGroupPrivate'); + $app.data.orderFriendsGroupGPS = configRepository.getBool('orderFriendGroupGPS'); var saveOrderFriendGroup = function () { configRepository.setBool('orderFriendGroup0', this.orderFriendsGroup0); configRepository.setBool('orderFriendGroup1', this.orderFriendsGroup1); configRepository.setBool('orderFriendGroup2', this.orderFriendsGroup2); configRepository.setBool('orderFriendGroup3', this.orderFriendsGroup3); + configRepository.setBool('orderFriendGroupPrivate', this.orderFriendsGroupPrivate); + configRepository.setBool('orderFriendGroupGPS', this.orderFriendsGroupGPS); + this.sortFriendsGroup0 = true; + this.sortFriendsGroup1 = true; }; $app.watch.orderFriendsGroup0 = saveOrderFriendGroup; $app.watch.orderFriendsGroup1 = saveOrderFriendGroup; $app.watch.orderFriendsGroup2 = saveOrderFriendGroup; $app.watch.orderFriendsGroup3 = saveOrderFriendGroup; + $app.watch.orderFriendsGroupPrivate = saveOrderFriendGroup; + $app.watch.orderFriendsGroupGPS = saveOrderFriendGroup; $app.methods.fetchActiveFriend = function (userId) { this.pendingActiveFriends.add(userId); @@ -5494,6 +5502,9 @@ speechSynthesis.getVoices(); }; $app.methods.updateFriendGPS = function (userId) { + if (!this.orderFriendsGroupGPS) { + return; + } var ctx = this.friends.get(userId); if ((typeof ctx.ref !== 'undefined') && (ctx.ref.location !== 'private') && @@ -5547,14 +5558,46 @@ speechSynthesis.getVoices(); return 0; }; + // private + var compareByPrivate = function (a, b) { + if ((typeof a.ref === 'undefined') || (typeof b.ref === 'undefined')) { + return 0; + } + if ((a.ref.location === 'private') && (b.ref.location === 'private')) { + return 0; + } else if (a.ref.location === 'private') { + return 1; + } else if (b.ref.location === 'private') { + return -1; + } + return 0; + }; + + // location at + var compareByLocationAt = function (a, b) { + if (a.$location_at < b.$location_at) { + return -1; + } + if (a.$location_at > b.$location_at) { + return 1; + } + return 0; + }; + // VIP friends $app.computed.friendsGroup0 = function () { if (this.orderFriendsGroup0) { + if (this.orderFriendsGroupPrivate) { + this.friendsGroupA_.sort(compareByPrivate); + } return this.friendsGroupA_; } if (this.sortFriendsGroup0) { this.sortFriendsGroup0 = false; this.friendsGroup0_.sort(compareByName); + if (this.orderFriendsGroupPrivate) { + this.friendsGroup0_.sort(compareByPrivate); + } } return this.friendsGroup0_; }; @@ -5562,11 +5605,17 @@ speechSynthesis.getVoices(); // Online friends $app.computed.friendsGroup1 = function () { if (this.orderFriendsGroup1) { + if (this.orderFriendsGroupPrivate) { + this.friendsGroupB_.sort(compareByPrivate); + } return this.friendsGroupB_; } if (this.sortFriendsGroup1) { this.sortFriendsGroup1 = false; this.friendsGroup1_.sort(compareByName); + if (this.orderFriendsGroupPrivate) { + this.friendsGroup1_.sort(compareByPrivate); + } } return this.friendsGroup1_; }; @@ -8236,7 +8285,7 @@ speechSynthesis.getVoices(); } } } - users.sort(compareByDisplayName); + users.sort(compareByLocationAt); D.users = users; if (!L.worldId) { return; @@ -8856,9 +8905,20 @@ speechSynthesis.getVoices(); L.user = ref; } } - instance.users.sort(compareByDisplayName); + instance.users.sort(compareByLocationAt); rooms.push(instance); } + // reuse instance occupants from getInstance + for (var room of rooms) { + if (room.occupants === 0) { + for (var instance of D.rooms) { + if (instance.id === room.id) { + room.occupants = instance.occupants; + break; + } + } + } + } // sort by more friends, occupants rooms.sort(function (a, b) { return b.users.length - a.users.length || diff --git a/html/src/index.pug b/html/src/index.pug index ebcbc8d4..8e4bf037 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -763,6 +763,12 @@ html el-switch(v-model="displayVRCPlusIconsAsAvatar") div.options-container span.header Side Pannel Sorting Options + div.options-container-item + span.name Sort Private to bottom + el-switch(v-model="orderFriendsGroupPrivate") + div.options-container-item + span.name Sort GPS to top + el-switch(v-model="orderFriendsGroupGPS") div.options-container-item span.name VIP el-switch(v-model="orderFriendsGroup0" inactive-text="by name" active-text="by state")