From 41f82804dd8b9b4a20694933421c05b2d1b33179 Mon Sep 17 00:00:00 2001
From: JunGu Kang <chr0m3.kr@gmail.com>
Date: Wed, 4 Dec 2019 15:21:22 +0900
Subject: [PATCH] =?UTF-8?q?View=20=EC=9D=B4=EB=8F=99=EC=8B=9C=20Loading=20?=
 =?UTF-8?q?=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/App.vue         | 13 ++++++++++++-
 src/router/index.js |  6 ++++++
 src/store/index.js  |  7 +++++++
 3 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/App.vue b/src/App.vue
index ba12d6b..07d32cf 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -9,11 +9,19 @@
         <router-view></router-view>
       </v-container>
     </v-content>
+    <v-overlay
+      :value="isPageLoading"
+    >
+      <v-progress-circular
+        indeterminate
+        size="64"
+      ></v-progress-circular>
+    </v-overlay>
   </v-app>
 </template>
 
 <script>
-import { mapGetters, mapActions } from 'vuex';
+import { mapState, mapGetters, mapActions } from 'vuex';
 
 import NavigationBar from '@/components/NavigationBar.vue';
 import NavigationDrawer from '@/components/NavigationDrawer.vue';
@@ -27,6 +35,9 @@ export default {
   },
 
   computed: {
+    ...mapState([
+      'isPageLoading',
+    ]),
     ...mapGetters([
       'isLogin',
     ]),
diff --git a/src/router/index.js b/src/router/index.js
index b2d103e..36412e3 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -27,6 +27,8 @@ const router = new VueRouter({
 });
 
 router.beforeEach(async (to, from, next) => {
+  Store.commit('setPageStartLoading');
+
   const res = await fetch(APISetting.endpoints.auth.check, APISetting.settings.get);
   if (res.status === 200) {
     const json = await res.json();
@@ -38,4 +40,8 @@ router.beforeEach(async (to, from, next) => {
   next();
 });
 
+router.afterEach(() => {
+  Store.commit('setPageFinishLoading');
+});
+
 export default router;
diff --git a/src/store/index.js b/src/store/index.js
index 2370c13..e1c364d 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -5,6 +5,7 @@ Vue.use(Vuex);
 
 export default new Vuex.Store({
   state: {
+    isPageLoading: false,
     isNavDrawerVisible: true,
     loginUser: null,
   },
@@ -12,6 +13,12 @@ export default new Vuex.Store({
     isLogin: state => (state.loginUser !== null),
   },
   mutations: {
+    setPageStartLoading(state) {
+      state.isPageLoading = true;
+    },
+    setPageFinishLoading(state) {
+      state.isPageLoading = false;
+    },
     toggleNavDrawer(state) {
       state.isNavDrawerVisible = !state.isNavDrawerVisible;
     },
-- 
GitLab