From a476643d4a73c59e5ad0b7279c67eb83a12b3b21 Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Thu, 28 Oct 2021 10:35:13 -0400 Subject: [PATCH] Improved userPresence sorting --- server/src/resolvers/Query/userPresence.js | 37 ++++++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/server/src/resolvers/Query/userPresence.js b/server/src/resolvers/Query/userPresence.js index 19807b5..ca63750 100644 --- a/server/src/resolvers/Query/userPresence.js +++ b/server/src/resolvers/Query/userPresence.js @@ -20,17 +20,40 @@ export async function userPresence(_, { search }) { ) || user.wifiDevices?.some( device => - device.ip?.startsWith(search) || - (device.status != 'OFFLINE' && - (device.apName?.contains(search) || - device.essid?.contains(search))) + device.status != 'OFFLINE' && + (device.ip?.startsWith(search) || + device.apName?.contains(search) || + device.essid?.contains(search)) ) ) : usersWithWifiDevices - const sortedUsers = filteredUsers.sort((a, b) => - a.wifiDevices[0].lastSeen > b.wifiDevices[0].lastSeen ? -1 : 1 - ) + // const sortedUsers = filteredUsers.sort((a, b) => + // a.wifiDevices[0].lastSeen > b.wifiDevices[0].lastSeen ? -1 : 1 + // ) + + const sortedUsers = filteredUsers.sort((a, b) => { + if ( + (a.wifiDevices[0].status == 'ONLINE' && + b.wifiDevices[0].status == 'RECENT') || + (a.wifiDevices[0].status == 'ONLINE' && + b.wifiDevices[0].status == 'OFFLINE') || + (a.wifiDevices[0].status == 'RECENT' && + b.wifiDevices[0].status == 'OFFLINE') + ) + return -1 + if ( + (b.wifiDevices[0].status == 'ONLINE' && + a.wifiDevices[0].status == 'RECENT') || + (b.wifiDevices[0].status == 'ONLINE' && + a.wifiDevices[0].status == 'OFFLINE') || + (b.wifiDevices[0].status == 'RECENT' && + a.wifiDevices[0].status == 'OFFLINE') + ) + return 1 + + return 0 + }) return sortedUsers .map(userPresence => ({