From 3117623f3000eed03ec7828c3ed112bd67366620 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 16 Aug 2021 21:30:07 +0300 Subject: Implement loading more statuses when searching --- src/components/search/search.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/components/search/search.js') diff --git a/src/components/search/search.js b/src/components/search/search.js index b62bc2c5..6347febf 100644 --- a/src/components/search/search.js +++ b/src/components/search/search.js @@ -30,7 +30,11 @@ const Search = { userIds: [], statuses: [], hashtags: [], - currenResultTab: 'statuses' + currenResultTab: 'statuses', + + statusesOffset: 0, + lastStatusFetchCount: 0, + lastQuery: '' } }, computed: { @@ -67,18 +71,26 @@ const Search = { this.loading = true this.userIds = [] - this.statuses = [] this.hashtags = [] this.$refs.searchInput.blur() + if (this.lastQuery !== query) { + this.statuses = [] + this.statusesOffset = 0 + this.lastStatusFetchCount = 0 + } - this.$store.dispatch('search', { q: query, resolve: true }) + this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset }) .then(data => { this.loading = false this.userIds = map(data.accounts, 'id') - this.statuses = data.statuses + this.statuses = this.statuses.concat(data.statuses) this.hashtags = data.hashtags this.currenResultTab = this.getActiveTab() this.loaded = true + + this.statusesOffset += data.statuses.length + this.lastStatusFetchCount = data.statuses.length + this.lastQuery = query }) }, resultCount (tabName) { -- cgit v1.2.3-70-g09d2 From ca7fa67997de81710f96944ccdbd080dcd3b0bf9 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 22 Aug 2021 15:36:03 +0300 Subject: Amend status search results, and introduce searchType Use searchType to only search for statuses when searching for more results --- src/components/search/search.js | 16 ++++++++++------ src/components/search/search.vue | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src/components/search/search.js') diff --git a/src/components/search/search.js b/src/components/search/search.js index 6347febf..751a9c37 100644 --- a/src/components/search/search.js +++ b/src/components/search/search.js @@ -63,28 +63,32 @@ const Search = { this.$router.push({ name: 'search', query: { query } }) this.$refs.searchInput.focus() }, - search (query) { + search (query, searchType = null) { if (!query) { this.loading = false return } this.loading = true - this.userIds = [] - this.hashtags = [] this.$refs.searchInput.blur() if (this.lastQuery !== query) { + this.userIds = [] + this.hashtags = [] this.statuses = [] + this.statusesOffset = 0 this.lastStatusFetchCount = 0 } - this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset }) + this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset, 'type': searchType }) .then(data => { this.loading = false - this.userIds = map(data.accounts, 'id') + + // Always append to old results. If new results are empty, this doesn't change anything + this.userIds = this.userIds.concat(map(data.accounts, 'id')) this.statuses = this.statuses.concat(data.statuses) - this.hashtags = data.hashtags + this.hashtags = this.hashtags.concat(data.hashtags) + this.currenResultTab = this.getActiveTab() this.loaded = true diff --git a/src/components/search/search.vue b/src/components/search/search.vue index 5d8a6715..f3076f65 100644 --- a/src/components/search/search.vue +++ b/src/components/search/search.vue @@ -68,7 +68,7 @@