aboutsummaryrefslogtreecommitdiff
path: root/src/modules/users.js
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2019-03-21 22:11:02 +0200
committerHenry Jameson <me@hjkos.com>2019-03-21 22:11:02 +0200
commitfaef769b40784c32b095db24d16a92c80ce7ea1f (patch)
treede183d334a019c37138e5ae9524e972a24e17300 /src/modules/users.js
parent6e2946f35290380cbd9e2147a570469f1be18ab6 (diff)
parent66e60572bc5f3f35a902417547c1d38e3665fbb7 (diff)
Merge remote-tracking branch 'upstream/develop' into masto-api/direct
* upstream/develop: (47 commits) #449 - fix auth token fetch issue Make select tag use --inputText as text color #444 - remote follow clean up #444 - show `remote follow` button when logged out Add button to save without cropping post-merge fixes [i18n] Update oc.json after store: fix setting postFormats field fix user-card avatar falling into permament failed state fix flake id users not fetching correctly fix console error afterStoreSetup: Move log in and theme load to afterStoreSetup. afterStoreSetup: Handle 404 cases. afterStoreSetup: Emoji and nodeinfo refactor. afterStoreSetup: refactor TOS and panel fetching, handle 404s. afterStoreSetup: refactor. Load persistedStated with async/await. whoops レインせんぱいにサンキュー fix embedded relationship card parsing ...
Diffstat (limited to 'src/modules/users.js')
-rw-r--r--src/modules/users.js40
1 files changed, 32 insertions, 8 deletions
diff --git a/src/modules/users.js b/src/modules/users.js
index 4159964c..1fe12fc8 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -18,7 +18,7 @@ export const mergeOrAdd = (arr, obj, item) => {
arr.push(item)
obj[item.id] = item
if (item.screen_name && !item.screen_name.includes('@')) {
- obj[item.screen_name] = item
+ obj[item.screen_name.toLowerCase()] = item
}
return { item, new: true }
}
@@ -91,6 +91,17 @@ export const mutations = {
addNewUsers (state, users) {
each(users, (user) => mergeOrAdd(state.users, state.usersObject, user))
},
+ updateUserRelationship (state, relationships) {
+ relationships.forEach((relationship) => {
+ const user = state.usersObject[relationship.id]
+ if (user) {
+ user.follows_you = relationship.followed_by
+ user.following = relationship.following
+ user.muted = relationship.muting
+ user.statusnet_blocking = relationship.blocking
+ }
+ })
+ },
saveBlocks (state, blockIds) {
state.currentUser.blockIds = blockIds
},
@@ -122,12 +133,14 @@ export const mutations = {
}
export const getters = {
- userById: state => id =>
- state.users.find(user => user.id === id),
- userByName: state => name =>
- state.users.find(user => user.screen_name &&
- (user.screen_name.toLowerCase() === name.toLowerCase())
- )
+ findUser: state => query => {
+ const result = state.usersObject[query]
+ // In case it's a screen_name, we can try searching case-insensitive
+ if (!result && typeof query === 'string') {
+ return state.usersObject[query.toLowerCase()]
+ }
+ return result
+ }
}
export const defaultState = {
@@ -147,7 +160,14 @@ const users = {
actions: {
fetchUser (store, id) {
return store.rootState.api.backendInteractor.fetchUser({ id })
- .then((user) => store.commit('addNewUsers', [user]))
+ .then((user) => {
+ store.commit('addNewUsers', [user])
+ return user
+ })
+ },
+ fetchUserRelationship (store, id) {
+ return store.rootState.api.backendInteractor.fetchUserRelationship({ id })
+ .then((relationships) => store.commit('updateUserRelationship', relationships))
},
fetchBlocks (store) {
return store.rootState.api.backendInteractor.fetchBlocks()
@@ -292,6 +312,7 @@ const users = {
logout (store) {
store.commit('clearCurrentUser')
+ store.dispatch('disconnectFromChat')
store.commit('setToken', false)
store.dispatch('stopFetching', 'friends')
store.commit('setBackendInteractor', backendInteractorService())
@@ -321,6 +342,9 @@ const users = {
if (user.token) {
store.dispatch('setWsToken', user.token)
+
+ // Initialize the chat socket.
+ store.dispatch('initializeSocket')
}
// Start getting fresh posts.