summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHiramiya <Hiramiya@users.noreply.github.com>2018-08-28 09:08:15 +0100
committerGitHub <noreply@github.com>2018-08-28 09:08:15 +0100
commit85188b5de2bba86b18609a26e5c2a0d11bf37ed3 (patch)
tree865a4bdb4c45e05374e3d95c783e4563c8555603 /src
parentRemove temp border change (diff)
parentMerge pull request #2484 from syuilo/greenkeeper/nan-2.11.0 (diff)
downloadsharkey-85188b5de2bba86b18609a26e5c2a0d11bf37ed3.tar.gz
sharkey-85188b5de2bba86b18609a26e5c2a0d11bf37ed3.tar.bz2
sharkey-85188b5de2bba86b18609a26e5c2a0d11bf37ed3.zip
Merge pull request #3 from syuilo/develop
match main repo
Diffstat (limited to 'src')
-rw-r--r--src/client/app/desktop/api/update-avatar.ts67
-rw-r--r--src/client/app/desktop/api/update-banner.ts14
-rw-r--r--src/client/app/desktop/views/pages/user/user.friends.vue1
-rw-r--r--src/client/app/desktop/views/pages/user/user.photos.vue1
4 files changed, 59 insertions, 24 deletions
diff --git a/src/client/app/desktop/api/update-avatar.ts b/src/client/app/desktop/api/update-avatar.ts
index 83820f92bd..f07dc623f2 100644
--- a/src/client/app/desktop/api/update-avatar.ts
+++ b/src/client/app/desktop/api/update-avatar.ts
@@ -3,9 +3,22 @@ import { apiUrl } from '../../config';
import CropWindow from '../views/components/crop-window.vue';
import ProgressDialog from '../views/components/progress-dialog.vue';
-export default (os: OS) => (cb, file = null) => {
- const fileSelected = file => {
+export default (os: OS) => {
+ const cropImage = file => new Promise((resolve, reject) => {
+
+ var regex = RegExp('\.(jpg|jpeg|png|gif|webp|bmp|tiff)$')
+ if(!regex.test(file.name) ) {
+ os.apis.dialog({
+ title: '%fa:info-circle% %i18n:desktop.invalid-filetype%',
+ text: null,
+ actions: [{
+ text: '%i18n:common.got-it%'
+ }]
+ });
+ reject
+ }
+
const w = os.new(CropWindow, {
image: file,
title: '%i18n:desktop.avatar-crop-title%',
@@ -19,27 +32,29 @@ export default (os: OS) => (cb, file = null) => {
os.api('drive/folders/find', {
name: '%i18n:desktop.avatar%'
- }).then(iconFolder => {
- if (iconFolder.length === 0) {
+ }).then(avatarFolder => {
+ if (avatarFolder.length === 0) {
os.api('drive/folders/create', {
name: '%i18n:desktop.avatar%'
}).then(iconFolder => {
- upload(data, iconFolder);
+ resolve(upload(data, iconFolder));
});
} else {
- upload(data, iconFolder[0]);
+ resolve(upload(data, avatarFolder[0]));
}
});
});
w.$once('skipped', () => {
- set(file);
+ resolve(file);
});
+ w.$once('cancelled', reject);
+
document.body.appendChild(w.$el);
- };
+ });
- const upload = (data, folder) => {
+ const upload = (data, folder) => new Promise((resolve, reject) => {
const dialog = os.new(ProgressDialog, {
title: '%i18n:desktop.uploading-avatar%'
});
@@ -52,18 +67,19 @@ export default (os: OS) => (cb, file = null) => {
xhr.onload = e => {
const file = JSON.parse((e.target as any).response);
(dialog as any).close();
- set(file);
+ resolve(file);
};
+ xhr.onerror = reject;
xhr.upload.onprogress = e => {
if (e.lengthComputable) (dialog as any).update(e.loaded, e.total);
};
xhr.send(data);
- };
+ });
- const set = file => {
- os.api('i/update', {
+ const setAvatar = file => {
+ return os.api('i/update', {
avatarId: file.id
}).then(i => {
os.store.commit('updateIKeyValue', {
@@ -83,18 +99,21 @@ export default (os: OS) => (cb, file = null) => {
}]
});
- if (cb) cb(i);
+ return i;
});
};
- if (file) {
- fileSelected(file);
- } else {
- os.apis.chooseDriveFile({
- multiple: false,
- title: '%fa:image% %i18n:desktop.choose-avatar%'
- }).then(file => {
- fileSelected(file);
- });
- }
+ return (file = null) => {
+ const selectedFile = file
+ ? Promise.resolve(file)
+ : os.apis.chooseDriveFile({
+ multiple: false,
+ title: '%fa:image% %i18n:desktop.choose-avatar%'
+ });
+
+ return selectedFile
+ .then(cropImage)
+ .then(setAvatar)
+ .catch(err => err && console.warn(err));
+ };
};
diff --git a/src/client/app/desktop/api/update-banner.ts b/src/client/app/desktop/api/update-banner.ts
index 33c4e306a2..5af6ea88d2 100644
--- a/src/client/app/desktop/api/update-banner.ts
+++ b/src/client/app/desktop/api/update-banner.ts
@@ -6,6 +6,20 @@ import ProgressDialog from '../views/components/progress-dialog.vue';
export default (os: OS) => {
const cropImage = file => new Promise((resolve, reject) => {
+
+ var regex = RegExp('\.(jpg|jpeg|png|gif|webp|bmp|tiff)$')
+
+ if(!regex.test(file.name) ) {
+ os.apis.dialog({
+ title: '%fa:info-circle% %i18n:desktop.invalid-filetype%',
+ text: null,
+ actions: [{
+ text: '%i18n:common.got-it%'
+ }]
+ });
+ reject
+ }
+
const w = os.new(CropWindow, {
image: file,
title: '%i18n:desktop.banner-crop-title%',
diff --git a/src/client/app/desktop/views/pages/user/user.friends.vue b/src/client/app/desktop/views/pages/user/user.friends.vue
index 49ca7a3f8f..516eea0288 100644
--- a/src/client/app/desktop/views/pages/user/user.friends.vue
+++ b/src/client/app/desktop/views/pages/user/user.friends.vue
@@ -45,6 +45,7 @@ root(isDark)
background isDark ? #282C37 : #fff
border solid 1px rgba(#000, 0.075)
border-radius 6px
+ overflow hidden
> .title
z-index 1
diff --git a/src/client/app/desktop/views/pages/user/user.photos.vue b/src/client/app/desktop/views/pages/user/user.photos.vue
index 2318f2b8e4..8397e56484 100644
--- a/src/client/app/desktop/views/pages/user/user.photos.vue
+++ b/src/client/app/desktop/views/pages/user/user.photos.vue
@@ -44,6 +44,7 @@ root(isDark)
background isDark ? #282C37 : #fff
border solid 1px rgba(#000, 0.075)
border-radius 6px
+ overflow hidden
> .title
z-index 1