diff --git a/src/components/dialogs/AvatarDialog/AvatarDialog.vue b/src/components/dialogs/AvatarDialog/AvatarDialog.vue index b0625009..238fe744 100644 --- a/src/components/dialogs/AvatarDialog/AvatarDialog.vue +++ b/src/components/dialogs/AvatarDialog/AvatarDialog.vue @@ -594,6 +594,7 @@ openExternalLink, openFolderGeneric, replaceVrcPackageUrl, + textToHex, timeToText } from '../../../shared/utils'; import { @@ -1017,7 +1018,10 @@ } function refreshAvatarDialogTreeData() { - treeData.value = buildTreeData(avatarDialog.value.ref); + treeData.value = buildTreeData({ + ...avatarDialog.value.ref, + _hexDisplayName: textToHex(avatarDialog.value.ref?.displayName) + }); } function showSetAvatarTagsDialog(avatarId) { diff --git a/src/components/dialogs/GroupDialog/GroupDialog.vue b/src/components/dialogs/GroupDialog/GroupDialog.vue index be71535b..6ab00e82 100644 --- a/src/components/dialogs/GroupDialog/GroupDialog.vue +++ b/src/components/dialogs/GroupDialog/GroupDialog.vue @@ -1184,6 +1184,7 @@ openExternalLink, refreshInstancePlayerCount, removeFromArray, + textToHex, userImage, userStatusClass } from '../../../shared/utils'; @@ -1757,6 +1758,7 @@ function refreshGroupDialogTreeData() { const D = groupDialog.value; const treeData = buildTreeData({ + _hexDisplayName: textToHex(D.ref.displayName), group: D.ref, posts: D.posts, instances: D.instances, diff --git a/src/components/dialogs/WorldDialog/WorldDialog.vue b/src/components/dialogs/WorldDialog/WorldDialog.vue index efaca7c8..7302509e 100644 --- a/src/components/dialogs/WorldDialog/WorldDialog.vue +++ b/src/components/dialogs/WorldDialog/WorldDialog.vue @@ -1303,7 +1303,10 @@ nextTick(() => (D.openFlg = false)); } function refreshWorldDialogTreeData() { - treeData.value = buildTreeData(worldDialog.value.ref); + treeData.value = buildTreeData({ + ...worldDialog.value.ref, + _hexDisplayName: textToHex(worldDialog.value.ref?.displayName) + }); } function copyWorldId() { navigator.clipboard diff --git a/src/shared/utils/base/string.js b/src/shared/utils/base/string.js index 535f4ac8..1640fcc6 100644 --- a/src/shared/utils/base/string.js +++ b/src/shared/utils/base/string.js @@ -34,7 +34,7 @@ function textToHex(text) { const s = String(text); return s .split('') - .map((c) => c.charCodeAt(0).toString(16)) + .map((c) => c.charCodeAt(0).toString(16).toUpperCase()) .join(' '); } diff --git a/src/shared/utils/common.js b/src/shared/utils/common.js index 23d9139d..3cd4f25d 100644 --- a/src/shared/utils/common.js +++ b/src/shared/utils/common.js @@ -321,6 +321,13 @@ function buildTreeData(json) { node.sort(function (a, b) { const A = String(a.key).toUpperCase(); const B = String(b.key).toUpperCase(); + // sort _ to top + if (A.startsWith('_') && !B.startsWith('_')) { + return -1; + } + if (B.startsWith('_') && !A.startsWith('_')) { + return 1; + } if (A < B) { return -1; } diff --git a/src/stores/user.js b/src/stores/user.js index 28265efb..98311a62 100644 --- a/src/stores/user.js +++ b/src/stores/user.js @@ -19,7 +19,8 @@ import { isRealInstance, parseLocation, removeEmojis, - replaceBioSymbols + replaceBioSymbols, + textToHex } from '../shared/utils'; import { avatarRequest, @@ -1226,12 +1227,16 @@ export const useUserStore = defineStore('User', () => { if (D.id === currentUser.value.id) { const treeData = { ...currentUser.value, - ...D.ref + ...D.ref, + _hexDisplayName: textToHex(D.ref?.displayName) }; D.treeData = buildTreeData(treeData); return; } - D.treeData = buildTreeData(D.ref); + D.treeData = buildTreeData({ + ...D.ref, + _hexDisplayName: textToHex(D.ref?.displayName) + }); } async function lookupUser(ref) {