From 95605c32f1a8d08d72eb60d34abead6067b79841 Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Mon, 19 Jun 2017 12:26:33 +0300 Subject: [PATCH] Automatic square cropping for avatar upload, preview of the new avatar. --- src/components/settings/settings.js | 30 ++++++++++++++++++---------- src/components/settings/settings.vue | 21 ++++--------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js index b8aa876b5e..8d6a671318 100644 --- a/src/components/settings/settings.js +++ b/src/components/settings/settings.js @@ -8,10 +8,9 @@ const settings = { hideAttachmentsInConvLocal: this.$store.state.config.hideAttachmentsInConv, hideNsfwLocal: this.$store.state.config.hideNsfw, muteWordsString: this.$store.state.config.muteWords.join('\n'), - previewfile: null, autoLoadLocal: this.$store.state.config.autoLoad, hoverPreviewLocal: this.$store.state.config.hoverPreview, - muteWordsString: this.$store.state.config.muteWords.join('\n') + previewfile: null } }, components: { @@ -30,20 +29,29 @@ const settings = { reader.onload = ({target}) => { const img = target.result this.previewfile = img - /*this.$store.state.api.backendInteractor.updateAvatar({params: {img}}).then((user) => { - if (!user.error) { - this.$store.commit('addNewUsers', [user]) - this.$store.commit('setCurrentUser', user) - } - })*/ } reader.readAsDataURL(file) }, submitAvatar () { - if (!this.previewfile) - return + if (!this.previewfile) { return } + const img = this.previewfile - this.$store.state.api.backendInteractor.updateAvatar({params: {img}}).then((user) => { + // eslint-disable-next-line no-undef + let imginfo = new Image() + let cropX, cropY, cropW, cropH + imginfo.src = this.previewfile + if (imginfo.height > imginfo.width) { + cropX = 0 + cropW = imginfo.width + cropY = Math.floor((imginfo.height - imginfo.width) / 2) + cropH = imginfo.width + } else { + cropY = 0 + cropH = imginfo.height + cropX = Math.floor((imginfo.width - imginfo.height) / 2) + cropW = imginfo.height + } + this.$store.state.api.backendInteractor.updateAvatar({params: {img, cropX, cropY, cropW, cropH}}).then((user) => { if (!user.error) { this.$store.commit('addNewUsers', [user]) this.$store.commit('setCurrentUser', user) diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue index f2442194e9..1abb178909 100644 --- a/src/components/settings/settings.vue +++ b/src/components/settings/settings.vue @@ -13,7 +13,7 @@

Your current avatar:

Set new avatar:

- +
@@ -71,7 +71,9 @@ } .new-avatar { - max-width: 100%; + object-fit: cover; + width: 128px; + height: 128px; border-radius: 5px; } @@ -80,21 +82,6 @@ min-height: 28px; width: 10em; } - - .cropper { - //position: absolute; - cursor: move; - width: 128px; - height: 128px; - border:1px solid #fff; - background-color: #000000; - .sub { - width: 100%; - height: 100%; - margin: -1px -1px -1px -1px ; - border:1px dashed #000; - } - } } .setting-list { list-style-type: none;