From 7f1bbc8e5d4304ac8820b2fb0a9529a66dd5ca84 Mon Sep 17 00:00:00 2001
From: abergavenny <abergavenny@protonmail.ch>
Date: Wed, 10 Aug 2022 11:27:06 +0200
Subject: [PATCH] Added visual feedback when loading dynamic imports

---
 client/src/components/forms/LoginForm.vue | 11 ++++++-----
 client/src/main.js                        |  4 ++--
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/client/src/components/forms/LoginForm.vue b/client/src/components/forms/LoginForm.vue
index d0b0af7..3a9f8f8 100644
--- a/client/src/components/forms/LoginForm.vue
+++ b/client/src/components/forms/LoginForm.vue
@@ -46,8 +46,6 @@ async function onSubmit() {
       return
     }
 
-    waiting.value = true
-
     const response = await api.login(state)
 
     if (response?.status === ResponseStatus.Success) {
@@ -56,13 +54,13 @@ async function onSubmit() {
 
         session.setUser({ role: payload.role, userId: payload.userId }, true)
 
-        waiting.value = false
-
         if (payload.role === 'administrator') {
+          waiting.value = true
           router.push({
             name: 'buildings'
           })
         } else if (payload.role === 'user') {
+          waiting.value = true
           router.push({
             name: 'apartments'
           })
@@ -95,7 +93,10 @@ async function onSubmit() {
       </div>
       <div class="form-section">
         <MessageBox v-if="message || props.msg" :msg="message || props.msg" :type="props.msg ? 'warning' : 'danger'" />
-        <button class="button primary" type="submit" :disabled="waiting">Anmelden</button>
+        <button class="button primary" type="submit" :disabled="waiting">
+          <span v-if="!waiting">Anmelden</span>
+          <font-awesome-icon v-else icon="fa-solid fa-spinner" />
+        </button>
       </div>
     </form>
     <div class="section center">
diff --git a/client/src/main.js b/client/src/main.js
index 450d891..0592689 100644
--- a/client/src/main.js
+++ b/client/src/main.js
@@ -2,7 +2,7 @@ import { createApp } from 'vue'
 import { createPinia } from 'pinia'
 import { library } from '@fortawesome/fontawesome-svg-core'
 import { faBell } from '@fortawesome/free-regular-svg-icons'
-import { faArrowRightFromBracket, faBars, faChevronDown, faChevronUp, faPen, faPlus, faXmark } from '@fortawesome/free-solid-svg-icons'
+import { faArrowRightFromBracket, faBars, faChevronDown, faChevronUp, faPen, faPlus, faSpinner, faXmark } from '@fortawesome/free-solid-svg-icons'
 import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
 
 import App from './App.vue'
@@ -10,7 +10,7 @@ import router from './router'
 
 import './assets/main.css'
 
-library.add(faArrowRightFromBracket, faBars, faBell, faChevronDown, faChevronUp, faPen, faPlus, faXmark)
+library.add(faArrowRightFromBracket, faBars, faBell, faChevronDown, faChevronUp, faPen, faPlus, faSpinner, faXmark)
 
 const app = createApp(App)
 
-- 
GitLab