From 6e3ae1fe4fdb788ed51703cf86aaa2ec4abfc035 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 16 Feb 2017 10:53:02 -0800 Subject: [PATCH] cleanup some accumulated cruft in pal code --- interface/resources/qml/hifi/Pal.qml | 4 +-- scripts/system/pal.js | 40 +++++++++++----------------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index 0c7104fba5..c1fea7c09b 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -360,7 +360,7 @@ Rectangle { TextMetrics { id: displayNameHeaderMetrics text: displayNameHeader.title - font: displayNameHeader.font + // font: displayNameHeader.font // was this always undefined? giving error now... } // This Rectangle refers to the [?] popup button next to "NAMES" Rectangle { @@ -426,7 +426,6 @@ Rectangle { onExited: adminHelpText.color = hifi.colors.redHighlight } } - } HifiControls.Keyboard { id: keyboard @@ -438,6 +437,7 @@ Rectangle { right: parent.right } } + } // Timer used when selecting table rows that aren't yet present in the model // (i.e. when selecting avatars using edit.js or sphere overlays) diff --git a/scripts/system/pal.js b/scripts/system/pal.js index 2e07a2d431..57648da79a 100644 --- a/scripts/system/pal.js +++ b/scripts/system/pal.js @@ -290,17 +290,14 @@ function populateUserList(selectData) { userName: '', sessionId: id || '', audioLevel: 0.0, - admin: false + admin: false, + personalMute: !!id && Users.getPersonalMuteStatus(id), // expects proper boolean, not null + ignore: !!id && Users.getIgnoreStatus(id) // ditto }; - // Request the username, fingerprint, and admin status from the given UUID - // Username and fingerprint returns default constructor output if the requesting user isn't an admin - Users.requestUsernameFromID(id); - // Request personal mute status and ignore status - // from NodeList (as long as we're not requesting it for our own ID) if (id) { - avatarPalDatum['personalMute'] = Users.getPersonalMuteStatus(id); - avatarPalDatum['ignore'] = Users.getIgnoreStatus(id); addAvatarNode(id); // No overlay for ourselves + // Everyone needs to see admin status. Username and fingerprint returns default constructor output if the requesting user isn't an admin. + Users.requestUsernameFromID(id); } data.push(avatarPalDatum); print('PAL data:', JSON.stringify(avatarPalDatum)); @@ -314,20 +311,13 @@ function populateUserList(selectData) { // The function that handles the reply from the server function usernameFromIDReply(id, username, machineFingerprint, isAdmin) { - var data; - // If the ID we've received is our ID... - if (MyAvatar.sessionUUID === id) { - // Set the data to contain specific strings. - data = ['', username, isAdmin]; - } else if (Users.canKick) { - // Set the data to contain the ID and the username (if we have one) - // or fingerprint (if we don't have a username) string. - data = [id, username || machineFingerprint, isAdmin]; - } else { - // Set the data to contain specific strings. - data = [id, '', isAdmin]; - } - print('Username Data:', JSON.stringify(data)); + var data = [ + (MyAvatar.sessionUUID === id) ? '' : id, // Pal.qml recognizes empty id specially. + // If we get username (e.g., if in future we receive it when we're friends), use it. + // Otherwise, use valid machineFingerprint (which is not valid when not an admin). + username || (Users.canKick && machineFingerprint) || '', + isAdmin + ]; // Ship the data off to QML sendToQml({ method: 'updateUsername', params: data }); } @@ -339,13 +329,15 @@ function updateOverlays() { if (!id) { return; // don't update ourself } - + var avatar = AvatarList.getAvatar(id); + if (!avatar) { + return; // will be deleted below if there had been an overlay. + } var overlay = ExtendedOverlay.get(id); if (!overlay) { // For now, we're treating this as a temporary loss, as from the personal space bubble. Add it back. print('Adding non-PAL avatar node', id); overlay = addAvatarNode(id); } - var avatar = AvatarList.getAvatar(id); var target = avatar.position; var distance = Vec3.distance(target, eye); var offset = 0.2;