From b5271ecf90b789489d7f5682e850b72a2cd3fe74 Mon Sep 17 00:00:00 2001 From: Natsumi Date: Wed, 7 Dec 2022 20:03:58 +1300 Subject: [PATCH] Group Dialog 5 --- html/src/app.js | 6 ++++- html/src/index.pug | 61 +++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/html/src/app.js b/html/src/app.js index ff3a52e7..0553b87e 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -14398,7 +14398,7 @@ speechSynthesis.getVoices(); isMaster = true; } var lobbyJointime = $app.photonLobbyJointime.get(photonId); - var inVRMode = false; + var inVRMode = null; var groupOnNameplate = ''; if (typeof lobbyJointime !== 'undefined') { inVRMode = lobbyJointime.inVRMode; @@ -23223,6 +23223,9 @@ speechSynthesis.getVoices(); offset: 0, groupId: this.groupDialog.id }; + if (this.groupDialog.ref.membershipStatus !== 'member') { + return; + } await API.getGroupMember({ groupId: this.groupDialog.id, userId: API.currentUser.id @@ -23273,6 +23276,7 @@ speechSynthesis.getVoices(); if ( D.ref && D.ref.myMember && + D.ref.myMember.permissions && D.ref.myMember.permissions.includes('group-members-viewall') ) { return true; diff --git a/html/src/index.pug b/html/src/index.pug index 84f661f1..91ffced5 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -759,11 +759,11 @@ html span {{ scope.row.created_at | formatDate('short') }} el-table-column(label="Type" prop="type" width="160") template(v-once #default="scope") - el-tooltip(placement="top" v-if="scope.row.type === 'invite'") + el-tooltip(v-if="scope.row.type === 'invite'" placement="top") template(#content) location(v-if="scope.row.details" :location="scope.row.details.worldId" :hint="scope.row.details.worldName" :link="false") span.x-link(v-text="scope.row.type" @click="showWorldDialog(scope.row.details.worldId)") - template(v-if="scope.row.type && (scope.row.type.startsWith('group.') || scope.row.type === 'moderation.warning.group')") + template(v-else-if="scope.row.type && (scope.row.type.startsWith('group.') || scope.row.type === 'moderation.warning.group')") span.x-link(v-text="scope.row.type" @click="showGroupDialog(scope.row.link)") span(v-else v-text="scope.row.type") el-table-column(label="User" prop="senderUsername" width="150") @@ -2292,28 +2292,29 @@ html span.name Joined At span.extra {{ groupDialog.ref.myMember.joinedAt | formatDate('long') }} el-tab-pane(label="Members") - span(v-if="isAllowedToViewGroupMembers()" style="font-weight:bold;font-size:16px") All Members - span(v-else style="font-weight:bold;font-size:16px") Friends Only - br - el-button(type="default" @click="getGroupDialogGroupMembers()" size="mini" icon="el-icon-refresh" circle) - span(style="font-size:14px;margin-left:5px;margin-right:5px") {{ groupDialog.members.length }}/{{ groupDialog.ref.memberCount }} - ul.infinite-list.x-friend-list(v-if="groupDialog.members.length > 0" v-infinite-scroll="loadMoreGroupMembers" style="margin-top:10px;overflow:auto;max-height:250px") - li.infinite-list-item.x-friend-item(v-for="user in groupDialog.members" :key="user.id" @click="showUserDialog(user.userId)" class="x-friend-item-border") - .avatar - img(v-lazy="userImage(user.user)") - .detail - span.name(v-text="user.user.displayName" :style="{'color':user.user.$userColour}") - span.extra - .x-friend-item(v-if="!isGroupMembersDone" v-loading="isGroupMembersLoading" style="width:100%;height:45px;text-align:center" @click="loadMoreGroupMembers") - .detail(v-if="!isGroupMembersLoading") - span.name Load more... - el-tab-pane(label="JSON") - el-button(type="default" @click="refreshGroupDialogTreeData()" size="mini" icon="el-icon-refresh" circle) - el-tree(:data="groupDialog.treeData" style="margin-top:5px;font-size:12px") - template(#default="scope") - span - span(v-text="scope.data.key" style="font-weight:bold;margin-right:5px") - span(v-if="!scope.data.children" v-text="scope.data.value") + template(v-if="groupDialog.ref.membershipStatus === 'member'") + span(v-if="isAllowedToViewGroupMembers()" style="font-weight:bold;font-size:16px") All Members + span(v-else style="font-weight:bold;font-size:16px") Friends Only + br + el-button(type="default" @click="getGroupDialogGroupMembers()" size="mini" icon="el-icon-refresh" circle) + span(style="font-size:14px;margin-left:5px;margin-right:5px") {{ groupDialog.members.length }}/{{ groupDialog.ref.memberCount }} + ul.infinite-list.x-friend-list(v-if="groupDialog.members.length > 0" v-infinite-scroll="loadMoreGroupMembers" style="margin-top:10px;overflow:auto;max-height:250px") + li.infinite-list-item.x-friend-item(v-for="user in groupDialog.members" :key="user.id" @click="showUserDialog(user.userId)" class="x-friend-item-border") + .avatar + img(v-lazy="userImage(user.user)") + .detail + span.name(v-text="user.user.displayName" :style="{'color':user.user.$userColour}") + span.extra + .x-friend-item(v-if="!isGroupMembersDone" v-loading="isGroupMembersLoading" style="width:100%;height:45px;text-align:center" @click="loadMoreGroupMembers") + .detail(v-if="!isGroupMembersLoading") + span.name Load more... + el-tab-pane(label="JSON") + el-button(type="default" @click="refreshGroupDialogTreeData()" size="mini" icon="el-icon-refresh" circle) + el-tree(:data="groupDialog.treeData" style="margin-top:5px;font-size:12px") + template(#default="scope") + span + span(v-text="scope.data.key" style="font-weight:bold;margin-right:5px") + span(v-if="!scope.data.children" v-text="scope.data.value") //- dialog: favorite el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="favoriteDialog" :visible.sync="favoriteDialog.visible" title="Choose Group" width="300px") @@ -3228,10 +3229,10 @@ html el-button(type="default" size="small" @click="setProfilePicOverride('')" icon="el-icon-close" :disabled="!API.currentUser.profilePicOverride") Clear br .x-friend-item(v-for="image in galleryTable" :key="image.id" style="display:inline-block;margin-top:10px;width:unset;cursor:default") - .vrcplus-icon(v-if="image.versions[1].file.url" @click="setProfilePicOverride(image.id)" :class="{ 'current-vrcplus-icon': compareCurrentProfilePic(image.id) }") - img.avatar(v-lazy="image.versions[1].file.url") + .vrcplus-icon(v-if="image.versions[image.versions.length - 1].file.url" @click="setProfilePicOverride(image.id)" :class="{ 'current-vrcplus-icon': compareCurrentProfilePic(image.id) }") + img.avatar(v-lazy="image.versions[image.versions.length - 1].file.url") div(style="float:right;margin-top:5px") - el-button(type="default" @click="openExternalLink(image.versions[1].file.url)" size="mini" icon="el-icon-paperclip" circle) + el-button(type="default" @click="openExternalLink(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-paperclip" circle) el-button(type="default" @click="deleteGalleryImage(image.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px") el-tab-pane(v-if="galleryDialogVisible" v-loading="galleryDialogIconsLoading") span(slot="label") Icons @@ -3243,10 +3244,10 @@ html el-button(type="default" size="small" @click="setVRCPlusIcon('')" icon="el-icon-close" :disabled="!API.currentUser.userIcon") Clear br .x-friend-item(v-for="image in VRCPlusIconsTable" :key="image.id" style="display:inline-block;margin-top:10px;width:unset;cursor:default") - .vrcplus-icon(v-if="image.versions[1].file.url" @click="setVRCPlusIcon(image.id)" :class="{ 'current-vrcplus-icon': compareCurrentVRCPlusIcon(image.id) }") - img.avatar(v-lazy="image.versions[1].file.url") + .vrcplus-icon(v-if="image.versions[image.versions.length - 1].file.url" @click="setVRCPlusIcon(image.id)" :class="{ 'current-vrcplus-icon': compareCurrentVRCPlusIcon(image.id) }") + img.avatar(v-lazy="image.versions[image.versions.length - 1].file.url") div(style="float:right;margin-top:5px") - el-button(type="default" @click="openExternalLink(image.versions[1].file.url)" size="mini" icon="el-icon-paperclip" circle) + el-button(type="default" @click="openExternalLink(image.versions[image.versions.length - 1].file.url)" size="mini" icon="el-icon-paperclip" circle) el-button(type="default" @click="deleteVRCPlusIcon(image.id)" size="mini" icon="el-icon-delete" circle style="margin-left:5px") //- dialog Table: Previous Instances User