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 () {
|
newStatusCount () {
|
||||||
return this.timeline.newStatusCount
|
return this.timeline.newStatusCount
|
||||||
|
},
|
||||||
|
newStatusCountStr () {
|
||||||
|
if (this.timeline.flushMarker) {
|
||||||
|
return ''
|
||||||
|
} else {
|
||||||
|
return ` (${this.newStatusCount})`
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
@ -64,8 +71,14 @@ const Timeline = {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showNewStatuses () {
|
showNewStatuses () {
|
||||||
this.$store.commit('showNewStatuses', { timeline: this.timelineName })
|
if (this.timeline.flushMarker) {
|
||||||
this.paused = false
|
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 () {
|
fetchOlderStatuses () {
|
||||||
const store = this.$store
|
const store = this.$store
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{{title}}
|
{{title}}
|
||||||
</div>
|
</div>
|
||||||
<button @click.prevent="showNewStatuses" class="base05 base02-background loadmore-button" v-if="timeline.newStatusCount > 0 && !timelineError">
|
<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>
|
</button>
|
||||||
<div @click.prevent class="base06 error loadmore-text" v-if="timelineError">
|
<div @click.prevent class="base06 error loadmore-text" v-if="timelineError">
|
||||||
{{$t('timeline.error_fetching')}}
|
{{$t('timeline.error_fetching')}}
|
||||||
|
|
|
@ -9,6 +9,7 @@ export const defaultState = {
|
||||||
notifications: [],
|
notifications: [],
|
||||||
favorites: new Set(),
|
favorites: new Set(),
|
||||||
error: false,
|
error: false,
|
||||||
|
flushMarker: 0,
|
||||||
timelines: {
|
timelines: {
|
||||||
mentions: {
|
mentions: {
|
||||||
statuses: [],
|
statuses: [],
|
||||||
|
@ -422,6 +423,9 @@ export const mutations = {
|
||||||
each(notifications, (notification) => {
|
each(notifications, (notification) => {
|
||||||
notification.seen = true
|
notification.seen = true
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
queueFlush (state, { timeline, id }) {
|
||||||
|
state.timelines[timeline].flushMarker = id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,6 +462,9 @@ const statuses = {
|
||||||
// Optimistic retweeting...
|
// Optimistic retweeting...
|
||||||
commit('setRetweeted', { status, value: true })
|
commit('setRetweeted', { status, value: true })
|
||||||
apiService.retweet({ id: status.id, credentials: rootState.users.currentUser.credentials })
|
apiService.retweet({ id: status.id, credentials: rootState.users.currentUser.credentials })
|
||||||
|
},
|
||||||
|
queueFlush ({ rootState, commit }, { timeline, id }) {
|
||||||
|
commit('queueFlush', { timeline, id })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mutations
|
mutations
|
||||||
|
|
|
@ -281,6 +281,8 @@ const fetchTimeline = ({timeline, credentials, since = false, until = false, use
|
||||||
url += `/${tag}.json`
|
url += `/${tag}.json`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
params.push(['count', 20])
|
||||||
|
|
||||||
const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')
|
const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')
|
||||||
url += `?${queryString}`
|
url += `?${queryString}`
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,12 @@ const fetchAndUpdate = ({store, credentials, timeline = 'friends', older = false
|
||||||
args['tag'] = tag
|
args['tag'] = tag
|
||||||
|
|
||||||
return apiService.fetchTimeline(args)
|
return apiService.fetchTimeline(args)
|
||||||
.then((statuses) => update({store, statuses, timeline, showImmediately}),
|
.then((statuses) => {
|
||||||
() => store.dispatch('setError', { value: true }))
|
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}) => {
|
const startFetching = ({timeline = 'friends', credentials, store, userId = false, tag = false}) => {
|
||||||
|
|
Loading…
Reference in a new issue