From fabbdc57c06c8d7cc6c2f0917e95d462c58b26e3 Mon Sep 17 00:00:00 2001 From: supertiger1234 Date: Mon, 17 Feb 2020 17:52:49 +0000 Subject: [PATCH] merged server and dm tab component --- src/components/app/FriendsList.vue | 105 +++++----- src/components/app/MainNav.vue | 2 +- src/components/app/MembersList.vue | 1 - src/components/app/MessagePanel/Heading.vue | 11 +- src/components/app/ServerList.vue | 92 ++++----- src/components/app/Tabs/DirectMessage.vue | 85 -------- src/components/app/Tabs/Explore.vue | 4 + .../Tabs/{Servers.vue => ServerAndDMTab.vue} | 41 +++- .../app/relationships/FriendsTab.vue | 181 ++++++++++++++++++ .../app/relationships/FriendsTemplate.vue | 115 +++++------ .../app/relationships/OfflineFriends.vue | 78 -------- .../app/relationships/OnlineFriends.vue | 95 --------- .../app/relationships/PendingFriends.vue | 73 ------- .../app/relationships/PendingTemplate.vue | 48 ++--- ...RecentFriends.vue => RecentFriendsTab.vue} | 18 +- src/utils/changelog.js | 7 + src/views/App.vue | 18 +- 17 files changed, 419 insertions(+), 555 deletions(-) delete mode 100644 src/components/app/Tabs/DirectMessage.vue rename src/components/app/Tabs/{Servers.vue => ServerAndDMTab.vue} (71%) create mode 100644 src/components/app/relationships/FriendsTab.vue delete mode 100644 src/components/app/relationships/OfflineFriends.vue delete mode 100644 src/components/app/relationships/OnlineFriends.vue delete mode 100644 src/components/app/relationships/PendingFriends.vue rename src/components/app/relationships/{RecentFriends.vue => RecentFriendsTab.vue} (90%) diff --git a/src/components/app/FriendsList.vue b/src/components/app/FriendsList.vue index 6df3f85..b81aa39 100644 --- a/src/components/app/FriendsList.vue +++ b/src/components/app/FriendsList.vue @@ -1,62 +1,61 @@ diff --git a/src/components/app/Tabs/Explore.vue b/src/components/app/Tabs/Explore.vue index 0976d81..a99c24b 100644 --- a/src/components/app/Tabs/Explore.vue +++ b/src/components/app/Tabs/Explore.vue @@ -371,6 +371,9 @@ export default { background: linear-gradient(to bottom, #00477e 0, #016dc0); height: 100%; } + .left-panel .content { + border-radius: 0; + } .darken::after { content: ""; position: absolute; @@ -382,4 +385,5 @@ export default { background: rgba(0, 0, 0, 0.4); } } + diff --git a/src/components/app/Tabs/Servers.vue b/src/components/app/Tabs/ServerAndDMTab.vue similarity index 71% rename from src/components/app/Tabs/Servers.vue rename to src/components/app/Tabs/ServerAndDMTab.vue index 5c4c028..a2c96bc 100644 --- a/src/components/app/Tabs/Servers.vue +++ b/src/components/app/Tabs/ServerAndDMTab.vue @@ -3,18 +3,23 @@ class="direct-message-tab" :class="{ darken: showLeftPanel || showMembersPanel }" > - - +
+ > + + + +
- + import("@/components/app/FriendsList.vue"); +const MembersList = () => import("@/components/app/MembersList.vue"); +const ServerList = () => import("@/components/app/ServerList.vue"); export default { components: { ServerList, + FriendsList, MessagePanel, - MembersList + MembersList, + Navigation }, data() { return { @@ -59,7 +68,9 @@ export default { methods: { hideLeftPanel(event) { if (this.showLeftPanel) { - if (event.target.closest(".show-menu-button") == null) { + const closestMenuBtn = event.target.closest(".show-menu-button"); + const closestNavBtn = event.target.closest(".main.navigation"); + if (closestMenuBtn === null && closestNavBtn === null) { this.showLeftPanel = false; } } @@ -73,6 +84,9 @@ export default { } }, computed: { + currentTab() { + return this.$store.getters.currentTab; + }, selectedServerID() { return this.$store.getters["servers/selectedServerID"]; } @@ -86,6 +100,13 @@ export default { } .left-panel { z-index: 2; + height: 100%; + width: 340px; + max-width: calc(100% - 60px); + flex-shrink: 0; + display: flex; + flex-direction: row; + z-index: 1; } .slide-left-enter-active, diff --git a/src/components/app/relationships/FriendsTab.vue b/src/components/app/relationships/FriendsTab.vue new file mode 100644 index 0000000..e6c5f08 --- /dev/null +++ b/src/components/app/relationships/FriendsTab.vue @@ -0,0 +1,181 @@ + + + + diff --git a/src/components/app/relationships/FriendsTemplate.vue b/src/components/app/relationships/FriendsTemplate.vue index 3f0ce3f..a1b4be5 100644 --- a/src/components/app/relationships/FriendsTemplate.vue +++ b/src/components/app/relationships/FriendsTemplate.vue @@ -1,36 +1,38 @@ @@ -41,16 +43,7 @@ import statuses from "@/utils/statuses"; import { bus } from "@/main"; export default { - // tree will add padding to the left. - props: [ - "username", - "tag", - "channelID", - "uniqueID", - "recipient", - "tree", - "recents" - ], + props: ["friend", "recents", "recipient"], data() { return { hover: false, @@ -62,15 +55,18 @@ export default { }, computed: { notifications() { - const channelID = this.$props.channelID; const channels = this.$store.getters.channels; + const recipient = this.recipient; + const notifications = this.$store.getters.notifications.find(function(e) { - if (channels[e.channelID] && channels[e.channelID].server_id) return; - return e.channelID == channelID; + const channel = channels[e.channelID]; + if (channel && channel.server_id) return; + return e.sender.uniqueID === recipient.uniqueID; }); + if ( !notifications || - (this.$props.channelID === this.$store.getters.selectedChannelID && + (this.friend.channelID === this.$store.getters.selectedChannelID && document.hasFocus()) ) return; @@ -107,8 +103,7 @@ export default { } }, async closeChannel() { - this.channelID; - await channelService.delete(this.channelID); + await channelService.delete(this.friend.channelID); }, async openChat(event) { if ( @@ -125,12 +120,12 @@ export default { document.hasFocus() ) { this.$socket.client.emit("notification:dismiss", { - channelID: this.channelID + channelID: this.friend.channelID }); } this.$store.dispatch("openChat", { uniqueID: this.recipient.uniqueID, - channelID: this.channelID, + channelID: this.friend.channelID, channelName: this.recipient.username }); }, @@ -149,26 +144,32 @@ export default { text-overflow: ellipsis; } .friend { - color: rgba(255, 255, 255, 0.7); - padding: 5px; + height: 50px; + flex-shrink: 0; display: flex; - height: 34px; + align-items: center; + width: 100%; +} +.wrapper { + color: rgba(255, 255, 255, 0.7); + display: flex; + height: 45px; + width: 100%; transition: 0.3s; position: relative; overflow: hidden; cursor: pointer; - margin: 5px; border-radius: 4px; -} -.tree { - padding-left: 22px; + padding-left: 10px; + margin-left: 3px; + margin-right: 3px; } -.friend:hover { +.wrapper:hover { background-color: rgba(0, 0, 0, 0.2); color: white; } -.friend.selected { +.wrapper.selected { background-color: rgba(0, 0, 0, 0.4); color: white; } @@ -227,7 +228,7 @@ export default { transition: 0.3s; } -.friend:hover .status { +.wrapper:hover .status { opacity: 1; bottom: -4px; } @@ -239,7 +240,7 @@ export default { color: #b7cbce; height: 0; } -.friend:hover .status-name { +.wrapper:hover .status-name { opacity: 1; height: 13px; } @@ -256,7 +257,7 @@ export default { .close-button:hover { color: white; } -.friend:hover .close-button { +.wrapper:hover .close-button { display: flex; } diff --git a/src/components/app/relationships/OfflineFriends.vue b/src/components/app/relationships/OfflineFriends.vue deleted file mode 100644 index 2dcf993..0000000 --- a/src/components/app/relationships/OfflineFriends.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - diff --git a/src/components/app/relationships/OnlineFriends.vue b/src/components/app/relationships/OnlineFriends.vue deleted file mode 100644 index 3481f5f..0000000 --- a/src/components/app/relationships/OnlineFriends.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - diff --git a/src/components/app/relationships/PendingFriends.vue b/src/components/app/relationships/PendingFriends.vue deleted file mode 100644 index 920da49..0000000 --- a/src/components/app/relationships/PendingFriends.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - - diff --git a/src/components/app/relationships/PendingTemplate.vue b/src/components/app/relationships/PendingTemplate.vue index b24d311..7088bf1 100644 --- a/src/components/app/relationships/PendingTemplate.vue +++ b/src/components/app/relationships/PendingTemplate.vue @@ -7,13 +7,13 @@ />
- {{ $props.username }} + {{ friend.recipient.username }}
-
@{{ $props.tag }}
+
@{{ friend.recipient.tag }}
@@ -34,10 +34,11 @@ import RelationshipService from "@/services/RelationshipService.js"; import config from "@/config.js"; export default { - props: ["username", "tag", "status", "uniqueID"], + props: ["friend"], computed: { user() { - return this.$store.getters.user.friends[this.$props.uniqueID].recipient; + return this.$store.getters.user.friends[this.friend.recipient.uniqueID] + .recipient; }, userAvatar() { return config.domain + "/avatars/" + this.user.avatar; @@ -45,13 +46,16 @@ export default { }, methods: { deny() { - RelationshipService.delete(this.$props.uniqueID); + RelationshipService.delete(this.friend.recipient.uniqueID); }, accept() { - RelationshipService.put(this.$props.uniqueID); + RelationshipService.put(this.friend.recipient.uniqueID); }, openUserInformation() { - this.$store.dispatch("setUserInformationPopout", this.uniqueID); + this.$store.dispatch( + "setUserInformationPopout", + this.friend.recipient.uniqueID + ); } } }; @@ -59,7 +63,7 @@ export default { diff --git a/src/components/app/relationships/RecentFriends.vue b/src/components/app/relationships/RecentFriendsTab.vue similarity index 90% rename from src/components/app/relationships/RecentFriends.vue rename to src/components/app/relationships/RecentFriendsTab.vue index 4462a35..c3aa7af 100644 --- a/src/components/app/relationships/RecentFriends.vue +++ b/src/components/app/relationships/RecentFriendsTab.vue @@ -1,11 +1,11 @@