diff --git a/src/components/ProfilePictureTemplate.vue b/src/components/ProfilePictureTemplate.vue
index 27e5b89..b498363 100644
--- a/src/components/ProfilePictureTemplate.vue
+++ b/src/components/ProfilePictureTemplate.vue
@@ -54,7 +54,7 @@ export default {
diff --git a/src/components/app/MembersList.vue b/src/components/app/MembersList.vue
index 4cd8684..3ac6130 100644
--- a/src/components/app/MembersList.vue
+++ b/src/components/app/MembersList.vue
@@ -1,12 +1,41 @@
+
+
diff --git a/src/components/app/MessagePanel/Heading.vue b/src/components/app/MessagePanel/Heading.vue
index c4bdfed..bc24ad3 100644
--- a/src/components/app/MessagePanel/Heading.vue
+++ b/src/components/app/MessagePanel/Heading.vue
@@ -10,7 +10,7 @@
-
@@ -36,6 +36,11 @@ export default {
toggleMembersPanel() {
bus.$emit("toggleMembersPanel");
}
+ },
+ computed: {
+ selectedServerID() {
+ return this.$store.getters['servers/selectedServerID'];
+ }
}
};
diff --git a/src/components/app/ServerList.vue b/src/components/app/ServerList.vue
index 7a56f43..4b96fc8 100644
--- a/src/components/app/ServerList.vue
+++ b/src/components/app/ServerList.vue
@@ -31,10 +31,14 @@ export default {
},
toggleChannel(serverID, event) {
if (!event.target.closest('.small-view') || event.target.closest('.options-context-button') || event.target.closest('.options-context-menu')) return;
- if (this.openedServer === serverID)
+ if (this.openedServer === serverID) {
this.openedServer = null;
- else
+ this.$store.dispatch('servers/setSelectedServerID', null)
+ }
+ else{
this.openedServer = serverID;
+ this.$store.dispatch('servers/setSelectedServerID', serverID)
+ }
}
},
computed: {
diff --git a/src/store/modules/serversModule.js b/src/store/modules/serversModule.js
index 1e3909d..55b200c 100644
--- a/src/store/modules/serversModule.js
+++ b/src/store/modules/serversModule.js
@@ -3,8 +3,10 @@ import { router } from "./../../router";
import Vue from "vue";
const state = {
+ selectedServerID: null,
servers: {},
- channelsIDs: {}
+ channelsIDs: {},
+ serverMembers: [],
};
const getters = {
@@ -13,6 +15,12 @@ const getters = {
},
channelsIDs(state) {
return state.channelsIDs;
+ },
+ serverMembers(state) {
+ return state.serverMembers;
+ },
+ selectedServerID(state) {
+ return state.selectedServerID
}
};
@@ -29,13 +37,24 @@ const actions = {
removeServer(context, serverID) {
context.commit('REMOVE_SERVER', serverID);
},
+ addServerMembers(context, serverMembersArr) {
+ context.commit('ADD_SERVER_MEMBERS', serverMembersArr)
+ },
+ removeServerMember (context, {uniqueID, server_id}) {
+ context.commit('REMOVE_SERVER_MEMBER', {uniqueID, server_id})
+ },
+ setSelectedServerID(context, serverID) {
+ context.commit('SET_SELECTED_SERVER_ID', serverID)
+ },
+ addServerMember(context, serverMember) {
+ context.commit('ADD_SERVER_MEMBER', serverMember)
+ }
};
const mutations = {
SET_CHANNELS_IDS(state, {serverID, channelsIDs}) {
const previousChannels = state.channelsIDs[serverID] || []
Vue.set(state.channelsIDs, serverID, [...new Set([...previousChannels, ...channelsIDs])]);
-
},
SET_SERVERS(state, servers) {
state.servers = servers;
@@ -46,6 +65,25 @@ const mutations = {
REMOVE_SERVER(state, serverID) {
Vue.delete(state.servers, serverID);
},
+ ADD_SERVER_MEMBERS(state, serverMembersArr) {
+
+ for (let members of serverMembersArr) {
+ if (!state.serverMembers.find(sm => sm.member.uniqueID === members.member.uniqueID && sm.server_id === members.server_id)){
+ state.serverMembers.push(members)
+ }
+ }
+ },
+ ADD_SERVER_MEMBER(state, serverMember) {
+ const exists = state.serverMembers.find(sm => sm.member.uniqueID === serverMember.member.uniqueID && sm.server_id === serverMember.server_id)
+ if (exists) return;
+ state.serverMembers.push(serverMember);
+ },
+ REMOVE_SERVER_MEMBER(state, {uniqueID, server_id}) {
+ state.serverMembers = state.serverMembers.filter(m => m.member.uniqueID !== uniqueID && m.server_id === server_id);
+ },
+ SET_SELECTED_SERVER_ID(state, serverID){
+ state.selectedServerID = serverID;
+ }
};
export default {
diff --git a/src/store/modules/socketIOModule.js b/src/store/modules/socketIOModule.js
index 8cd326b..31eecfb 100644
--- a/src/store/modules/socketIOModule.js
+++ b/src/store/modules/socketIOModule.js
@@ -17,7 +17,7 @@ const actions = {
},
socket_success(context, data) {
- const {message, user, dms, notifications, currentFriendStatus, settings} = data;
+ const {message, user, serverMembers, dms, notifications, currentFriendStatus, settings} = data;
const friendsArray = user.friends;
const friendObject = {};
@@ -64,6 +64,12 @@ const actions = {
context.commit('user', data.user)
+
+
+ //server members
+ context.dispatch( 'servers/addServerMembers', serverMembers )
+
+
// convert dms array to object
const channelsObject = {}
if (dms && dms.length >=1) {
@@ -169,6 +175,18 @@ const actions = {
['socket_server:leave'](context, {server_id}) {
context.dispatch('servers/removeServer', server_id)
},
+ ['socket_server:memberAdd'](context, {serverMember}) { // member_add
+ context.dispatch('servers/addServerMember', serverMember)
+ console.log("someone joined")
+ },
+ ['socket_server:memberRemove'](context, {uniqueID, server_id}) { // member_remove
+ context.dispatch('servers/removeServerMember', {uniqueID, server_id})
+ console.log("Someone left")
+ },
+ ['socket_server:members'](context, {serverMembers}) { // members
+ context.dispatch('servers/addServerMembers', serverMembers)
+ console.log("server members ")
+ },
}
export default {
diff --git a/src/utils/changelog.js b/src/utils/changelog.js
index e2035e6..bc1a3d2 100644
--- a/src/utils/changelog.js
+++ b/src/utils/changelog.js
@@ -13,6 +13,21 @@
}
const config = [
+ {
+ version: 4.6,
+ title: "Server Members list and bug fixes",
+ shortTitle: "Server Members list and bug fixes",
+ date: "20/06/2019",
+ headColor: "rgba(0, 102, 170, 0.77)",
+ new: [
+ "Server members are now shown!",
+ "Adjusted some padding with the tabs."
+ ],
+ fix: [
+ "Fixed a vulnerability where after leaving a server, you could still send messages.",
+ ],
+ next: ["Online status for server members list."]
+ },
{
version: 4.5,
title: "Server bug fixes",
diff --git a/src/views/App.vue b/src/views/App.vue
index 749ae67..e8b85f1 100644
--- a/src/views/App.vue
+++ b/src/views/App.vue
@@ -227,8 +227,7 @@ export default {
display: flex;
overflow-y: hidden;
overflow-x: auto;
- height: 35px;
- max-width: 479px;
+ max-width: 495px;
flex-basis: auto; /* default value */
flex-grow: 1;
-webkit-app-region: no-drag;
@@ -246,13 +245,14 @@ export default {
margin-bottom: 0;
background: rgba(0, 0, 0, 0.63);
color: white;
- padding: 5px;
+ padding: 7px;
border-top-right-radius: 5px;
border-top-left-radius: 5px;
cursor: default;
user-select: none;
transition: 0.3s;
-webkit-app-region: no-drag;
+ margin-top: 5px;
}
.tab.selected {
background: rgba(71, 71, 71, 0.637);
@@ -291,11 +291,6 @@ export default {
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
-@media (max-width: 470px) {
- .tabs {
- height: 40px;
- }
-}