From b19b114d908d0a21384a7f5c6d00681f592eba15 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 11 Dec 2019 14:10:00 +0000 Subject: [PATCH] added admin tools --- src/components/app/MainNav.vue | 68 ++----- src/components/app/Navigation.vue | 10 +- src/components/app/Popouts/Popouts.vue | 5 +- .../app/Popouts/Popouts/AdminEditorPopout.vue | 183 ++++++++++++++++++ .../Popouts/SettingsPanels/MyThemes.vue | 10 +- src/components/app/Tabs/AdminPanel.vue | 48 +++++ .../app/Tabs/AdminPanel/OnlineUsersPanel.vue | 49 +++++ .../app/Tabs/AdminPanel/ThemeTemplate.vue | 110 +++++++++++ .../app/Tabs/AdminPanel/ThemesPanel.vue | 49 +++++ .../app/Tabs/AdminPanel/UserTemplate.vue | 73 +++++++ .../app/Tabs/AdminPanel/UsersPanel.vue | 49 +++++ src/services/adminService.js | 20 ++ .../modules/popoutsModule/popoutsModule.js | 1 + src/views/App.vue | 12 +- 14 files changed, 621 insertions(+), 66 deletions(-) create mode 100644 src/components/app/Popouts/Popouts/AdminEditorPopout.vue create mode 100644 src/components/app/Tabs/AdminPanel.vue create mode 100644 src/components/app/Tabs/AdminPanel/OnlineUsersPanel.vue create mode 100644 src/components/app/Tabs/AdminPanel/ThemeTemplate.vue create mode 100644 src/components/app/Tabs/AdminPanel/ThemesPanel.vue create mode 100644 src/components/app/Tabs/AdminPanel/UserTemplate.vue create mode 100644 src/components/app/Tabs/AdminPanel/UsersPanel.vue create mode 100644 src/services/adminService.js diff --git a/src/components/app/MainNav.vue b/src/components/app/MainNav.vue index 1d46891..4be5afe 100644 --- a/src/components/app/MainNav.vue +++ b/src/components/app/MainNav.vue @@ -53,6 +53,7 @@ import_contacts
error
+
+ security +
{ - return data[key]; - }) - .reverse(); - }, - set(value) { - const reversedServers = value.reverse(); - // convert array to json - const json = {}; - for (let index = 0; index < reversedServers.length; index++) { - const element = reversedServers[index]; - json[element.server_id] = element; - } - this.$store.dispatch("servers/setServers", json); - } - }, selectedServerID() { return this.$store.getters["servers/selectedServerID"]; }, diff --git a/src/components/app/Navigation.vue b/src/components/app/Navigation.vue index 719a291..6c25552 100644 --- a/src/components/app/Navigation.vue +++ b/src/components/app/Navigation.vue @@ -121,15 +121,7 @@ export default { } }, switchTab(index) { - localStorage.setItem("currentTab", index); - this.$store.dispatch("setCurrentTab", index); - if (index == 1) { - //1: direct message tab. - this.switchChannel(false); - } else if (index === 2) { - //2: server tab - this.switchChannel(true); - } + bus.$emit('tab:switch', index) }, openSettings() { this.$store.dispatch("setPopoutVisibility", { diff --git a/src/components/app/Popouts/Popouts.vue b/src/components/app/Popouts/Popouts.vue index 4179b39..e585203 100644 --- a/src/components/app/Popouts/Popouts.vue +++ b/src/components/app/Popouts/Popouts.vue @@ -16,6 +16,7 @@ +
@@ -42,6 +43,7 @@ const ServerInvitePopout = () => import('./Popouts/ServerInvitePopout.vue'); const ServerSettings = () => import('./Popouts/ServerSettingsPanels/ServerSettings.vue'); const GenericPopout = () => import('./Popouts/GenericPopout'); + const AdminCssEditor = () => import('./Popouts/AdminEditorPopout'); @@ -61,7 +63,8 @@ export default { messageContextMenu, ServerMemberContext, ServerContext, - AddFriend + AddFriend, + AdminCssEditor }, data() { diff --git a/src/components/app/Popouts/Popouts/AdminEditorPopout.vue b/src/components/app/Popouts/Popouts/AdminEditorPopout.vue new file mode 100644 index 0000000..42c7342 --- /dev/null +++ b/src/components/app/Popouts/Popouts/AdminEditorPopout.vue @@ -0,0 +1,183 @@ + + + + + + + diff --git a/src/components/app/Popouts/Popouts/SettingsPanels/MyThemes.vue b/src/components/app/Popouts/Popouts/SettingsPanels/MyThemes.vue index 48725e2..872a25c 100644 --- a/src/components/app/Popouts/Popouts/SettingsPanels/MyThemes.vue +++ b/src/components/app/Popouts/Popouts/SettingsPanels/MyThemes.vue @@ -11,7 +11,7 @@ />
-
+
explore
Explore
@@ -39,6 +39,7 @@ + + + diff --git a/src/components/app/Tabs/AdminPanel/OnlineUsersPanel.vue b/src/components/app/Tabs/AdminPanel/OnlineUsersPanel.vue new file mode 100644 index 0000000..796b274 --- /dev/null +++ b/src/components/app/Tabs/AdminPanel/OnlineUsersPanel.vue @@ -0,0 +1,49 @@ + + + + + + \ No newline at end of file diff --git a/src/components/app/Tabs/AdminPanel/ThemeTemplate.vue b/src/components/app/Tabs/AdminPanel/ThemeTemplate.vue new file mode 100644 index 0000000..2384c61 --- /dev/null +++ b/src/components/app/Tabs/AdminPanel/ThemeTemplate.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/src/components/app/Tabs/AdminPanel/ThemesPanel.vue b/src/components/app/Tabs/AdminPanel/ThemesPanel.vue new file mode 100644 index 0000000..b772ba9 --- /dev/null +++ b/src/components/app/Tabs/AdminPanel/ThemesPanel.vue @@ -0,0 +1,49 @@ + + + + + + \ No newline at end of file diff --git a/src/components/app/Tabs/AdminPanel/UserTemplate.vue b/src/components/app/Tabs/AdminPanel/UserTemplate.vue new file mode 100644 index 0000000..ce87657 --- /dev/null +++ b/src/components/app/Tabs/AdminPanel/UserTemplate.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/src/components/app/Tabs/AdminPanel/UsersPanel.vue b/src/components/app/Tabs/AdminPanel/UsersPanel.vue new file mode 100644 index 0000000..0b455d7 --- /dev/null +++ b/src/components/app/Tabs/AdminPanel/UsersPanel.vue @@ -0,0 +1,49 @@ + + + + + + \ No newline at end of file diff --git a/src/services/adminService.js b/src/services/adminService.js new file mode 100644 index 0000000..c0a73d5 --- /dev/null +++ b/src/services/adminService.js @@ -0,0 +1,20 @@ +import {instance, wrapper} from './Api'; + +export default { + fetchRecentCreatedUsers () { + return wrapper(instance().get(`admin/users/recent`)) + }, + fetchOnlineUsers() { + return wrapper(instance().get(`admin/users/online`)) + }, + fetchWaitingThemes() { + return wrapper(instance().get(`admin/themes/waiting`)) + }, + fetchTheme(id) { + return wrapper(instance().get(`admin/themes/${id}`)); + }, + approveTheme(id) { + return wrapper(instance().patch(`admin/themes/${id}/approve`)); + }, + +} \ No newline at end of file diff --git a/src/store/modules/popoutsModule/popoutsModule.js b/src/store/modules/popoutsModule/popoutsModule.js index 222d020..e5edbd2 100644 --- a/src/store/modules/popoutsModule/popoutsModule.js +++ b/src/store/modules/popoutsModule/popoutsModule.js @@ -49,6 +49,7 @@ const state = { serverID: null, uniqueID: null, creatorUniqueID: null, + id: null, x: null, y: null } diff --git a/src/views/App.vue b/src/views/App.vue index 7f82571..4e2641d 100644 --- a/src/views/App.vue +++ b/src/views/App.vue @@ -16,6 +16,7 @@ +
@@ -57,6 +58,11 @@ const Explore = () => ({ loading: Spinner, delay: 0 }); +const AdminPanel = () => ({ + component: import("./../components/app/Tabs/AdminPanel.vue"), + loading: Spinner, + delay: 0 +}); export default { name: "app", @@ -66,6 +72,7 @@ export default { ConnectingScreen, Popouts, News, + AdminPanel, ElectronFrameButtons, Explore, MainNav @@ -140,7 +147,7 @@ export default { css = exploreThemes.result.data.css; id = exploreThemes.result.data.id; } - if (privateThemes) { + if (privateThemes.ok) { css = privateThemes.result.data.css; id = privateThemes.result.data.id; } @@ -172,6 +179,9 @@ export default { bus.$on("title:change", title => { this.title = title; }); + bus.$on("tab:switch", tab => { + this.switchTab(tab); + }); this.setTheme(); },