2015-06-05 11:06:36 +02:00
|
|
|
'use strict';
|
|
|
|
|
2016-02-09 09:40:27 +01:00
|
|
|
import { alt, altUser, altThirdParty } from '../alt';
|
2016-01-08 14:59:45 +01:00
|
|
|
|
|
|
|
import EventActions from '../actions/event_actions';
|
2015-05-20 16:19:40 +02:00
|
|
|
|
2016-01-08 14:59:45 +01:00
|
|
|
import UserActions from '../actions/user_actions';
|
2015-10-30 16:57:03 +01:00
|
|
|
import UserSource from '../sources/user_source';
|
2015-05-20 16:44:45 +02:00
|
|
|
|
2015-10-29 17:15:26 +01:00
|
|
|
|
2015-10-30 16:57:03 +01:00
|
|
|
class UserStore {
|
2015-05-20 16:19:40 +02:00
|
|
|
constructor() {
|
2015-06-01 18:59:47 +02:00
|
|
|
this.currentUser = {};
|
2015-11-03 10:07:44 +01:00
|
|
|
this.userMeta = {
|
2016-01-13 16:03:08 +01:00
|
|
|
hasLoaded: false,
|
2015-11-03 10:07:44 +01:00
|
|
|
err: null
|
|
|
|
};
|
2015-11-02 11:31:02 +01:00
|
|
|
|
2015-06-03 11:49:39 +02:00
|
|
|
this.bindActions(UserActions);
|
2015-10-30 16:57:03 +01:00
|
|
|
this.registerAsync(UserSource);
|
2016-01-13 16:03:08 +01:00
|
|
|
this.exportPublicMethods({
|
|
|
|
hasLoaded: this.hasLoaded.bind(this)
|
|
|
|
});
|
2015-05-20 16:19:40 +02:00
|
|
|
}
|
|
|
|
|
2015-11-02 11:31:02 +01:00
|
|
|
onFetchCurrentUser(invalidateCache) {
|
2016-02-05 10:38:59 +01:00
|
|
|
if (invalidateCache || !this.getInstance().isLoading()) {
|
|
|
|
this.getInstance().lookupCurrentUser(invalidateCache);
|
2015-10-30 16:57:03 +01:00
|
|
|
}
|
2016-02-05 10:38:59 +01:00
|
|
|
|
|
|
|
// Prevent alt from sending an empty change event when a request is sent
|
|
|
|
// off to the source
|
|
|
|
this.preventDefault();
|
2015-05-20 16:19:40 +02:00
|
|
|
}
|
2015-10-30 16:57:03 +01:00
|
|
|
|
2016-01-13 16:03:08 +01:00
|
|
|
onSuccessFetchCurrentUser({ users: [ user = {} ] = [] }) {
|
|
|
|
this.userMeta.hasLoaded = true;
|
2015-11-16 17:44:56 +01:00
|
|
|
this.userMeta.err = null;
|
2016-01-08 14:59:45 +01:00
|
|
|
|
|
|
|
if (user.email && user.email !== this.currentUser.email) {
|
|
|
|
EventActions.userDidAuthenticate(user);
|
|
|
|
}
|
|
|
|
|
2015-10-30 16:57:03 +01:00
|
|
|
this.currentUser = user;
|
|
|
|
}
|
|
|
|
|
2015-11-02 16:32:55 +01:00
|
|
|
onLogoutCurrentUser() {
|
2016-01-18 19:14:34 +01:00
|
|
|
this.getInstance().performLogoutCurrentUser();
|
2016-02-05 10:38:59 +01:00
|
|
|
|
|
|
|
// Prevent alt from sending an empty change event when a request is sent
|
|
|
|
// off to the source
|
|
|
|
this.preventDefault();
|
2015-11-02 16:32:55 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
onSuccessLogoutCurrentUser() {
|
2016-01-18 19:14:34 +01:00
|
|
|
EventActions.userDidLogout();
|
|
|
|
|
|
|
|
// Reset all stores back to their initial state
|
2016-02-09 09:40:27 +01:00
|
|
|
// Don't recycle the whitelabel stores since they're not dependent on login
|
2016-01-18 19:14:34 +01:00
|
|
|
alt.recycle();
|
2016-02-08 17:49:11 +01:00
|
|
|
altUser.recycle();
|
2016-01-18 19:14:34 +01:00
|
|
|
altThirdParty.recycle();
|
|
|
|
|
|
|
|
// Since we've just logged out, we can set this store's
|
|
|
|
// hasLoaded flag back to true as there is no current user.
|
|
|
|
this.userMeta.hasLoaded = true;
|
2015-06-20 16:43:18 +02:00
|
|
|
}
|
2015-11-02 15:47:57 +01:00
|
|
|
|
2015-11-16 17:16:13 +01:00
|
|
|
onErrorCurrentUser(err) {
|
2015-11-02 15:47:57 +01:00
|
|
|
console.logGlobal(err);
|
2016-01-13 16:03:08 +01:00
|
|
|
this.userMeta.hasLoaded = true;
|
2015-11-03 10:07:44 +01:00
|
|
|
this.userMeta.err = err;
|
2015-11-02 15:47:57 +01:00
|
|
|
}
|
2016-01-13 16:03:08 +01:00
|
|
|
|
|
|
|
hasLoaded() {
|
|
|
|
return this.userMeta.hasLoaded;
|
|
|
|
}
|
2015-06-01 18:59:47 +02:00
|
|
|
}
|
2015-05-20 16:19:40 +02:00
|
|
|
|
2016-02-08 17:49:11 +01:00
|
|
|
export default altUser.createStore(UserStore, 'UserStore');
|