From 057ae4b6cdd32a5bb226c23dafc621837fc2c48d Mon Sep 17 00:00:00 2001 From: Louis Chemineau Date: Tue, 21 Mar 2023 11:22:42 +0100 Subject: [PATCH] Automatically refetch timeline every 30sec Signed-off-by: Louis Chemineau --- src/components/TimelineList.vue | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/TimelineList.vue b/src/components/TimelineList.vue index 1cfebee8..daedd0e8 100644 --- a/src/components/TimelineList.vue +++ b/src/components/TimelineList.vue @@ -70,6 +70,7 @@ export default { return { infoHidden: false, state: [], + intervalId: -1, emptyContent: { default: { image: 'img/undraw/posts.svg', @@ -141,8 +142,11 @@ export default { return this.$store.getters.getTimeline }, }, - beforeMount() { - + mounted() { + this.intervalId = setInterval(() => this.fetchNewStatuses(), 30 * 1000) + }, + destroyed() { + clearInterval(this.intervalId) }, methods: { async infiniteHandler($state) { @@ -159,6 +163,21 @@ export default { $state.complete() } }, + async fetchNewStatuses() { + try { + const response = await this.$store.dispatch('fetchTimeline', { + account: this.currentUser.uid, + min_id: this.timeline[0]?.id ?? undefined, + }) + + if (response.length > 0) { + this.fetchNewStatuses() + } + } catch (error) { + showError('Failed to load newer timeline entries') + logger.error('Failed to load newer timeline entries', { error }) + } + }, }, }