mirror of
https://github.com/danbulant/Nertivia-Client
synced 2026-07-05 11:00:50 +00:00
fixed some bugs, added some permissions
This commit is contained in:
parent
c6dcca6178
commit
ffc72823fe
9 changed files with 73 additions and 23 deletions
|
|
@ -54,9 +54,9 @@ export default {
|
||||||
const roles = this.$store.getters["servers/selectedServerRoles"];
|
const roles = this.$store.getters["servers/selectedServerRoles"];
|
||||||
if (!roles) return undefined;
|
if (!roles) return undefined;
|
||||||
|
|
||||||
const filter = roles.filter(r => this.member.roles.includes(r.id));
|
let filter = roles.filter(r => this.member.roles.includes(r.id));
|
||||||
if (!filter.length) {
|
if (!filter.length) {
|
||||||
return null;
|
filter = [roles.find(r => r.default)];
|
||||||
}
|
}
|
||||||
return filter[0].color;
|
return filter[0].color;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,12 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab" v-if="noneRoleOnlineMembers.length">
|
<div
|
||||||
Online ({{ noneRoleOnlineMembers.length }})
|
class="tab"
|
||||||
|
v-if="noneRoleOnlineMembers.length"
|
||||||
|
:style="{ color: defaultRole.color }"
|
||||||
|
>
|
||||||
|
{{ defaultRole.name }} ({{ noneRoleOnlineMembers.length }})
|
||||||
</div>
|
</div>
|
||||||
<member-template
|
<member-template
|
||||||
v-for="member in noneRoleOnlineMembers"
|
v-for="member in noneRoleOnlineMembers"
|
||||||
|
|
@ -134,6 +138,10 @@ export default {
|
||||||
}
|
}
|
||||||
return newRolesWithMembers;
|
return newRolesWithMembers;
|
||||||
},
|
},
|
||||||
|
defaultRole() {
|
||||||
|
const roles = this.$store.getters["servers/selectedServerRoles"];
|
||||||
|
return roles.find(r => r.default);
|
||||||
|
},
|
||||||
offlineMembers() {
|
offlineMembers() {
|
||||||
return this.members.filter(sm => sm.presense == 0);
|
return this.members.filter(sm => sm.presense == 0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -139,13 +139,17 @@ export default {
|
||||||
const roles = this.$store.getters["servers/roles"][
|
const roles = this.$store.getters["servers/roles"][
|
||||||
this.contextDetails.serverID
|
this.contextDetails.serverID
|
||||||
];
|
];
|
||||||
|
const map = roles
|
||||||
const map = roles.map(r => {
|
.filter(r => !r.default)
|
||||||
if (this.serverMember.roles && this.serverMember.roles.includes(r.id)) {
|
.map(r => {
|
||||||
return Object.assign({}, r, { hasRole: true });
|
if (
|
||||||
}
|
this.serverMember.roles &&
|
||||||
return r;
|
this.serverMember.roles.includes(r.id)
|
||||||
});
|
) {
|
||||||
|
return Object.assign({}, r, { hasRole: true });
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
});
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,27 +69,40 @@
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<div class="box" :class="{ checked: perm.hasPerm }" />
|
<div class="box" :class="{ checked: perm.hasPerm }" />
|
||||||
<div class="name">{{ perm.name }}</div>
|
<div>
|
||||||
|
<div class="name">{{ perm.name }}</div>
|
||||||
|
<div class="info">{{ perm.info }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="button"
|
class="button"
|
||||||
v-if="update.name || update.permissions || update.color"
|
v-if="update.name || update.permissions !== undefined || update.color"
|
||||||
@click="updateRole"
|
@click="updateRole"
|
||||||
>
|
>
|
||||||
Save Changes
|
Save Changes
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="button warn delete-server disabled"
|
class="button warn delete-server disabled"
|
||||||
v-if="!roles[selectedRoleIndex].deletable"
|
v-if="
|
||||||
|
!roles[selectedRoleIndex].deletable ||
|
||||||
|
roles[selectedRoleIndex].default
|
||||||
|
"
|
||||||
>
|
>
|
||||||
Cannot delete this role.
|
{{
|
||||||
|
roles[selectedRoleIndex].default
|
||||||
|
? "Cannot delete default role."
|
||||||
|
: "Cannot delete this role."
|
||||||
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="button warn delete-server"
|
class="button warn delete-server"
|
||||||
:class="{ disabled: deleteClicked }"
|
:class="{ disabled: deleteClicked }"
|
||||||
v-if="roles[selectedRoleIndex].deletable"
|
v-if="
|
||||||
|
roles[selectedRoleIndex].deletable &&
|
||||||
|
!roles[selectedRoleIndex].default === true
|
||||||
|
"
|
||||||
@click="deleteRole"
|
@click="deleteRole"
|
||||||
>
|
>
|
||||||
{{ deleteButtonConfirmed ? "ARE YOU SURE?" : "Delete Role" }}
|
{{ deleteButtonConfirmed ? "ARE YOU SURE?" : "Delete Role" }}
|
||||||
|
|
@ -222,7 +235,13 @@ export default {
|
||||||
const roles = this.$store.getters["servers/roles"][
|
const roles = this.$store.getters["servers/roles"][
|
||||||
this.server.server_id
|
this.server.server_id
|
||||||
];
|
];
|
||||||
|
if (!roles) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
return [...roles].sort((a, b) => {
|
return [...roles].sort((a, b) => {
|
||||||
|
if (b.default) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
return a.order - b.order;
|
return a.order - b.order;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -425,15 +444,20 @@ export default {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
.box {
|
.box {
|
||||||
height: 20px;
|
height: 30px;
|
||||||
width: 20px;
|
width: 30px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
background-color: rgb(255, 31, 31);
|
background-color: rgb(95, 95, 95);
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
&.checked {
|
&.checked {
|
||||||
background-color: rgb(31, 154, 255);
|
background-color: rgb(31, 154, 255);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.info {
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
opacity: 0.7;
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,7 @@ export default {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
|
|
|
||||||
|
|
@ -145,6 +145,7 @@ export default {
|
||||||
background: #04333f;
|
background: #04333f;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
.name {
|
.name {
|
||||||
margin-top: 9px;
|
margin-top: 9px;
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,12 @@ const actions = {
|
||||||
server_id: server_id
|
server_id: server_id
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
removeAllRoles({ commit }, server_id) {
|
||||||
|
commit("UPDATE_SERVER_ROLES", {
|
||||||
|
roles: [],
|
||||||
|
server_id: server_id
|
||||||
|
});
|
||||||
|
},
|
||||||
updateRole({ commit, state }, roleUpdates) {
|
updateRole({ commit, state }, roleUpdates) {
|
||||||
const updatedRoles = state.roles[roleUpdates.server_id].map(r => {
|
const updatedRoles = state.roles[roleUpdates.server_id].map(r => {
|
||||||
if (r.id === roleUpdates.id) {
|
if (r.id === roleUpdates.id) {
|
||||||
|
|
|
||||||
|
|
@ -392,6 +392,7 @@ const actions = {
|
||||||
context.dispatch("servers/removePresences", server_id);
|
context.dispatch("servers/removePresences", server_id);
|
||||||
context.dispatch("servers/removeServer", server_id);
|
context.dispatch("servers/removeServer", server_id);
|
||||||
context.dispatch("servers/removeNotifications", server_id);
|
context.dispatch("servers/removeNotifications", server_id);
|
||||||
|
context.dispatch("servers/removeAllRoles", server_id);
|
||||||
context.dispatch("servers/removeAllServerChannels", server_id);
|
context.dispatch("servers/removeAllServerChannels", server_id);
|
||||||
context.dispatch("deleteAllMessages", serverChannelIDs);
|
context.dispatch("deleteAllMessages", serverChannelIDs);
|
||||||
},
|
},
|
||||||
|
|
@ -502,6 +503,9 @@ const actions = {
|
||||||
["socket_server:updateRoles"](context, { roles }) {
|
["socket_server:updateRoles"](context, { roles }) {
|
||||||
// eslint-disable-next-line prettier/prettier
|
// eslint-disable-next-line prettier/prettier
|
||||||
context.dispatch("servers/setServerRoles", roles);
|
context.dispatch("servers/setServerRoles", roles);
|
||||||
|
},
|
||||||
|
["socket_server:roles"](context, { roles }) {
|
||||||
|
context.dispatch("servers/setServerRoles", roles);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
export const permissions = {
|
export const permissions = {
|
||||||
ADMIN: {
|
ADMIN: {
|
||||||
name: "Admin",
|
name: "Admin",
|
||||||
value: 1
|
value: 1,
|
||||||
|
info: "Enables ALL permissions"
|
||||||
},
|
},
|
||||||
SEND_MESSAGE: {
|
SEND_MESSAGES: {
|
||||||
name: "Send Message",
|
name: "Send Messages",
|
||||||
value: 2
|
value: 2,
|
||||||
|
info: "Send messages to server channels"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue