commit: a31ff20f50906f70253bf43f4548c0f5b0ab8db4
parent 2a97bdb39d7533ae55ddb0713d4fb3d670017ea5
Author: Henry Jameson <me@hjkos.com>
Date: Sun, 20 Feb 2022 00:36:21 +0200
lol, lmao, that was some shit, this is much easier and works all the time
Diffstat:
3 files changed, 3 insertions(+), 49 deletions(-)
diff --git a/src/components/timeline/timeline.js b/src/components/timeline/timeline.js
@@ -12,19 +12,6 @@ library.add(
faCog
)
-export const getExcludedStatusIdsByPinning = (statuses, pinnedStatusIds) => {
- const ids = []
- if (pinnedStatusIds && pinnedStatusIds.length > 0) {
- for (let status of statuses) {
- if (!pinnedStatusIds.includes(status.id)) {
- break
- }
- ids.push(status.id)
- }
- }
- return ids
-}
-
const Timeline = {
props: [
'timeline',
@@ -77,11 +64,6 @@ const Timeline = {
}
},
// id map of statuses which need to be hidden in the main list due to pinning logic
- excludedStatusIdsObject () {
- const ids = getExcludedStatusIdsByPinning(this.timeline.visibleStatuses, this.pinnedStatusIds)
- // Convert id array to object
- return keyBy(ids)
- },
pinnedStatusIdsObject () {
return keyBy(this.pinnedStatusIds)
},
diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue
@@ -37,7 +37,7 @@
</template>
<template v-for="status in timeline.visibleStatuses">
<conversation
- v-if="status._meta.fetchedFromPinned <= 0"
+ v-if="timelineName === 'bookmarks' || (status.id >= timeline.minId && status.id <= timeline.maxId)"
:key="status.id"
class="status-fadein"
:status-id="status.id"
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
@@ -84,7 +84,7 @@ const mergeOrAdd = (arr, obj, item) => {
// We already have this, so only merge the new info.
// We ignore null values to avoid overwriting existing properties with missing data
// we also skip 'user' because that is handled by users module
- merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user' || k === '_meta'))
+ merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))
// Reactivity fix.
oldItem.attachments.splice(oldItem.attachments.length)
return { item: oldItem, new: false }
@@ -122,22 +122,6 @@ const sortTimeline = (timeline) => {
// Add status to the global storages (arrays and objects maintaining statuses) except timelines
const addStatusToGlobalStorage = (state, data) => {
- // POST METADATA PROCESSING.
- // In this context "metadata" means all the sidechannel information about the post that we have
- // i.e. where post was obtained from (which endpoint), what timestamp was etc. anything that isn't
- // directly attached into it by server.
- //
- // @@_meta.fetchedFromPinned: number
- // -1 = fetched from elsewhere
- // +1 = fetched from pinned posts
- // 0 = fetched from elsewhere and from pinned posts
- //
- // The logic is mainly for user profile page - don't show post in timeline context
- // if post was ONLY fetched from pinned posts, show it if it was obtained from
- // elsewhere (i.e. user posts fetching)
- data._meta = data._meta || {}
- data._meta.fetchedFromPinned = data._meta.fetchedFromPinned || -1
-
const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)
if (result.new) {
// Add to conversation
@@ -149,18 +133,6 @@ const addStatusToGlobalStorage = (state, data) => {
} else {
set(conversationsObject, conversationId, [status])
}
- } else {
- // If post was fetched from elsewhere AND from pinned (=0 we don't care anymore)
- // otherwise we sum the old data and new data and clamp it to [-1; 1]
- if (result.item._meta.fetchedFromPinned !== 0) {
- result.item._meta.fetchedFromPinned = Math.min(
- 1,
- Math.max(
- -1,
- result.item._meta.fetchedFromPinned + data._meta.fetchedFromPinned
- )
- )
- }
}
return result
}
@@ -654,7 +626,7 @@ const statuses = {
},
fetchPinnedStatuses ({ rootState, dispatch }, userId) {
rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })
- .then(statuses => dispatch('addNewStatuses', { statuses: statuses.map(status => ({ ...status, _meta: { fetchedFromPinned: 1 } })), timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))
+ .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))
},
pinStatus ({ rootState, dispatch }, statusId) {
return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })