From 67502d7ea2d7825fb8c0b10f49029a0fa0f26e8e Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 11 Jan 2020 14:55:20 +0000 Subject: [PATCH 1/3] increased avatar upload size to 8mb --- .../Popouts/SettingsPanels/EditProfile.vue | 4 +- .../Popouts/SettingsPanels/MyProfile.vue | 56 ------------------- src/components/app/ServerList.vue | 2 + src/utils/changelog.js | 2 +- 4 files changed, 5 insertions(+), 59 deletions(-) diff --git a/src/components/app/Popouts/Popouts/SettingsPanels/EditProfile.vue b/src/components/app/Popouts/Popouts/SettingsPanels/EditProfile.vue index e4b0bfd..9bd6dea 100644 --- a/src/components/app/Popouts/Popouts/SettingsPanels/EditProfile.vue +++ b/src/components/app/Popouts/Popouts/SettingsPanels/EditProfile.vue @@ -122,11 +122,11 @@ export default { } const file = event.target.files[0]; const _this = this; - const maxSize = 2092000; + const maxSize = 8092000; if (file.size > maxSize) { return this.$store.dispatch( "setGenericMessage", - "Image is larger than 2MB" + "Image is larger than 8MB" ); } event.target.value = ""; diff --git a/src/components/app/Popouts/Popouts/SettingsPanels/MyProfile.vue b/src/components/app/Popouts/Popouts/SettingsPanels/MyProfile.vue index ba7d852..8ae716a 100644 --- a/src/components/app/Popouts/Popouts/SettingsPanels/MyProfile.vue +++ b/src/components/app/Popouts/Popouts/SettingsPanels/MyProfile.vue @@ -34,11 +34,6 @@ const Survey = () => import("./survey.vue"); const EditProfile = () => import("./EditProfile.vue"); -import AvatarUpload from "@/services/AvatarUpload.js"; -import config from "@/config.js"; -import path from "path"; -import { mapState } from "vuex"; - export default { components: { Survey, @@ -52,57 +47,6 @@ export default { show: false } }; - }, - methods: { - onProgress(percent) { - //update vue - console.log("Avatar upload progress: ", percent); - }, - async avatarBrowse(event) { - const file = event.target.files[0]; - event.target.value = ""; - const allowedFormats = [".png", ".jpeg", ".gif", ".jpg"]; - - if (!allowedFormats.includes(path.extname(file.name).toLowerCase())) { - this.alert.content = "Upload failed - Unsupported image file."; - return (this.alert.show = true); - } else if (file.size >= 2092000) { - // 2092000 = 2mb - this.alert.content = - "Upload failed - Image size must be less than 2 megabytes."; - return (this.alert.show = true); - } - const formData = new FormData(); - formData.append("avatar", file); - const { ok } = await AvatarUpload.uploadAvatar(formData, this.onProgress); - if (!ok) { - this.alert.content = - "Upload failed - Something went wrong. Try again later."; - return (this.alert.show = true); - } - }, - changePassword() { - this.alert.content = "Not implemented yet."; - return (this.alert.show = true); - }, - editAvatarBtn() { - if (!this.GDriveLinked) { - return this.$store.dispatch("setPopoutVisibility", { - name: "GDLinkMenu", - visibility: true - }); - } - this.$refs.avatarBrowser.click(); - } - }, - computed: { - ...mapState("settingsModule", ["GDriveLinked"]), - user() { - return this.$store.getters.user; - }, - avatar() { - return config.domain + "/avatars/" + this.$store.getters.user.avatar; - } } }; diff --git a/src/components/app/ServerList.vue b/src/components/app/ServerList.vue index 1174396..949657a 100644 --- a/src/components/app/ServerList.vue +++ b/src/components/app/ServerList.vue @@ -144,6 +144,7 @@ export default { display: flex; flex: 1; height: 100%; + overflow: auto; } .right { display: flex; @@ -166,6 +167,7 @@ export default { border-radius: 4px; margin: 10px; box-shadow: 0px 2px 12px rgba(0, 0, 0, 0.13); + flex-shrink: 0; } .extendBanner { height: 130px; diff --git a/src/utils/changelog.js b/src/utils/changelog.js index 8d5627c..3b19aa0 100644 --- a/src/utils/changelog.js +++ b/src/utils/changelog.js @@ -3,7 +3,7 @@ const config = [ version: 9.2, title: "Image cache, more role permissions!", shortTitle: "", - date: "08/01/2019", + date: "09/01/2019", headColor: "#007792", new: [ "Image cache has been implimented.", From a6d7ef79d57381fead5559388812e39ffd75fb1c Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 11 Jan 2020 15:20:45 +0000 Subject: [PATCH 2/3] changed the way how avatars show --- src/components/app/MemberTemplate.vue | 15 ++++++++++++--- src/components/app/MessageTemplate.vue | 2 +- src/components/app/MyMiniInformation.vue | 4 +++- src/components/app/ServerList.vue | 2 +- .../app/ServerTemplate/ServerTemplate.vue | 2 +- .../app/Tabs/Explore/serverTemplate.vue | 2 +- .../app/Tabs/Explore/themesTemplate.vue | 4 ++-- .../app/relationships/FriendsTemplate.vue | 15 ++++++++++++--- 8 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/components/app/MemberTemplate.vue b/src/components/app/MemberTemplate.vue index 848c66a..6cb66e3 100644 --- a/src/components/app/MemberTemplate.vue +++ b/src/components/app/MemberTemplate.vue @@ -2,13 +2,13 @@
diff --git a/src/components/app/ServerList.vue b/src/components/app/ServerList.vue index 949657a..e7159af 100644 --- a/src/components/app/ServerList.vue +++ b/src/components/app/ServerList.vue @@ -16,7 +16,7 @@ v-if="server && server.banner" :style="{ backgroundImage: `url(${bannerDomain}${server.banner}${ - bannerHover ? '' : '?type=png' + bannerHover ? '' : '?type=webp' })` }" /> diff --git a/src/components/app/ServerTemplate/ServerTemplate.vue b/src/components/app/ServerTemplate/ServerTemplate.vue index 4de0c2d..71e02c7 100644 --- a/src/components/app/ServerTemplate/ServerTemplate.vue +++ b/src/components/app/ServerTemplate/ServerTemplate.vue @@ -14,7 +14,7 @@
diff --git a/src/components/app/Tabs/Explore/serverTemplate.vue b/src/components/app/Tabs/Explore/serverTemplate.vue index 76845b7..e2b9d50 100644 --- a/src/components/app/Tabs/Explore/serverTemplate.vue +++ b/src/components/app/Tabs/Explore/serverTemplate.vue @@ -6,7 +6,7 @@ v-if="server.server.banner" :style="{ backgroundImage: `url(${bannerDomain + server.server.banner}${ - hover ? '' : '?type=png' + hover ? '' : '?type=webp' })` }" /> diff --git a/src/components/app/Tabs/Explore/themesTemplate.vue b/src/components/app/Tabs/Explore/themesTemplate.vue index 881aedd..f08737f 100644 --- a/src/components/app/Tabs/Explore/themesTemplate.vue +++ b/src/components/app/Tabs/Explore/themesTemplate.vue @@ -6,7 +6,7 @@ class="background-dark" :style="{ backgroundImage: `url(${bannerDomain + - theme.screenshot}${'?type=png'})` + theme.screenshot}${'?type=webp'})` }" />
@@ -76,7 +76,7 @@ export default { bannerImageClicked() { this.$store.dispatch( "setImagePreviewURL", - this.bannerDomain + this.theme.screenshot + "?type=png" + this.bannerDomain + this.theme.screenshot + "?type=webp" ); }, unApplyButton() { diff --git a/src/components/app/relationships/FriendsTemplate.vue b/src/components/app/relationships/FriendsTemplate.vue index 09a6b58..7a34d6d 100644 --- a/src/components/app/relationships/FriendsTemplate.vue +++ b/src/components/app/relationships/FriendsTemplate.vue @@ -3,7 +3,7 @@ class="friend" :class="{ selected: uniqueIDSelected, tree }" @click="openChat" - @mouseover="hover = true" + @mouseover="mouseOverEvent" @mouseleave="hover = false" >
@@ -53,9 +53,13 @@ export default { ], data() { return { - hover: false + hover: false, + isGif: false }; }, + mounted() { + this.isGif = this.userAvatar.endsWith(".gif"); + }, computed: { notifications() { const channelID = this.$props.channelID; @@ -97,6 +101,11 @@ export default { } }, methods: { + mouseOverEvent() { + if (this.isGif) { + this.hover = true; + } + }, async closeChannel() { this.channelID; await channelService.delete(this.channelID); From a54e494ec7d3a8b98debca9e3d3111af2a8ee3f5 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 13 Jan 2020 11:50:34 +0000 Subject: [PATCH 3/3] made chances to emoji upload and more --- src/components/app/MessageTemplate.vue | 17 ++- .../Popouts/ServerSettingsPanels/General.vue | 2 +- .../Popouts/SettingsPanels/ManageEmojis.vue | 128 ++++++++---------- src/services/customEmoji.js | 17 +-- 4 files changed, 76 insertions(+), 88 deletions(-) diff --git a/src/components/app/MessageTemplate.vue b/src/components/app/MessageTemplate.vue index 121f55f..ef931a2 100644 --- a/src/components/app/MessageTemplate.vue +++ b/src/components/app/MessageTemplate.vue @@ -1,5 +1,9 @@ @@ -67,14 +50,13 @@ export default { components: {}, data() { return { - alert: { - content: "", - show: false - }, domain: config.domain + "/files/" }; }, methods: { + errorBox(msg) { + return this.$store.dispatch("setGenericMessage", msg); + }, keyDownEvent(event) { const keyCode = event.keyCode; if (keyCode == 13) { @@ -83,61 +65,66 @@ export default { }, async blurEvent(emojiID, event) { // send put request - const { ok, error } = await customEmoji.put({ + const { ok } = await customEmoji.put({ emojiID, name: event.target.value }); if (!ok) { - this.alert.content = - "Upload failed - " + error.response.data.message || - "Something weng wrong. Try again later."; - return (this.alert.show = true); + this.errorBox("Something weng wrong. Try again later."); + return; } }, - onProgress(percent) { - //update vue - console.log("emoji upload progress: ", percent); - }, async emojiBrowse(event) { const file = event.target.files[0]; event.target.value = ""; const allowedFormats = [".png", ".jpeg", ".gif", ".jpg"]; if (!allowedFormats.includes(path.extname(file.name).toLowerCase())) { - this.alert.content = "Upload failed - Unsupported image file."; - return (this.alert.show = true); - } else if (file.size >= 1048576) { - // 1048576 = 1mb - this.alert.content = - "Upload failed - Image size must be less than 1 megabytes."; - return (this.alert.show = true); + this.errorBox("Upload failed - Unsupported image file."); + return; + } else if (file.size >= 3048576) { + // 3048576 = 3mb + this.errorBox( + "Upload failed - Image size must be less than 1 megabytes." + ); + return; } - const formData = new FormData(); - //check if emoji name is already used by twemoji - const fileName = path.basename(file.name, path.extname(file.name)); - const emojiExists = emojiParser.allEmojis.find(e => - e.shortcodes.find(ee => ee === fileName.toLowerCase()) - ); - if (emojiExists) { - formData.append( - "emoji", - file, - `${fileName.substring(0, 28)}-1${path.extname(file.name)}` + let reader = new FileReader(); + reader.readAsDataURL(file); + const _this = this; + reader.onload = async function() { + //check if emoji name is already used by twemoji + const fileName = path.basename(file.name, path.extname(file.name)); + + const emojiExists = emojiParser.allEmojis.find(e => + e.shortcodes.find(ee => ee === fileName.toLowerCase()) ); - } else { - formData.append( - "emoji", - file, - `${fileName.substring(0, 30)}${path.extname(file.name)}` - ); - } - const { ok, error } = await customEmoji.post(formData, this.onProgress); - if (!ok) { - this.alert.content = - "Upload failed - " + error.response.data.message || - "Something weng wrong. Try again later."; - return (this.alert.show = true); - } + + let finalEmojiName = () => { + if (emojiExists) { + return `${fileName.substring(0, 28)}-1`; + } else { + return fileName.substring(0, 30); + } + }; + + const { ok, error } = await customEmoji.post({ + name: finalEmojiName(), + avatar: reader.result + }); + if (!ok) { + if (error.response && error.response.data) { + _this.errorBox(error.response.data.message); + } else { + _this.errorBox("Something went wrong. Try again later."); + } + return; + } + }; + reader.onerror = function(error) { + console.log("Error: ", error); + _this.errorBox("Something went wrong. Try again later."); + }; }, addEmojiBtn() { if (!this.GDriveLinked) { @@ -149,17 +136,19 @@ export default { this.$refs.emojiBrowser.click(); }, async removeEmoji(emojiID) { - const { ok, error } = await customEmoji.delete(emojiID); + const { ok } = await customEmoji.delete(emojiID); if (!ok) { - this.alert.content = - "Upload failed - " + error.response.data.message || - "Something weng wrong. Try again later."; - return (this.alert.show = true); + this.errorBox("Something weng wrong. Try again later."); + return; } } }, computed: { - ...mapState("settingsModule", ["GDriveLinked", "customEmojis"]) + ...mapState("settingsModule", ["GDriveLinked"]), + customEmojis() { + const customEmojis = [...this.$store.state.settingsModule.customEmojis]; + return customEmojis ? customEmojis.reverse() : []; + } } }; @@ -219,6 +208,7 @@ input:focus { width: 100%; height: 100%; margin-bottom: 20px; + overflow: hidden; } .emojis-list { diff --git a/src/services/customEmoji.js b/src/services/customEmoji.js index 49e026f..b28020b 100644 --- a/src/services/customEmoji.js +++ b/src/services/customEmoji.js @@ -1,21 +1,8 @@ import { instance, wrapper } from "./Api"; export default { - post(data, onProgress) { - const url = `/settings/emoji`; - let config = { - onUploadProgress(progressEvent) { - var percentCompleted = Math.round( - (progressEvent.loaded * 100) / progressEvent.total - ); - - // execute the callback - if (onProgress) onProgress(percentCompleted); - - return percentCompleted; - } - }; - return wrapper(instance().post(url, data, config)); + post(data) { + return wrapper(instance().post("/settings/emoji", data)); }, delete(emojiID) { return wrapper(instance().delete(`/settings/emoji`, { data: { emojiID } }));