- Upload your own pretty emojis for free! Emojis must be 1MB or less.
+ Upload your own pretty emojis for free! Emojis must be 3MB or less.
(png, jpg, gif)
@@ -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/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..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'
})`
}"
/>
@@ -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/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'})`
}"
/>