2016-04-01 06:52:03 +08:00
|
|
|
import React from 'react';
|
|
|
|
import {ipcRenderer} from 'electron';
|
|
|
|
import {AccountStore, Actions} from 'nylas-exports';
|
|
|
|
|
|
|
|
import PreferencesAccountList from './preferences-account-list';
|
|
|
|
import PreferencesAccountDetails from './preferences-account-details';
|
|
|
|
|
|
|
|
|
|
|
|
class PreferencesAccounts extends React.Component {
|
|
|
|
|
|
|
|
static displayName = 'PreferencesAccounts';
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
this.state = this.getStateFromStores();
|
|
|
|
this.state.selected = this.state.accounts[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
componentDidMount() {
|
|
|
|
this.unsubscribe = AccountStore.listen(this._onAccountsChanged)
|
|
|
|
}
|
|
|
|
|
|
|
|
componentWillUnmount() {
|
|
|
|
this.unsubscribe();
|
|
|
|
}
|
|
|
|
|
|
|
|
getStateFromStores() {
|
|
|
|
return {accounts: AccountStore.accounts()};
|
|
|
|
}
|
|
|
|
|
|
|
|
_onAccountsChanged = () => {
|
|
|
|
this.setState(this.getStateFromStores());
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update account list actions
|
|
|
|
_onAddAccount() {
|
|
|
|
ipcRenderer.send('command', 'application:add-account');
|
|
|
|
}
|
|
|
|
|
|
|
|
_onReorderAccount(account, oldIdx, newIdx) {
|
|
|
|
Actions.reorderAccount(account.id, newIdx);
|
|
|
|
}
|
|
|
|
|
|
|
|
_onSelectAccount = (account) => {
|
|
|
|
this.setState({selected: account});
|
|
|
|
}
|
|
|
|
|
|
|
|
_onRemoveAccount(account) {
|
|
|
|
Actions.removeAccount(account.id);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update account actions
|
|
|
|
_onAccountUpdated(account, updates) {
|
|
|
|
Actions.updateAccount(account.id, updates);
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
return (
|
|
|
|
<div className="container-accounts">
|
|
|
|
<div className="accounts-content">
|
|
|
|
<PreferencesAccountList
|
|
|
|
accounts={this.state.accounts}
|
|
|
|
selected={this.state.selected}
|
|
|
|
onAddAccount={this._onAddAccount}
|
|
|
|
onReorderAccount={this._onReorderAccount}
|
|
|
|
onSelectAccount={this._onSelectAccount}
|
2016-05-07 07:23:48 +08:00
|
|
|
onRemoveAccount={this._onRemoveAccount}
|
|
|
|
/>
|
2016-04-01 06:52:03 +08:00
|
|
|
<PreferencesAccountDetails
|
|
|
|
account={this.state.selected}
|
2016-05-07 07:23:48 +08:00
|
|
|
onAccountUpdated={this._onAccountUpdated}
|
|
|
|
/>
|
2016-04-01 06:52:03 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
export default PreferencesAccounts;
|