From 6ce52820a1b04510a4fb4ba0f62633374f5be8d7 Mon Sep 17 00:00:00 2001
From: "Mr. Stallion" <mrstallion@nobody.nowhere.fauxdomain.ext>
Date: Sat, 7 Dec 2019 07:57:54 -0600
Subject: [PATCH] Search spinner

---
 chat/CharacterSearch.vue | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/chat/CharacterSearch.vue b/chat/CharacterSearch.vue
index 64998b7..5cbbca7 100644
--- a/chat/CharacterSearch.vue
+++ b/chat/CharacterSearch.vue
@@ -18,7 +18,11 @@
             <button class="btn btn-outline-secondary" @click.prevent="reset()">Reset</button>
         </div>
         <div v-else-if="results" class="results">
-            <h4>{{l('characterSearch.results')}}</h4>
+            <h4>
+                {{l('characterSearch.results')}}
+                <i class="fa fa-spinner search-spinner" v-if="!resultsComplete"></i>
+            </h4>
+
             <div v-for="character in results" :key="character.name" class="search-result" :class="'status-' + character.status">
                 <template v-if="character.status === 'looking'" v-once>
                     <img :src="characterImage(character.name)" v-if="showAvatars"/>
@@ -101,6 +105,7 @@
         kinksFilter = '';
         error = '';
         results: Character[] | undefined;
+        resultsComplete = false;
         characterImage = characterImage;
         options!: Data;
         data: Data = {kinks: [], genders: [], orientations: [], languages: [], furryprefs: [], roles: [], positions: []};
@@ -145,6 +150,8 @@
             core.connection.onMessage('FKS', (data) => {
                 this.results = data.characters.map((x) => core.characters.get(x))
                     .filter((x) => core.state.hiddenUsers.indexOf(x.name) === -1 && !x.isIgnored).sort(sort);
+
+                this.resultsComplete = this.checkResultCompletion();
             });
 
             if (this.scoreWatcher) {
@@ -163,6 +170,7 @@
                     && (_.find(this.results, (c: Character) => c.name === event.character.character.name))
                 ) {
                     this.results = this.results.sort(sort);
+                    this.resultsComplete = this.checkResultCompletion();
                 }
             };
 
@@ -200,6 +208,14 @@
         }
 
 
+        checkResultCompletion(): boolean {
+            return _.every(
+                this.results,
+                (c: Character) => (!!core.cache.profileCache.getSync(c.name))
+            );
+        }
+
+
         filterKink(filter: RegExp, kink: Kink): boolean {
             if(this.data.kinks.length >= 5)
                 return this.data.kinks.indexOf(kink) !== -1;
@@ -267,5 +283,22 @@
         .search-string span {
             font-weight: bold;
         }
+
+        .search-spinner {
+            float: right;
+            animation: search-spin 4s linear infinite;
+        }
     }
+
+
+    @keyframes search-spin {
+        from {
+            transform: rotate(0deg);
+        }
+        to {
+            transform: rotate(360deg);
+        }
+
+    }
+
 </style>
\ No newline at end of file