forked from AkkomaGang/akkoma-fe
attempt to recognize when holes in timeline for various reasons, clear timeline and fetch older when showing new to get rid of holes
This commit is contained in:
parent
8020363680
commit
fc1736618b
5 changed files with 31 additions and 5 deletions
|
@ -29,6 +29,13 @@ const Timeline = {
|
|||
},
|
||||
newStatusCount () {
|
||||
return this.timeline.newStatusCount
|
||||
},
|
||||
newStatusCountStr () {
|
||||
if (this.timeline.flushMarker) {
|
||||
return ''
|
||||
} else {
|
||||
return ` (${this.newStatusCount})`
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
@ -64,8 +71,14 @@ const Timeline = {
|
|||
},
|
||||
methods: {
|
||||
showNewStatuses () {
|
||||
this.$store.commit('showNewStatuses', { timeline: this.timelineName })
|
||||
this.paused = false
|
||||
if (this.timeline.flushMarker) {
|
||||
this.$store.commit('clearTimeline', { timeline: this.timelineName })
|
||||
this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })
|
||||
this.fetchOlderStatuses()
|
||||
} else {
|
||||
this.$store.commit('showNewStatuses', { timeline: this.timelineName })
|
||||
this.paused = false
|
||||
}
|
||||
},
|
||||
fetchOlderStatuses () {
|
||||
const store = this.$store
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
{{title}}
|
||||
</div>
|
||||
<button @click.prevent="showNewStatuses" class="base05 base02-background loadmore-button" v-if="timeline.newStatusCount > 0 && !timelineError">
|
||||
{{$t('timeline.show_new')}} ({{timeline.newStatusCount}})
|
||||
{{$t('timeline.show_new')}}{{timeline.newStatusMsg}}
|
||||
</button>
|
||||
<div @click.prevent class="base06 error loadmore-text" v-if="timelineError">
|
||||
{{$t('timeline.error_fetching')}}
|
||||
|
|
|
@ -9,6 +9,7 @@ export const defaultState = {
|
|||
notifications: [],
|
||||
favorites: new Set(),
|
||||
error: false,
|
||||
flushMarker: 0,
|
||||
timelines: {
|
||||
mentions: {
|
||||
statuses: [],
|
||||
|
@ -422,6 +423,9 @@ export const mutations = {
|
|||
each(notifications, (notification) => {
|
||||
notification.seen = true
|
||||
})
|
||||
},
|
||||
queueFlush (state, { timeline, id }) {
|
||||
state.timelines[timeline].flushMarker = id
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -458,6 +462,9 @@ const statuses = {
|
|||
// Optimistic retweeting...
|
||||
commit('setRetweeted', { status, value: true })
|
||||
apiService.retweet({ id: status.id, credentials: rootState.users.currentUser.credentials })
|
||||
},
|
||||
queueFlush ({ rootState, commit }, { timeline, id }) {
|
||||
commit('queueFlush', { timeline, id })
|
||||
}
|
||||
},
|
||||
mutations
|
||||
|
|
|
@ -281,6 +281,8 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use
|
|||
url += `/${tag}.json`
|
||||
}
|
||||
|
||||
params.push(['count', 20])
|
||||
|
||||
const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')
|
||||
url += `?${queryString}`
|
||||
|
||||
|
|
|
@ -29,8 +29,12 @@ const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false
|
|||
args['tag'] = tag
|
||||
|
||||
return apiService.fetchTimeline(args)
|
||||
.then((statuses) => update({store, statuses, timeline, showImmediately}),
|
||||
() => store.dispatch('setError', { value: true }))
|
||||
.then((statuses) => {
|
||||
if (!older && statuses.length >= 20) {
|
||||
store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })
|
||||
}
|
||||
update({store, statuses, timeline, showImmediately})
|
||||
}, () => store.dispatch('setError', { value: true }))
|
||||
}
|
||||
|
||||
const startFetching = ({timeline = 'friends', credentials, store, userId = false, tag = false}) => {
|
||||
|
|
Loading…
Reference in a new issue