mirror of
https://github.com/danbulant/Nertivia-Client
synced 2026-07-05 02:50:46 +00:00
fixed some bugs, added roles update event.
This commit is contained in:
parent
229747949a
commit
58896f832c
7 changed files with 84 additions and 18 deletions
|
|
@ -51,7 +51,7 @@ export default {
|
||||||
},
|
},
|
||||||
roleColor() {
|
roleColor() {
|
||||||
if (!this.member || !this.member.roles) return undefined;
|
if (!this.member || !this.member.roles) return undefined;
|
||||||
const roles = this.$store.getters["servers/roles"][this.serverID];
|
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));
|
const filter = roles.filter(r => this.member.roles.includes(r.id));
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ export default {
|
||||||
return roleMembers;
|
return roleMembers;
|
||||||
},
|
},
|
||||||
noneRoleOnlineMembers() {
|
noneRoleOnlineMembers() {
|
||||||
const roles = this.$store.getters["servers/roles"][this.selectedServerID];
|
const roles = this.$store.getters["servers/selectedServerRoles"];
|
||||||
return this.onlineMembers.filter(sm => {
|
return this.onlineMembers.filter(sm => {
|
||||||
if (!sm.roles || !sm.roles.length) {
|
if (!sm.roles || !sm.roles.length) {
|
||||||
return sm;
|
return sm;
|
||||||
|
|
@ -113,7 +113,7 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
serverRoles() {
|
serverRoles() {
|
||||||
const roles = this.$store.getters["servers/roles"][this.selectedServerID];
|
const roles = this.$store.getters["servers/selectedServerRoles"];
|
||||||
let newRolesWithMembers = [];
|
let newRolesWithMembers = [];
|
||||||
|
|
||||||
if (!roles) return undefined;
|
if (!roles) return undefined;
|
||||||
|
|
|
||||||
|
|
@ -313,9 +313,7 @@ export default {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
roles() {
|
roles() {
|
||||||
return this.$store.getters["servers/roles"][
|
return this.$store.getters["servers/selectedServerRoles"];
|
||||||
this.$store.getters["servers/selectedServerID"]
|
|
||||||
];
|
|
||||||
},
|
},
|
||||||
serverMember() {
|
serverMember() {
|
||||||
const serverMembers = this.$store.getters["servers/serverMembers"];
|
const serverMembers = this.$store.getters["servers/serverMembers"];
|
||||||
|
|
|
||||||
|
|
@ -11,15 +11,25 @@
|
||||||
<div class="material-icons">add</div>
|
<div class="material-icons">add</div>
|
||||||
<div>Add Role</div>
|
<div>Add Role</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<draggable
|
||||||
class="role"
|
v-model="roles"
|
||||||
v-for="(role, index) in roles"
|
:animation="200"
|
||||||
:key="role.id"
|
:delay="mobile ? 400 : 0"
|
||||||
:class="{ selected: index === selectedRoleIndex }"
|
ghost-class="ghost"
|
||||||
@click="roleClick($event, index)"
|
@end="onEnd"
|
||||||
>
|
>
|
||||||
<div class="name" :style="{ color: role.color }">{{ role.name }}</div>
|
<div
|
||||||
</div>
|
class="role"
|
||||||
|
v-for="(role, index) in roles"
|
||||||
|
:key="role.id"
|
||||||
|
:class="{ selected: index === selectedRoleIndex }"
|
||||||
|
@click="roleClick($event, index)"
|
||||||
|
>
|
||||||
|
<div class="name" :style="{ color: role.color }">
|
||||||
|
{{ role.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</draggable>
|
||||||
</div>
|
</div>
|
||||||
<div class="details" v-if="roles && roles[selectedRoleIndex]">
|
<div class="details" v-if="roles && roles[selectedRoleIndex]">
|
||||||
<div class="input role-input">
|
<div class="input role-input">
|
||||||
|
|
@ -86,20 +96,30 @@
|
||||||
<script>
|
<script>
|
||||||
import ServerService from "@/services/ServerService";
|
import ServerService from "@/services/ServerService";
|
||||||
import ErrorsListTemplate from "@/components/app/errorsListTemplate";
|
import ErrorsListTemplate from "@/components/app/errorsListTemplate";
|
||||||
|
import { isMobile } from "@/utils/Mobile";
|
||||||
|
import draggable from "vuedraggable";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { ErrorsListTemplate },
|
components: { ErrorsListTemplate, draggable },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
deleteButtonConfirmed: false,
|
deleteButtonConfirmed: false,
|
||||||
deleteClicked: false,
|
deleteClicked: false,
|
||||||
selectedRoleIndex: 0,
|
selectedRoleIndex: 0,
|
||||||
errors: null,
|
errors: null,
|
||||||
|
mobile: isMobile(),
|
||||||
update: {
|
update: {
|
||||||
name: null
|
name: null
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async onEnd(test) {
|
||||||
|
const newIndex = test.newIndex;
|
||||||
|
const role = this.roles[newIndex];
|
||||||
|
const sendObj = { roleID: role.id, order: newIndex };
|
||||||
|
await ServerService.updateRolesPosition(this.server.server_id, sendObj);
|
||||||
|
},
|
||||||
async addRole() {
|
async addRole() {
|
||||||
await ServerService.createRole(this.server.server_id, {});
|
await ServerService.createRole(this.server.server_id, {});
|
||||||
},
|
},
|
||||||
|
|
@ -172,8 +192,23 @@ export default {
|
||||||
const serverID = this.$store.state.popoutsModule.serverSettings.serverID;
|
const serverID = this.$store.state.popoutsModule.serverSettings.serverID;
|
||||||
return this.$store.getters["servers/servers"][serverID];
|
return this.$store.getters["servers/servers"][serverID];
|
||||||
},
|
},
|
||||||
roles() {
|
roles: {
|
||||||
return this.$store.getters["servers/roles"][this.server.server_id];
|
get() {
|
||||||
|
const roles = this.$store.getters["servers/roles"][
|
||||||
|
this.server.server_id
|
||||||
|
];
|
||||||
|
return [...roles].sort((a, b) => {
|
||||||
|
return a.order - b.order;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.$store.dispatch(
|
||||||
|
"servers/setServerRoles",
|
||||||
|
value.map((v, i) => {
|
||||||
|
return { ...v, ...{ order: i } };
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
channels() {
|
channels() {
|
||||||
const serverID = this.$store.state.popoutsModule.serverSettings.serverID;
|
const serverID = this.$store.state.popoutsModule.serverSettings.serverID;
|
||||||
|
|
@ -199,6 +234,18 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
.sortable-drag {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
.ghost::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
background: white;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 3px;
|
||||||
|
}
|
||||||
.server-avatar {
|
.server-avatar {
|
||||||
background: grey;
|
background: grey;
|
||||||
height: 90px;
|
height: 90px;
|
||||||
|
|
@ -218,10 +265,11 @@ export default {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
.role {
|
.role {
|
||||||
|
position: relative;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: 0.3s;
|
transition: background 0.3s;
|
||||||
display: flex;
|
display: flex;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,9 @@ export default {
|
||||||
instance().patch(`/servers/${serverID}/roles/${roleID}`, data)
|
instance().patch(`/servers/${serverID}/roles/${roleID}`, data)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
updateRolesPosition(serverID, data) {
|
||||||
|
return wrapper(instance().patch(`/servers/${serverID}/roles`, data));
|
||||||
|
},
|
||||||
applyRoleToMember(serverID, roleID, memberID) {
|
applyRoleToMember(serverID, roleID, memberID) {
|
||||||
return wrapper(
|
return wrapper(
|
||||||
instance().patch(
|
instance().patch(
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,13 @@ const getters = {
|
||||||
},
|
},
|
||||||
selectedServerID(state) {
|
selectedServerID(state) {
|
||||||
return state.selectedServerID;
|
return state.selectedServerID;
|
||||||
|
},
|
||||||
|
selectedServerRoles() {
|
||||||
|
const serverRoles = state.roles[state.selectedServerID];
|
||||||
|
if (!serverRoles) return [];
|
||||||
|
return serverRoles.sort((a, b) => {
|
||||||
|
return a.order - b.order;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -62,6 +69,12 @@ const actions = {
|
||||||
server_id: role.server_id
|
server_id: role.server_id
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
setServerRoles({ commit }, rolesArr) {
|
||||||
|
commit("UPDATE_SERVER_ROLES", {
|
||||||
|
roles: rolesArr,
|
||||||
|
server_id: rolesArr[0].server_id
|
||||||
|
});
|
||||||
|
},
|
||||||
deleteRole({ commit, state }, { server_id, role_id }) {
|
deleteRole({ commit, state }, { server_id, role_id }) {
|
||||||
const serverRoles = [...state.roles[server_id]].filter(
|
const serverRoles = [...state.roles[server_id]].filter(
|
||||||
r => r.id !== role_id
|
r => r.id !== role_id
|
||||||
|
|
|
||||||
|
|
@ -498,6 +498,10 @@ const actions = {
|
||||||
["socket_serverMember:removeRole"](context, { role_id, uniqueID, server_id }) {
|
["socket_serverMember:removeRole"](context, { role_id, uniqueID, server_id }) {
|
||||||
// eslint-disable-next-line prettier/prettier
|
// eslint-disable-next-line prettier/prettier
|
||||||
context.dispatch("servers/removeMemberRole", { role_id, uniqueID, server_id });
|
context.dispatch("servers/removeMemberRole", { role_id, uniqueID, server_id });
|
||||||
|
},
|
||||||
|
["socket_server:updateRoles"](context, { roles }) {
|
||||||
|
// eslint-disable-next-line prettier/prettier
|
||||||
|
context.dispatch("servers/setServerRoles", roles);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue