From d399241e65b4cd6ab4fa0e95ccabfd1e41140a2d Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Tue, 30 Oct 2018 09:36:20 +0900
Subject: [PATCH] Refactor

---
 .../app/common/views/components/error.vue     | 19 +++++++++++++++++++
 .../app/common/views/components/index.ts      |  2 ++
 .../app/desktop/views/components/notes.vue    | 15 +--------------
 .../desktop/views/pages/deck/deck.notes.vue   | 12 +-----------
 4 files changed, 23 insertions(+), 25 deletions(-)
 create mode 100644 src/client/app/common/views/components/error.vue

diff --git a/src/client/app/common/views/components/error.vue b/src/client/app/common/views/components/error.vue
new file mode 100644
index 000000000..7381cf537
--- /dev/null
+++ b/src/client/app/common/views/components/error.vue
@@ -0,0 +1,19 @@
+<template>
+<div class="wjqjnyhzogztorhrdgcpqlkxhkmuetgj">
+	<p>%fa:exclamation-triangle% %i18n:common.error.title%</p>
+	<ui-button @click="() => $emit('retry')">%i18n:common.error.retry%</ui-button>
+</div>
+</template>
+
+<style lang="stylus" scoped>
+.wjqjnyhzogztorhrdgcpqlkxhkmuetgj
+	max-width 350px
+	margin 0 auto
+	padding 32px
+	text-align center
+	color var(--text)
+
+	> p
+		margin 0 0 8px 0
+
+</style>
diff --git a/src/client/app/common/views/components/index.ts b/src/client/app/common/views/components/index.ts
index 54880e3c2..33216e459 100644
--- a/src/client/app/common/views/components/index.ts
+++ b/src/client/app/common/views/components/index.ts
@@ -1,5 +1,6 @@
 import Vue from 'vue';
 
+import error from './error.vue';
 import apiSettings from './api-settings.vue';
 import driveSettings from './drive-settings.vue';
 import profileEditor from './profile-editor.vue';
@@ -49,6 +50,7 @@ import uiInfo from './ui/info.vue';
 import formButton from './ui/form/button.vue';
 import formRadio from './ui/form/radio.vue';
 
+Vue.component('mk-error', error);
 Vue.component('mk-api-settings', apiSettings);
 Vue.component('mk-drive-settings', driveSettings);
 Vue.component('mk-profile-editor', profileEditor);
diff --git a/src/client/app/desktop/views/components/notes.vue b/src/client/app/desktop/views/components/notes.vue
index 54299f933..37ce2c9dd 100644
--- a/src/client/app/desktop/views/components/notes.vue
+++ b/src/client/app/desktop/views/components/notes.vue
@@ -4,10 +4,7 @@
 
 	<slot name="empty" v-if="notes.length == 0 && !fetching && requestInitPromise == null"></slot>
 
-	<div v-if="!fetching && requestInitPromise != null" class="error">
-		<p>%fa:exclamation-triangle% %i18n:common.error.title%</p>
-		<ui-button @click="resolveInitPromise">%i18n:common.error.retry%</ui-button>
-	</div>
+	<mk-error v-if="!fetching && requestInitPromise != null" @retry="resolveInitPromise"/>
 
 	<div class="placeholder" v-if="fetching">
 		<template v-for="i in 10">
@@ -215,16 +212,6 @@ export default Vue.extend({
 		> *
 			transition transform .3s ease, opacity .3s ease
 
-	> .error
-		max-width 300px
-		margin 0 auto
-		padding 32px
-		text-align center
-		color var(--text)
-
-		> p
-			margin 0 0 8px 0
-
 	> .placeholder
 		padding 32px
 		opacity 0.3
diff --git a/src/client/app/desktop/views/pages/deck/deck.notes.vue b/src/client/app/desktop/views/pages/deck/deck.notes.vue
index 3231bd722..a5f20df5b 100644
--- a/src/client/app/desktop/views/pages/deck/deck.notes.vue
+++ b/src/client/app/desktop/views/pages/deck/deck.notes.vue
@@ -8,10 +8,7 @@
 		</template>
 	</div>
 
-	<div v-if="!fetching && requestInitPromise != null" class="error">
-		<p>%fa:exclamation-triangle% %i18n:common.error.title%</p>
-		<ui-button @click="resolveInitPromise">%i18n:common.error.retry%</ui-button>
-	</div>
+	<mk-error v-if="!fetching && requestInitPromise != null" @retry="resolveInitPromise"/>
 
 	<!-- トランジションを有効にするとなぜかメモリリークする -->
 	<!--<transition-group name="mk-notes" class="transition" ref="notes">-->
@@ -221,13 +218,6 @@ export default Vue.extend({
 		> *
 			transition transform .3s ease, opacity .3s ease
 
-	> .error
-		max-width 300px
-		margin 0 auto
-		padding 16px
-		text-align center
-		color var(--text)
-
 	> .placeholder
 		padding 16px
 		opacity 0.3