import React from 'react' import { Button, Glyphicon, Alert, ButtonToolbar } from 'react-bootstrap' import SectionLayout from './section_layout' import IMAPButton from './imap_button' import Account from 'models/account' import Spinner from 'components/spinner' import bitmask from 'lib/bitmask' import App from 'app' const GENERAL_NOTICES = [ "KEYMANAGER_KEY_FOUND", // (address) "KEYMANAGER_KEY_NOT_FOUND", // (address) "KEYMANAGER_LOOKING_FOR_KEY", // (address) "KEYMANAGER_DONE_UPLOADING_KEYS", // (address) "SMTP_START_ENCRYPT_AND_SIGN", // (from_addr) "SMTP_END_ENCRYPT_AND_SIGN", // (from_addr) "SMTP_START_SIGN", // (from_addr) "SMTP_END_SIGN", // (from_addr) "SMTP_SEND_MESSAGE_START", // (from_addr) "SMTP_SEND_MESSAGE_SUCCESS" // (from_addr) ] const ACCOUNT_NOTICES = [ "IMAP_CLIENT_LOGIN", // (username) "MAIL_FETCHED_INCOMING", // (userid) "MAIL_MSG_DECRYPTED", // (userid) "MAIL_MSG_DELETED_INCOMING", // (userid) "MAIL_MSG_PROCESSING", // (userid) "MAIL_MSG_SAVED_LOCALLY", // (userid) "SMTP_RECIPIENT_ACCEPTED_ENCRYPTED", // (userid, dest) "SMTP_RECIPIENT_ACCEPTED_UNENCRYPTED", // (userid, dest) "SMTP_RECIPIENT_REJECTED", // (userid, dest) "SMTP_SEND_MESSAGE_ERROR" // (userid, dest) ] const STATUSES = [ "KEYMANAGER_FINISHED_KEY_GENERATION", // (address) "KEYMANAGER_STARTED_KEY_GENERATION", // (address) "SMTP_SERVICE_STARTED", "MAIL_UNREAD_MESSAGES", // (userid, number) "IMAP_SERVICE_STARTED" ] const STATUS_ERRORS = [ "IMAP_SERVICE_FAILED_TO_START", "IMAP_UNHANDLED_ERROR", "SMTP_SERVICE_FAILED_TO_START", "SMTP_CONNECTION_LOST", // (userid, dest) ] export default class EmailSection extends React.Component { static get defaultProps() {return{ account: null }} constructor(props) { super(props) this.state = { status: 'unknown', // on, off, unknown, wait, disabled, error messages: [], expanded: true } this.expand = this.expand.bind(this) this.openKeys = this.openKeys.bind(this) this.openApp = this.openApp.bind(this) this.openPrefs = this.openPrefs.bind(this) this.logEvent = this.logEvent.bind(this) } componentWillMount() { let events = [].concat(GENERAL_NOTICES, ACCOUNT_NOTICES, STATUSES, STATUS_ERRORS) for (let event of events) { bitmask.events.register(event, this.logEvent) } bitmask.mail.status(this.props.account.id).then(status => { this.setState({ status: status.status, error: status.error }) }) } logEvent(event, msg) { console.log("EVENT: " + event, msg) } openKeys() { App.show('addressbook', {account: this.props.account}) } openPixelated() { if (bitmaskBrowser) { // we are inside a qtwebkit page that exports the object bitmaskBrowser.openPixelated(); } else { window.open("http://localhost:9090"); } } openApp() {} openPrefs() {} expand() { this.setState({expanded: !this.state.expanded}) } render () { let message = null if (this.state.error) { // style may be: success, warning, danger, info message = ( {this.state.error} ) } let button = null let body = null let header =

Mail

if (this.state.status == 'on') { // FIXME disabling until #8792 is fixed // button = } if (this.state.status == 'disabled') { header =

Mail Disabled

} if (this.state.expanded) { body = (
{message}
) } return ( ) } }