2016-10-28 23:26:51 +11:00
|
|
|
import timelineFetcher from '../services/timeline_fetcher/timeline_fetcher.service.js'
|
2016-11-27 04:57:08 +11:00
|
|
|
import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'
|
2016-10-28 03:03:14 +11:00
|
|
|
|
|
|
|
const users = {
|
|
|
|
state: {
|
|
|
|
currentUser: false,
|
|
|
|
loggingIn: false
|
|
|
|
},
|
|
|
|
mutations: {
|
|
|
|
setCurrentUser (state, user) {
|
|
|
|
state.currentUser = user
|
|
|
|
},
|
|
|
|
beginLogin (state) {
|
|
|
|
state.loggingIn = true
|
|
|
|
},
|
|
|
|
endLogin (state) {
|
|
|
|
state.loggingIn = false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
actions: {
|
2016-10-28 23:26:51 +11:00
|
|
|
loginUser (store, userCredentials) {
|
|
|
|
const commit = store.commit
|
2016-10-28 03:03:14 +11:00
|
|
|
commit('beginLogin')
|
2016-11-27 05:12:09 +11:00
|
|
|
return store.rootState.api.backendInteractor.verifyCredentials(userCredentials)
|
2016-10-28 03:03:14 +11:00
|
|
|
.then((response) => {
|
|
|
|
if (response.ok) {
|
|
|
|
response.json()
|
2016-10-31 02:12:35 +11:00
|
|
|
.then((user) => {
|
|
|
|
user.credentials = userCredentials
|
|
|
|
commit('setCurrentUser', user)
|
|
|
|
})
|
2016-11-27 04:57:08 +11:00
|
|
|
// Start getting fresh tweets.
|
2016-10-28 23:26:51 +11:00
|
|
|
.then(() => timelineFetcher.startFetching({store, credentials: userCredentials}))
|
2016-11-27 04:57:08 +11:00
|
|
|
// Set our new backend interactor
|
|
|
|
.then(() => commit('setBackendInteractor', backendInteractorService(userCredentials)))
|
2016-10-28 03:03:14 +11:00
|
|
|
}
|
|
|
|
commit('endLogin')
|
|
|
|
})
|
|
|
|
.catch((error) => {
|
|
|
|
console.log(error)
|
|
|
|
commit('endLogin')
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default users
|