From cc4691a4efec91318284869164419d286bda44a5 Mon Sep 17 00:00:00 2001 From: kPherox Date: Sun, 17 Nov 2019 22:34:00 +0900 Subject: Fix merging array field for users --- src/modules/users.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/modules/users.js') diff --git a/src/modules/users.js b/src/modules/users.js index f9329f2a..fca01a56 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -1,6 +1,6 @@ import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js' import oauthApi from '../services/new_api/oauth.js' -import { compact, map, each, merge, last, concat, uniq } from 'lodash' +import { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash' import { set } from 'vue' import { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js' @@ -10,7 +10,7 @@ export const mergeOrAdd = (arr, obj, item) => { const oldItem = obj[item.id] if (oldItem) { // We already have this, so only merge the new info. - merge(oldItem, item) + mergeWith(oldItem, item, mergeArrayLength) return { item: oldItem, new: false } } else { // This is a new item, prepare it @@ -23,6 +23,13 @@ export const mergeOrAdd = (arr, obj, item) => { } } +const mergeArrayLength = (oldValue, newValue) => { + if (isArray(oldValue) && isArray(newValue)) { + oldValue.length = newValue.length + return mergeWith(oldValue, newValue, mergeArrayLength) + } +} + const getNotificationPermission = () => { const Notification = window.Notification @@ -116,7 +123,7 @@ export const mutations = { }, setCurrentUser (state, user) { state.lastLoginName = user.screen_name - state.currentUser = merge(state.currentUser || {}, user) + state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength) }, clearCurrentUser (state) { state.currentUser = false -- cgit v1.2.3-70-g09d2 From 9c884fef11e52541ab64508c9a9e0b8694432cbb Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Thu, 18 Jun 2020 12:29:13 +0300 Subject: remove search blocker, fix debounce params --- src/components/emoji_input/suggestor.js | 8 ++++---- src/modules/users.js | 20 ++++++++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) (limited to 'src/modules/users.js') diff --git a/src/components/emoji_input/suggestor.js b/src/components/emoji_input/suggestor.js index 15a71eff..91d5cfb9 100644 --- a/src/components/emoji_input/suggestor.js +++ b/src/components/emoji_input/suggestor.js @@ -1,4 +1,4 @@ -import { debounce } from 'lodash' +import debounce from 'lodash/debounce' /** * suggest - generates a suggestor function to be used by emoji-input * data: object providing source information for specific types of suggestions: @@ -13,7 +13,7 @@ import { debounce } from 'lodash' const debounceUserSearch = debounce((data, input) => { data.updateUsersList(input) -}, 500, { leading: true, trailing: false }) +}, 500) export default data => input => { const firstChar = input[0] @@ -97,8 +97,8 @@ export const suggestUsers = data => input => { replacement: '@' + screen_name + ' ' })) - // BE search users if there are no matches - if (newUsers.length === 0 && data.updateUsersList) { + // BE search users to get more comprehensive results + if (data.updateUsersList) { debounceUserSearch(data, noPrefix) } return newUsers diff --git a/src/modules/users.js b/src/modules/users.js index f9329f2a..a640fb3b 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -225,6 +225,12 @@ export const mutations = { signUpFailure (state, errors) { state.signUpPending = false state.signUpErrors = errors + }, + addRecentQuery (state, query) { + state.recentQueries = state.recentQueries.concat(query) + if (state.recentQueries.length > 10) { + state.recentQueries = state.recentQueries.slice(1) + } } } @@ -251,7 +257,8 @@ export const defaultState = { usersObject: {}, signUpPending: false, signUpErrors: [], - relationships: {} + relationships: {}, + recentQueries: [] } const users = { @@ -428,10 +435,15 @@ const users = { store.commit('setUserForNotification', notification) }) }, - searchUsers (store, { query }) { - return store.rootState.api.backendInteractor.searchUsers({ query }) + searchUsers ({ rootState, commit }, { query }) { + // Don't fetch if this query was already done recently + if (rootState.users.recentQueries.includes(query)) { + return [] + } + return rootState.api.backendInteractor.searchUsers({ query }) .then((users) => { - store.commit('addNewUsers', users) + commit('addRecentQuery', query) + commit('addNewUsers', users) return users }) }, -- cgit v1.2.3-70-g09d2 From fa7bcb74cecb8af095e6e22271243f2d51835f39 Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Thu, 18 Jun 2020 13:00:09 +0300 Subject: return the correct promise type from action --- src/modules/users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/modules/users.js') diff --git a/src/modules/users.js b/src/modules/users.js index a640fb3b..df710ac9 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -438,7 +438,7 @@ const users = { searchUsers ({ rootState, commit }, { query }) { // Don't fetch if this query was already done recently if (rootState.users.recentQueries.includes(query)) { - return [] + return Promise.resolve([]) } return rootState.api.backendInteractor.searchUsers({ query }) .then((users) => { -- cgit v1.2.3-70-g09d2 From 4e0b4427a969b2d0584a3a1c1ffd3fe3fbfc2998 Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Thu, 18 Jun 2020 14:19:21 +0300 Subject: remove recentqueries thing --- src/modules/users.js | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) (limited to 'src/modules/users.js') diff --git a/src/modules/users.js b/src/modules/users.js index df710ac9..5e32bb49 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -225,12 +225,6 @@ export const mutations = { signUpFailure (state, errors) { state.signUpPending = false state.signUpErrors = errors - }, - addRecentQuery (state, query) { - state.recentQueries = state.recentQueries.concat(query) - if (state.recentQueries.length > 10) { - state.recentQueries = state.recentQueries.slice(1) - } } } @@ -257,8 +251,7 @@ export const defaultState = { usersObject: {}, signUpPending: false, signUpErrors: [], - relationships: {}, - recentQueries: [] + relationships: {} } const users = { @@ -436,13 +429,8 @@ const users = { }) }, searchUsers ({ rootState, commit }, { query }) { - // Don't fetch if this query was already done recently - if (rootState.users.recentQueries.includes(query)) { - return Promise.resolve([]) - } return rootState.api.backendInteractor.searchUsers({ query }) .then((users) => { - commit('addRecentQuery', query) commit('addNewUsers', users) return users }) -- cgit v1.2.3-70-g09d2