From 2ae05075758fef79c0a184faf398ddce1617e182 Mon Sep 17 00:00:00 2001 From: Brenden Bice Date: Fri, 12 Apr 2019 23:09:05 -0400 Subject: remove error message on no more following --- src/modules/users.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/modules/users.js') diff --git a/src/modules/users.js b/src/modules/users.js index cd789f09..934bfd0b 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -81,7 +81,8 @@ export const mutations = { user.friends.push(friend) } }) - user.lastFriendId = last(friends).id + + user.lastFriendId = friends.length ? last(friends).id : last(user.friends).id }, addFollowers (state, { id, followers }) { const user = state.usersObject[id] -- cgit v1.2.3-70-g09d2 From 41845389a9e5a9e905087057a721bb68ec5c732a Mon Sep 17 00:00:00 2001 From: Brenden Bice Date: Fri, 12 Apr 2019 23:12:22 -0400 Subject: display no message on empty data fetched from api --- src/modules/users.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/modules/users.js') diff --git a/src/modules/users.js b/src/modules/users.js index 934bfd0b..6de50b80 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -81,8 +81,7 @@ export const mutations = { user.friends.push(friend) } }) - - user.lastFriendId = friends.length ? last(friends).id : last(user.friends).id + user.lastFriendId = last(user.friends).id }, addFollowers (state, { id, followers }) { const user = state.usersObject[id] @@ -91,7 +90,7 @@ export const mutations = { user.followers.push(follower) } }) - user.lastFollowerId = last(followers).id + user.lastFollowerId = last(user.followers).id }, // Because frontend doesn't have a reason to keep these stuff in memory // outside of viewing someones user profile. -- cgit v1.2.3-70-g09d2 From e7010d73aca4a2555ef55c41de372ebdd28bd799 Mon Sep 17 00:00:00 2001 From: taehoon Date: Wed, 10 Apr 2019 13:49:39 -0400 Subject: store friends/followers in the global user repository --- src/components/user_profile/user_profile.js | 8 +-- src/modules/users.js | 65 ++++++++-------------- .../entity_normalizer/entity_normalizer.service.js | 4 +- 3 files changed, 30 insertions(+), 47 deletions(-) (limited to 'src/modules/users.js') diff --git a/src/components/user_profile/user_profile.js b/src/components/user_profile/user_profile.js index d55d1517..4b0072ad 100644 --- a/src/components/user_profile/user_profile.js +++ b/src/components/user_profile/user_profile.js @@ -9,8 +9,8 @@ import withList from '../../hocs/with_list/with_list' const FollowerList = compose( withLoadMore({ - fetch: (props, $store) => $store.dispatch('addFollowers', props.userId), - select: (props, $store) => get($store.getters.findUser(props.userId), 'followers', []), + fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId), + select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)), destory: (props, $store) => $store.dispatch('clearFollowers', props.userId), childPropName: 'entries', additionalPropNames: ['userId'] @@ -20,8 +20,8 @@ const FollowerList = compose( const FriendList = compose( withLoadMore({ - fetch: (props, $store) => $store.dispatch('addFriends', props.userId), - select: (props, $store) => get($store.getters.findUser(props.userId), 'friends', []), + fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId), + select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)), destory: (props, $store) => $store.dispatch('clearFriends', props.userId), childPropName: 'entries', additionalPropNames: ['userId'] diff --git a/src/modules/users.js b/src/modules/users.js index 6de50b80..74f33b81 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -1,5 +1,5 @@ import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js' -import { compact, map, each, merge, find, last } from 'lodash' +import { compact, map, each, merge, last, concat, uniq } from 'lodash' import { set } from 'vue' import { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js' import oauthApi from '../services/new_api/oauth' @@ -73,42 +73,27 @@ export const mutations = { endLogin (state) { state.loggingIn = false }, - // TODO Clean after ourselves? - addFriends (state, { id, friends }) { + saveFriendIds (state, { id, friendIds }) { const user = state.usersObject[id] - each(friends, friend => { - if (!find(user.friends, { id: friend.id })) { - user.friends.push(friend) - } - }) - user.lastFriendId = last(user.friends).id + user.friendIds = uniq(concat(user.friendIds, friendIds)) }, - addFollowers (state, { id, followers }) { + saveFollowerIds (state, { id, followerIds }) { const user = state.usersObject[id] - each(followers, follower => { - if (!find(user.followers, { id: follower.id })) { - user.followers.push(follower) - } - }) - user.lastFollowerId = last(user.followers).id + user.followerIds = uniq(concat(user.followerIds, followerIds)) }, // Because frontend doesn't have a reason to keep these stuff in memory // outside of viewing someones user profile. clearFriends (state, userId) { const user = state.usersObject[userId] - if (!user) { - return + if (user) { + set(user, 'friendIds', []) } - user.friends = [] - user.lastFriendId = null }, clearFollowers (state, userId) { const user = state.usersObject[userId] - if (!user) { - return + if (user) { + set(user, 'followerIds', []) } - user.followers = [] - user.lastFollowerId = null }, addNewUsers (state, users) { each(users, (user) => mergeOrAdd(state.users, state.usersObject, user)) @@ -240,25 +225,23 @@ const users = { return store.rootState.api.backendInteractor.unmuteUser(id) .then((relationship) => store.commit('updateUserRelationship', [relationship])) }, - addFriends ({ rootState, commit }, fetchBy) { - return new Promise((resolve, reject) => { - const user = rootState.users.usersObject[fetchBy] - const maxId = user.lastFriendId - rootState.api.backendInteractor.fetchFriends({ id: user.id, maxId }) - .then((friends) => { - commit('addFriends', { id: user.id, friends }) - resolve(friends) - }).catch(() => { - reject() - }) - }) + fetchFriends ({ rootState, commit }, id) { + const user = rootState.users.usersObject[id] + const maxId = last(user.friendIds) + return rootState.api.backendInteractor.fetchFriends({ id, maxId }) + .then((friends) => { + commit('addNewUsers', friends) + commit('saveFriendIds', { id, friendIds: map(friends, 'id') }) + return friends + }) }, - addFollowers ({ rootState, commit }, fetchBy) { - const user = rootState.users.usersObject[fetchBy] - const maxId = user.lastFollowerId - return rootState.api.backendInteractor.fetchFollowers({ id: user.id, maxId }) + fetchFollowers ({ rootState, commit }, id) { + const user = rootState.users.usersObject[id] + const maxId = last(user.followerIds) + return rootState.api.backendInteractor.fetchFollowers({ id, maxId }) .then((followers) => { - commit('addFollowers', { id: user.id, followers }) + commit('addNewUsers', followers) + commit('saveFollowerIds', { id, followerIds: map(followers, 'id') }) return followers }) }, diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index aef7062d..d68e5a98 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -129,8 +129,8 @@ export const parseUser = (data) => { output.locked = data.locked output.followers_count = data.followers_count output.statuses_count = data.statuses_count - output.friends = [] - output.followers = [] + output.friendIds = [] + output.followerIds = [] if (data.pleroma) { output.follow_request_count = data.pleroma.follow_request_count } -- cgit v1.2.3-70-g09d2 From 69f9ea987c2e1cda5ebb31b640ef42389fa8c210 Mon Sep 17 00:00:00 2001 From: taehoon Date: Tue, 2 Apr 2019 13:49:48 -0400 Subject: make blocking functional in the search results --- src/components/user_autosuggest/user_autosuggest.js | 5 +++-- src/components/user_autosuggest/user_autosuggest.vue | 2 +- src/modules/users.js | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src/modules/users.js') diff --git a/src/components/user_autosuggest/user_autosuggest.js b/src/components/user_autosuggest/user_autosuggest.js index b99f61cc..42914b36 100644 --- a/src/components/user_autosuggest/user_autosuggest.js +++ b/src/components/user_autosuggest/user_autosuggest.js @@ -1,11 +1,11 @@ -import BasicUserCard from '../basic_user_card/basic_user_card.vue' +import BlockCard from '../block_card/block_card.vue' import userSearchApi from '../../services/new_api/user_search.js' const debounceMilliseconds = 500 export default { components: { - BasicUserCard + BlockCard }, data () { return { @@ -28,6 +28,7 @@ export default { if (query) { userSearchApi.search({query, store: this.$store}) .then((data) => { + this.$store.dispatch('addNewUsers', data) this.results = data this.resultsVisible = true }) diff --git a/src/components/user_autosuggest/user_autosuggest.vue b/src/components/user_autosuggest/user_autosuggest.vue index 2840941f..d85fabf1 100644 --- a/src/components/user_autosuggest/user_autosuggest.vue +++ b/src/components/user_autosuggest/user_autosuggest.vue @@ -2,7 +2,7 @@
- +
diff --git a/src/modules/users.js b/src/modules/users.js index 6de50b80..545b1d58 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -281,6 +281,9 @@ const users = { unregisterPushNotifications(token) }, + addNewUsers ({ commit }, users) { + commit('addNewUsers', users) + }, addNewStatuses (store, { statuses }) { const users = map(statuses, 'user') const retweetedUsers = compact(map(statuses, 'retweeted_status.user')) -- cgit v1.2.3-70-g09d2 From 5c2c222252c09dec40d29e37692724699f551413 Mon Sep 17 00:00:00 2001 From: taehoon Date: Tue, 2 Apr 2019 14:56:37 -0400 Subject: add blocked user to the blocked list on real time --- src/modules/users.js | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/modules/users.js') diff --git a/src/modules/users.js b/src/modules/users.js index 545b1d58..2c6a0f81 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -132,6 +132,11 @@ export const mutations = { saveBlockIds (state, blockIds) { state.currentUser.blockIds = blockIds }, + addBlockId (state, blockId) { + if (state.currentUser.blockIds.indexOf(blockId) === -1) { + state.currentUser.blockIds.push(blockId) + } + }, updateMutes (state, mutedUsers) { // Reset muted of all fetched users each(state.users, (user) => { user.muted = false }) @@ -215,6 +220,7 @@ const users = { return store.rootState.api.backendInteractor.blockUser(userId) .then((relationship) => { store.commit('updateUserRelationship', [relationship]) + store.commit('addBlockId', userId) store.commit('removeStatus', { timeline: 'friends', userId }) store.commit('removeStatus', { timeline: 'public', userId }) store.commit('removeStatus', { timeline: 'publicAndExternal', userId }) -- cgit v1.2.3-70-g09d2 From 948baba9d351f8e5958e1f1aa7b9065c9c54f026 Mon Sep 17 00:00:00 2001 From: taehoon Date: Tue, 2 Apr 2019 16:23:12 -0400 Subject: add muted user to the mutes list in real time --- src/modules/users.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/modules/users.js') diff --git a/src/modules/users.js b/src/modules/users.js index 2c6a0f81..b6d8227c 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -145,6 +145,11 @@ export const mutations = { saveMuteIds (state, muteIds) { state.currentUser.muteIds = muteIds }, + addMuteId (state, muteId) { + if (state.currentUser.muteIds.indexOf(muteId) === -1) { + state.currentUser.muteIds.push(muteId) + } + }, setUserForStatus (state, status) { status.user = state.usersObject[status.user.id] }, @@ -240,7 +245,10 @@ const users = { }, muteUser (store, id) { return store.rootState.api.backendInteractor.muteUser(id) - .then((relationship) => store.commit('updateUserRelationship', [relationship])) + .then((relationship) => { + store.commit('updateUserRelationship', [relationship]) + store.commit('addMuteId', id) + }) }, unmuteUser (store, id) { return store.rootState.api.backendInteractor.unmuteUser(id) -- cgit v1.2.3-70-g09d2 From 13c8f10f4b42c1d698bc99694cd3556c691ac880 Mon Sep 17 00:00:00 2001 From: taehoon Date: Thu, 4 Apr 2019 13:54:52 -0400 Subject: wire up bulk action buttons to vuex --- src/components/user_settings/user_settings.js | 6 +++++ src/components/user_settings/user_settings.vue | 4 +-- src/modules/users.js | 36 ++++++++++++++++++-------- 3 files changed, 33 insertions(+), 13 deletions(-) (limited to 'src/modules/users.js') diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js index 022c847b..a9fe84b8 100644 --- a/src/components/user_settings/user_settings.js +++ b/src/components/user_settings/user_settings.js @@ -355,6 +355,12 @@ const UserSettings = { this.$store.dispatch('addNewUsers', users) return map(users, 'id') }) + }, + blockUsers (ids) { + return this.$store.dispatch('blockUsers', ids) + }, + unblockUsers (ids) { + return this.$store.dispatch('unblockUsers', ids) } } } diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue index 8bce431a..5e0b71bf 100644 --- a/src/components/user_settings/user_settings.vue +++ b/src/components/user_settings/user_settings.vue @@ -203,13 +203,13 @@