From 42bb34821908430cdfdbad827567049e3bf22b22 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Thu, 13 Dec 2018 15:34:51 +0300
Subject: [PATCH] Fix fetching new users, add storing local users in
 usersObjects with their screen_name as well as id, so that they could be
 fetched zero-state with screen-name link.

---
 src/components/user_profile/user_profile.vue | 18 ++++++++++++++++++
 src/modules/users.js                         |  5 ++++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue
index 91d4acd2..4d2853a6 100644
--- a/src/components/user_profile/user_profile.vue
+++ b/src/components/user_profile/user_profile.vue
@@ -3,6 +3,16 @@
     <div v-if="user" class="user-profile panel panel-default">
       <user-card-content :user="user" :switcher="true" :selected="timeline.viewing"></user-card-content>
     </div>
+    <div v-else class="panel user-profile-placeholder">
+      <div class="panel-heading">
+        <div class="title">
+          {{ $t('settings.profile_tab') }}
+        </div>
+      </div>
+      <div class="panel-body">
+        <i class="icon-spin3 animate-spin"></i>
+      </div>
+    </div>
     <Timeline :title="$t('user_profile.timeline_title')" :timeline="timeline" :timeline-name="'user'" :user-id="userId"/>
   </div>
 </template>
@@ -21,4 +31,12 @@
     align-items: stretch;
   }
 }
+.user-profile-placeholder {
+  .panel-body {
+    display: flex;
+    justify-content: center;
+    align-items: middle;
+    padding: 7em;
+  }
+}
 </style>
diff --git a/src/modules/users.js b/src/modules/users.js
index 6d966c3b..97e1a318 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -16,6 +16,9 @@ export const mergeOrAdd = (arr, obj, item) => {
     // This is a new item, prepare it
     arr.push(item)
     obj[item.id] = item
+    if (item.screen_name && !item.screen_name.includes('@')) {
+      obj[item.screen_name] = item
+    }
     return {item, new: true}
   }
 }
@@ -78,7 +81,7 @@ const users = {
   actions: {
     fetchUser (store, id) {
       store.rootState.api.backendInteractor.fetchUser({id})
-        .then((user) => store.commit('addNewUsers', user))
+        .then((user) => store.commit('addNewUsers', [user]))
     },
     addNewStatuses (store, { statuses }) {
       const users = map(statuses, 'user')