From ec1b039daaf60639770a62bb29badbc56ffea2d5 Mon Sep 17 00:00:00 2001 From: konrad Date: Sun, 2 Aug 2020 17:17:29 +0000 Subject: [PATCH] More avatar providers (#200) Reload the avatar after changing it Hide cropper after upload Fix aspect ratio Add loading variable Move avatar settings to seperate component Add avatar crop Fix avatar upload Add avatar file upload Add abstract methods for file upload Add saving avatar status Add avatar setting Co-authored-by: kolaente Reviewed-on: https://kolaente.dev/vikunja/frontend/pulls/200 --- package.json | 1 + src/App.vue | 3 +- src/components/user/avatar-settings.vue | 149 ++++++++++++++++++++++++ src/models/avatar.js | 9 ++ src/services/abstractService.js | 65 ++++++++++- src/services/attachment.js | 29 +---- src/services/avatar.js | 29 +++++ src/services/backgroundUpload.js | 31 +---- src/store/modules/auth.js | 5 + src/views/user/Settings.vue | 8 ++ yarn.lock | 24 ++++ 11 files changed, 295 insertions(+), 58 deletions(-) create mode 100644 src/components/user/avatar-settings.vue create mode 100644 src/models/avatar.js create mode 100644 src/services/avatar.js diff --git a/package.json b/package.json index b7604588f2..47521b4807 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "v-tooltip": "2.0.3", "verte": "0.0.12", "vue": "2.6.11", + "vue-advanced-cropper": "^0.16.10", "vue-drag-resize": "1.4.2", "vue-easymde": "1.2.2", "vue-shortkey": "3.1.7", diff --git a/src/App.vue b/src/App.vue index 6dbe32a5e4..37978996ed 100644 --- a/src/App.vue +++ b/src/App.vue @@ -44,7 +44,7 @@ Update Now
- + + + +
@@ -200,6 +203,8 @@ import {mapState} from 'vuex' + import AvatarSettings from '../../components/user/avatar-settings' + export default { name: 'Settings', data() { @@ -220,6 +225,9 @@ totpDisablePassword: '', } }, + components: { + AvatarSettings, + }, created() { this.passwordUpdateService = new PasswordUpdateService() this.passwordUpdate = new PasswordUpdateModel() diff --git a/yarn.lock b/yarn.lock index 1db981f276..77dd5afb6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3881,6 +3881,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + clean-css@4.2.x: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" @@ -4737,6 +4742,11 @@ de-indent@^1.0.2: resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= +debounce@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5179,6 +5189,11 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +easy-bem@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/easy-bem/-/easy-bem-1.0.2.tgz#3f759158c045465744900aa26ba8bd7d88d7a969" + integrity sha512-tHtLDhcEHZIMKdiiZElQoR8TcZ/6rvcNp7//93Vx/mqNLah9BOFGhhzTUfWLJs7uxZiKMdP/KzGOtzq14DrrqQ== + easy-stack@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788" @@ -12454,6 +12469,15 @@ vscode-uri@^1.0.6: resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.8.tgz#9769aaececae4026fb6e22359cb38946580ded59" integrity sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ== +vue-advanced-cropper@^0.16.10: + version "0.16.10" + resolved "https://registry.yarnpkg.com/vue-advanced-cropper/-/vue-advanced-cropper-0.16.10.tgz#2792003c3cf55fb028c6822aa6f50f18019f2741" + integrity sha512-xUr7tTpbm+EyrILgLinhxj3NrmJlhUgMCtsifEldwZ8vHyHCCKCnvjRsMpiAQWPLrfhjMwECA0U77Mu93tHRow== + dependencies: + classnames "^2.2.6" + debounce "^1.2.0" + easy-bem "^1.0.2" + vue-cli-plugin-apollo@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/vue-cli-plugin-apollo/-/vue-cli-plugin-apollo-0.21.3.tgz#520d336db0e88b26fe854833a555e2e29fe26571"