From 5c2030e467277de9bc75debe489a34e8a1c9b2fe Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 19 Dec 2018 01:55:53 +0300
Subject: [PATCH] no more "broken favorite"

---
 src/components/notification/notification.vue  |  5 +---
 .../notifications/notifications.scss          | 10 --------
 src/modules/api.js                            |  3 ---
 src/modules/statuses.js                       | 23 ++-----------------
 src/modules/users.js                          |  2 --
 src/services/api/api.service.js               |  3 ---
 .../backend_interactor_service.js             | 11 ---------
 7 files changed, 3 insertions(+), 54 deletions(-)

diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue
index 1c89cbb7..56791d45 100644
--- a/src/components/notification/notification.vue
+++ b/src/components/notification/notification.vue
@@ -33,10 +33,7 @@
         </router-link>
       </div>
       <template v-else>
-        <status :activatePanel="activatePanel" v-if="notification.status"  class="faint" :compact="true" :statusoid="notification.status" :noHeading="true"></status>
-        <div class="broken-favorite" v-else>
-          {{$t('notifications.broken_favorite')}}
-        </div>
+        <status :activatePanel="activatePanel" class="faint" :compact="true" :statusoid="notification.status" :noHeading="true"></status>
       </template>
     </div>
   </div>
diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss
index a6468e01..5c4ca1b9 100644
--- a/src/components/notifications/notifications.scss
+++ b/src/components/notifications/notifications.scss
@@ -36,16 +36,6 @@
   border-color: $fallback--border;
   border-color: var(--border, $fallback--border);
 
-  .broken-favorite {
-    border-radius: $fallback--tooltipRadius;
-    border-radius: var(--tooltipRadius, $fallback--tooltipRadius);
-    color: $fallback--text;
-    color: var(--alertErrorText, $fallback--text);
-    background-color: $fallback--alertError;
-    background-color: var(--alertError, $fallback--alertError);
-    padding: 2px .5em
-  }
-
   .avatar-compact {
     width: 32px;
     height: 32px;
diff --git a/src/modules/api.js b/src/modules/api.js
index 2f07a91e..a61340c2 100644
--- a/src/modules/api.js
+++ b/src/modules/api.js
@@ -46,9 +46,6 @@ const api = {
         store.commit('addFetcher', {timeline, fetcher})
       }
     },
-    fetchOldPost (store, { postId }) {
-      store.state.backendInteractor.fetchOldPost({ store, postId })
-    },
     stopFetching (store, timeline) {
       const fetcher = store.state.fetchers[timeline]
       window.clearInterval(fetcher)
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 5bbf5f46..8c2d36bc 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -27,8 +27,7 @@ export const defaultState = {
     maxId: 0,
     minId: Number.POSITIVE_INFINITY,
     data: [],
-    error: false,
-    brokenFavorites: {}
+    error: false
   },
   favorites: new Set(),
   error: false,
@@ -36,7 +35,6 @@ export const defaultState = {
     mentions: emptyTl(),
     public: emptyTl(),
     user: emptyTl(),
-    own: emptyTl(),
     publicAndExternal: emptyTl(),
     friends: emptyTl(),
     tag: emptyTl(),
@@ -158,12 +156,6 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us
     const result = mergeOrAdd(allStatuses, allStatusesObject, status)
     status = result.item
 
-    const brokenFavorites = state.notifications.brokenFavorites[status.id] || []
-    brokenFavorites.forEach((fav) => {
-      fav.status = status
-    })
-    delete state.notifications.brokenFavorites[status.id]
-
     if (result.new) {
       // We are mentioned in a post
       if (statusType(status) === 'status' && find(status.attentions, { id: user.id })) {
@@ -304,7 +296,7 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot
 
       const fresh = !notification.is_seen
       const status = notification.ntype === 'like'
-            ? find(allStatuses, { id: action.in_reply_to_status_id })
+            ? action.favorited_status
             : action
 
       const result = {
@@ -314,17 +306,6 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot
         seen: !fresh
       }
 
-      if (notification.ntype === 'like' && !status) {
-        let broken = state.notifications.brokenFavorites[action.in_reply_to_status_id]
-        if (broken) {
-          broken.push(result)
-        } else {
-          dispatch('fetchOldPost', { postId: action.in_reply_to_status_id })
-          broken = [ result ]
-          state.notifications.brokenFavorites[action.in_reply_to_status_id] = broken
-        }
-      }
-
       state.notifications.data.push(result)
 
       if ('Notification' in window && window.Notification.permission === 'granted') {
diff --git a/src/modules/users.js b/src/modules/users.js
index 31fe94fc..13d3f26e 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -195,8 +195,6 @@ const users = {
 
                   // Start getting fresh tweets.
                   store.dispatch('startFetching', 'friends')
-                  // Start getting our own posts, only really needed for mitigating broken favorites
-                  store.dispatch('startFetching', ['own', user.id])
 
                   // Get user mutes and follower info
                   store.rootState.api.backendInteractor.fetchMutes().then((mutedUsers) => {
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index b509c905..182f9126 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -300,9 +300,6 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use
     notifications: QVITTER_USER_NOTIFICATIONS_URL,
     'publicAndExternal': PUBLIC_AND_EXTERNAL_TIMELINE_URL,
     user: QVITTER_USER_TIMELINE_URL,
-    // separate timeline for own posts, so it won't break due to user timeline bugs
-    // really needed only for broken favorites
-    own: QVITTER_USER_TIMELINE_URL,
     tag: TAG_TIMELINE_URL
   }
 
diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js
index cc72f607..f44f52b6 100644
--- a/src/services/backend_interactor_service/backend_interactor_service.js
+++ b/src/services/backend_interactor_service/backend_interactor_service.js
@@ -54,16 +54,6 @@ const backendInteractorService = (credentials) => {
     return timelineFetcherService.startFetching({timeline, store, credentials, userId})
   }
 
-  const fetchOldPost = ({store, postId}) => {
-    return timelineFetcherService.fetchAndUpdate({
-      store,
-      credentials,
-      timeline: 'own',
-      older: true,
-      until: postId + 1
-    })
-  }
-
   const setUserMute = ({id, muted = true}) => {
     return apiService.setUserMute({id, muted, credentials})
   }
@@ -97,7 +87,6 @@ const backendInteractorService = (credentials) => {
     fetchAllFollowing,
     verifyCredentials: apiService.verifyCredentials,
     startFetching,
-    fetchOldPost,
     setUserMute,
     fetchMutes,
     register,