From c89158402dbe2f44831c5717c3e0d694412cb921 Mon Sep 17 00:00:00 2001
From: "greenkeeper[bot]" <greenkeeper[bot]@users.noreply.github.com>
Date: Sat, 25 Aug 2018 11:19:17 +0000
Subject: [PATCH 01/11] fix(package): update systeminformation to version
 3.44.0

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 8562e6f6c..296e8e0ef 100644
--- a/package.json
+++ b/package.json
@@ -194,7 +194,7 @@
 		"stylus": "0.54.5",
 		"stylus-loader": "3.0.2",
 		"summaly": "2.1.4",
-		"systeminformation": "3.43.0",
+		"systeminformation": "3.44.0",
 		"syuilo-password-strength": "0.0.1",
 		"textarea-caret": "3.1.0",
 		"tmp": "0.0.33",

From 5058eb3cfab84e65946b332fb95a4d7e8685fa13 Mon Sep 17 00:00:00 2001
From: "greenkeeper[bot]" <greenkeeper[bot]@users.noreply.github.com>
Date: Sat, 25 Aug 2018 12:45:23 +0000
Subject: [PATCH 02/11] fix(package): update nan to version 2.11.0

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 8562e6f6c..4b94cee39 100644
--- a/package.json
+++ b/package.json
@@ -158,7 +158,7 @@
 		"mongodb": "3.1.1",
 		"monk": "6.0.6",
 		"ms": "2.1.1",
-		"nan": "2.10.0",
+		"nan": "2.11.0",
 		"nested-property": "0.0.7",
 		"node-sass": "4.9.3",
 		"node-sass-json-importer": "3.3.1",

From e0573c9d5ab2d9cbed70107aa4d74cb0e8394a20 Mon Sep 17 00:00:00 2001
From: "greenkeeper[bot]" <greenkeeper[bot]@users.noreply.github.com>
Date: Sun, 26 Aug 2018 02:26:22 +0000
Subject: [PATCH 03/11] fix(package): update vue-loader to version 15.4.1

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 8bde6935b..f41a631f3 100644
--- a/package.json
+++ b/package.json
@@ -212,7 +212,7 @@
 		"vue-cropperjs": "2.2.1",
 		"vue-js-modal": "1.3.19",
 		"vue-json-tree-view": "2.1.4",
-		"vue-loader": "15.4.0",
+		"vue-loader": "15.4.1",
 		"vue-router": "3.0.1",
 		"vue-style-loader": "4.1.2",
 		"vue-template-compiler": "2.5.17",

From 3e6ee4dac0ec829752393566c277741ead036b23 Mon Sep 17 00:00:00 2001
From: Hiramiya <Hiramiya@users.noreply.github.com>
Date: Mon, 27 Aug 2018 16:06:04 +0100
Subject: [PATCH 04/11] Fix border-radius on photos

---
 src/client/app/desktop/views/pages/user/user.photos.vue | 1 +
 1 file changed, 1 insertion(+)

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 2318f2b8e..8397e5648 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

From 1dd5da4fb906044a1bfa003fab22e9ddb5ee816d Mon Sep 17 00:00:00 2001
From: Hiramiya <Hiramiya@users.noreply.github.com>
Date: Mon, 27 Aug 2018 16:06:31 +0100
Subject: [PATCH 05/11] Fix border-radius on friends

---
 src/client/app/desktop/views/pages/user/user.friends.vue | 1 +
 1 file changed, 1 insertion(+)

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 49ca7a3f8..516eea028 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

From c9333ed9a18f402612fa0f288b898864a4fe40e2 Mon Sep 17 00:00:00 2001
From: "greenkeeper[bot]" <greenkeeper[bot]@users.noreply.github.com>
Date: Mon, 27 Aug 2018 15:41:07 +0000
Subject: [PATCH 06/11] fix(package): update vue-js-modal to version 1.3.20

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index c84f01fc5..a3b50c571 100644
--- a/package.json
+++ b/package.json
@@ -210,7 +210,7 @@
 		"vue": "2.5.17",
 		"vue-chartjs": "3.4.0",
 		"vue-cropperjs": "2.2.1",
-		"vue-js-modal": "1.3.19",
+		"vue-js-modal": "1.3.20",
 		"vue-json-tree-view": "2.1.4",
 		"vue-loader": "15.4.0",
 		"vue-router": "3.0.1",

