diff options
Diffstat (limited to 'src/modules/users.js')
| -rw-r--r-- | src/modules/users.js | 55 |
1 files changed, 41 insertions, 14 deletions
diff --git a/src/modules/users.js b/src/modules/users.js index 199799b8..46a2e087 100644 --- a/src/modules/users.js +++ b/src/modules/users.js @@ -1,23 +1,50 @@ import timelineFetcher from '../services/timeline_fetcher/timeline_fetcher.service.js' import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js' +import { map, each, find, merge } from 'lodash' -const users = { - state: { - currentUser: false, - loggingIn: false +// TODO: Unify with mergeOrAdd in statuses.js +export const mergeOrAdd = (arr, item) => { + const oldItem = find(arr, {id: item.id}) + if (oldItem) { + // We already have this, so only merge the new info. + merge(oldItem, item) + return {item: oldItem, new: false} + } else { + // This is a new item, prepare it + arr.push(item) + return {item, new: true} + } +} + +export const mutations = { + setCurrentUser (state, user) { + state.currentUser = user }, - mutations: { - setCurrentUser (state, user) { - state.currentUser = user - }, - beginLogin (state) { - state.loggingIn = true - }, - endLogin (state) { - state.loggingIn = false - } + beginLogin (state) { + state.loggingIn = true + }, + endLogin (state) { + state.loggingIn = false }, + addNewUsers (state, users) { + each(users, (user) => mergeOrAdd(state.users, user)) + } +} + +export const defaultState = { + currentUser: false, + loggingIn: false, + users: [] +} + +const users = { + state: defaultState, + mutations, actions: { + addNewStatuses (store, { statuses }) { + const users = map(statuses, 'user') + store.commit('addNewUsers', users) + }, loginUser (store, userCredentials) { const commit = store.commit commit('beginLogin') |
