diff options
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/app/app.js | 34 | ||||
| -rw-r--r-- | ui/app/components/main_panel/email_section.js | 39 | ||||
| -rw-r--r-- | ui/app/components/main_panel/index.js | 14 | ||||
| -rw-r--r-- | ui/app/models/account.js | 17 | 
4 files changed, 50 insertions, 54 deletions
| diff --git a/ui/app/app.js b/ui/app/app.js index 05dadf1f..ea7f0f52 100644 --- a/ui/app/app.js +++ b/ui/app/app.js @@ -16,21 +16,25 @@ class Application {    }    start() { -    Provider.list(false).then(domains => { -      Account.initializeList(domains) -      Account.active().then(account => { -        if (account == null) { -          this.show('greeter') -        } else { -          Account.addPrimary(account) -          this.show('main', {initialAccount: account}) -        } -      }, error => { -        this.showError(error) -      }) -    }, error => { -      this.showError(error) -    }) +    Provider.list(false).then( +      domains => { +        Account.initializeList(domains) +        Account.active().then( +          accounts => { +            if (0 == accounts.length) { +              this.show('greeter') +            } else { +              accounts.forEach(account => { +                Account.addActive(account) +              }) +              this.show('main', {initialAccount: Account.list[0]}) +            } +          }, +          error => {this.showError(error)} +        ) +      }, +      error => {this.showError(error)} +    )    }    show(panel, properties) { diff --git a/ui/app/components/main_panel/email_section.js b/ui/app/components/main_panel/email_section.js index c86188eb..e48b8e27 100644 --- a/ui/app/components/main_panel/email_section.js +++ b/ui/app/components/main_panel/email_section.js @@ -74,19 +74,15 @@ export default class EmailSection extends React.Component {    }    componentWillMount() { -    //let events = [].concat(GENERAL_NOTICES, ACCOUNT_NOTICES, STATUSES, STATUS_ERRORS) -    //for (let event of events) { -    //  bitmask.events.register(event, this.logEvent) -    //} +    let events = [].concat(GENERAL_NOTICES, ACCOUNT_NOTICES, STATUSES, STATUS_ERRORS) +    for (let event of events) { +      bitmask.events.register(event, this.logEvent) +    }      bitmask.mail.status().then(status => { -      // either 'running' or 'disabled' -      let newstatus = 'error' -      if (status['mail'] == 'running') { -        newstatus = 'on' -      } else if (status['mail'] == 'disabled') { -        newstatus = 'disabled' -      } -      this.setState({status: newstatus}) +      this.setState({ +        status: status.status, +        error: status.error +      })      })    } @@ -107,13 +103,13 @@ export default class EmailSection extends React.Component {    }    render () { -    //let message = null -    //if (this.state.error) { -    //  // style may be: success, warning, danger, info -    //  message = ( -    //    <Alert bsStyle="danger">{this.state.error}</Alert> -    //  ) -    //} +    let message = null +    if (this.state.error) { +      // style may be: success, warning, danger, info +      message = ( +        <Alert bsStyle="danger">{this.state.error}</Alert> +      ) +    }      let button = null      let body = null      let header = <h1>Mail</h1> @@ -124,12 +120,13 @@ export default class EmailSection extends React.Component {        header = <h1>Mail Disabled</h1>      }      if (this.state.expanded) { -      body = ( +      body = (<div> +        {message}          <ButtonToolbar>            <IMAPButton account={this.props.account} />            <Button onClick={this.openKeys}>Addressbook</Button>          </ButtonToolbar> -      ) +      </div>)      }      return (        <SectionLayout icon="envelope" status={this.state.status} diff --git a/ui/app/components/main_panel/index.js b/ui/app/components/main_panel/index.js index 05a1e903..cac58cbb 100644 --- a/ui/app/components/main_panel/index.js +++ b/ui/app/components/main_panel/index.js @@ -76,14 +76,12 @@ export default class MainPanel extends React.Component {        }      } -    if (false) { -      sidePanel = ( -        <AccountList account={this.state.account} -          accounts={this.state.accounts} -          onSelect={this.activateAccount} -          onRemove={this.removeAccount}/> -      ) -    } +    sidePanel = ( +      <AccountList account={this.state.account} +        accounts={this.state.accounts} +        onSelect={this.activateAccount} +        onRemove={this.removeAccount}/> +    )      return (        <div className="main-panel"> diff --git a/ui/app/models/account.js b/ui/app/models/account.js index 0251da03..3656d2c7 100644 --- a/ui/app/models/account.js +++ b/ui/app/models/account.js @@ -109,19 +109,16 @@ export default class Account {    }    // -  // returns a promise, fullfill is passed account object +  // returns a list of the authenticated accounts    //    static active() { -    if (!bitmask.api_token()) { -      return new Promise((resolve, reject) => {resolve(null)}) -    } -    return bitmask.bonafide.user.active().then( +    return bitmask.bonafide.user.list().then(        response => { -        if (response.user == '<none>') { -          return null -        } else { -          return new Account(response.user, {authenticated: true}) +        let list = [] +        for (let accountProps of response) { +          list.push(new Account(accountProps.userid, accountProps))          } +        return list        }      )    } @@ -181,7 +178,7 @@ export default class Account {    // this is a temporary hack to support the old behavior    // util the backend has a proper concept of an account list.    // -  static addPrimary(account) { +  static addActive(account) {      Account.list = Account.list.filter(i => {        return i.domain != account.domain      }) | 