From b1152402f8256e668aa3f97008231176d0dd9ff8 Mon Sep 17 00:00:00 2001
From: Hiramiya <Hiramiya@users.noreply.github.com>
Date: Mon, 27 Aug 2018 17:29:21 +0100
Subject: [PATCH 07/11] Update update-avatar.ts

---
 src/client/app/desktop/api/update-avatar.ts | 56 ++++++++++++---------
 1 file changed, 31 insertions(+), 25 deletions(-)

diff --git a/src/client/app/desktop/api/update-avatar.ts b/src/client/app/desktop/api/update-avatar.ts
index 83820f92b..18b912d14 100644
--- a/src/client/app/desktop/api/update-avatar.ts
+++ b/src/client/app/desktop/api/update-avatar.ts
@@ -3,9 +3,9 @@ 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) => {
 		const w = os.new(CropWindow, {
 			image: file,
 			title: '%i18n:desktop.avatar-crop-title%',
@@ -19,27 +19,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);
 		});
 
-		document.body.appendChild(w.$el);
-	};
+		w.$once('cancelled', reject);
 
-	const upload = (data, folder) => {
+		document.body.appendChild(w.$el);
+	});
+
+	const upload = (data, folder) => new Promise((resolve, reject) => {
 		const dialog = os.new(ProgressDialog, {
 			title: '%i18n:desktop.uploading-avatar%'
 		});
@@ -52,18 +54,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 +86,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));
+	};
 };

From b527d5e5e3985e07380779e535c57ec8c35584da Mon Sep 17 00:00:00 2001
From: "greenkeeper[bot]" <greenkeeper[bot]@users.noreply.github.com>
Date: Mon, 27 Aug 2018 18:05:30 +0000
Subject: [PATCH 08/11] fix(package): update style-loader to version 0.23.0

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index c84f01fc5..83f63ee0a 100644
--- a/package.json
+++ b/package.json
@@ -190,7 +190,7 @@
 		"single-line-log": "1.1.2",
 		"speakeasy": "2.0.0",
 		"stringz": "1.0.0",
-		"style-loader": "0.22.1",
+		"style-loader": "0.23.0",
 		"stylus": "0.54.5",
 		"stylus-loader": "3.0.2",
 		"summaly": "2.1.4",

From 645b905759dd0f067697a87280ff6bc1b641cf97 Mon Sep 17 00:00:00 2001
From: Hiramiya <Hiramiya@users.noreply.github.com>
Date: Mon, 27 Aug 2018 20:03:28 +0100
Subject: [PATCH 09/11] Restrict avatar filetypes

---
 src/client/app/desktop/api/update-avatar.ts | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/client/app/desktop/api/update-avatar.ts b/src/client/app/desktop/api/update-avatar.ts
index 18b912d14..f07dc623f 100644
--- a/src/client/app/desktop/api/update-avatar.ts
+++ b/src/client/app/desktop/api/update-avatar.ts
@@ -6,6 +6,19 @@ 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.avatar-crop-title%',

From a426e55b95f8a9cd6fa9474d864857e417e210b4 Mon Sep 17 00:00:00 2001
From: Hiramiya <Hiramiya@users.noreply.github.com>
Date: Mon, 27 Aug 2018 20:03:48 +0100
Subject: [PATCH 10/11] Restrict banner filetypes

---
 src/client/app/desktop/api/update-banner.ts | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/client/app/desktop/api/update-banner.ts b/src/client/app/desktop/api/update-banner.ts
index 33c4e306a..5af6ea88d 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%',

From b6513607b61f3fc446b149200cca0d6e74816a01 Mon Sep 17 00:00:00 2001
From: Hiramiya <Hiramiya@users.noreply.github.com>
Date: Mon, 27 Aug 2018 20:04:39 +0100
Subject: [PATCH 11/11] Add "invalid-filetype" translation

---
 locales/en-US.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/locales/en-US.yml b/locales/en-US.yml
index bc2dbc86f..c7c24433e 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -411,6 +411,7 @@ desktop:
   uploading-avatar: "Uploading a new avatar"
   avatar-updated: "Successfully updated the avatar"
   choose-avatar: "Select an image for the avatar"
+  invalid-filetype: "This filetype is not acceptable here"
 desktop/views/components/activity.chart.vue:
   total: "Black ... Total"
   notes: "Blue ... Notes"