show admin tag

This commit is contained in:
unknown 2020-01-02 20:48:41 +00:00
parent 00544d6c0f
commit 3d3d055c10
2 changed files with 38 additions and 8 deletions

View file

@ -19,12 +19,14 @@
</div> </div>
</div> </div>
<div v-if="type === 'OWNER'" class="type-box">Owner</div> <div v-if="type === 'OWNER'" class="type-box">Owner</div>
<div v-else-if="isAdmin" class="type-box">Admin</div>
</div> </div>
</template> </template>
<script> <script>
import ProfilePicture from "@/components/ProfilePictureTemplate"; import ProfilePicture from "@/components/ProfilePictureTemplate";
import config from "@/config"; import config from "@/config";
import { containsPerm, permissions } from "../../utils/RolePermissions";
export default { export default {
components: { ProfilePicture }, components: { ProfilePicture },
props: ["user", "avatar", "type", "member"], props: ["user", "avatar", "type", "member"],
@ -49,16 +51,40 @@ export default {
const userPresense = presences[this.user.uniqueID]; const userPresense = presences[this.user.uniqueID];
return userPresense || 0; return userPresense || 0;
}, },
roles() {
return this.$store.getters["servers/selectedServerRoles"];
},
roleColor() { roleColor() {
if (!this.member || !this.member.roles) return undefined; if (!this.member || !this.member.roles) return undefined;
const roles = this.$store.getters["servers/selectedServerRoles"]; if (!this.roles) return undefined;
if (!roles) return undefined;
let filter = roles.filter(r => this.member.roles.includes(r.id)); let filter = this.roles.filter(r => this.member.roles.includes(r.id));
if (!filter.length) { if (!filter.length) {
filter = [roles.find(r => r.default)]; filter = [this.roles.find(r => r.default)];
} }
return filter[0].color; return filter[0].color;
},
isAdmin() {
if (!this.roles) return false;
const defaultRole = this.roles.find(r => r.default === true);
if (containsPerm(defaultRole.permissions, permissions.ADMIN.value)) {
return true;
}
if (!this.member.roles) {
return false;
}
for (let index = 0; index < this.member.roles.length; index++) {
const roleID = this.member.roles[index];
const role = this.roles.find(r => r.id === roleID);
if (role) {
if (containsPerm(role.permissions, permissions.ADMIN.value)) {
return true;
}
}
}
return false;
} }
}, },
methods: { methods: {

View file

@ -176,7 +176,7 @@
<div <div
class="no-message-permission" class="no-message-permission"
v-if=" v-if="
sendChannelMessagePermission === false || !roleSendMessagePermission sendChannelMessagePermission === false || roleSendMessagePermission === false
" "
> >
You don't have permission to send messages in this channel. You don't have permission to send messages in this channel.
@ -729,9 +729,9 @@ export default {
); );
}, },
myRolePermissions() { myRolePermissions() {
if (!this.serverMember) return; if (!this.serverMember) return undefined;
const roles = this.$store.getters["servers/selectedServerRoles"]; const roles = this.$store.getters["servers/selectedServerRoles"];
if (!roles ) return undefined; if (!roles) return undefined;
let perms = 0; let perms = 0;
@ -749,7 +749,11 @@ export default {
return perms; return perms;
}, },
roleSendMessagePermission() { roleSendMessagePermission() {
return containsPerm( if (this.type !== 1) return true;
if (!this.channel) return null;
if (!this.server) return false;
return !!containsPerm(
this.myRolePermissions || 0, this.myRolePermissions || 0,
permissions.SEND_MESSAGES.value permissions.SEND_MESSAGES.value
); );