2017-09-27 02:46:00 +08:00
|
|
|
import { React, PropTypes, APIError, MailspringAPIRequest } from 'mailspring-exports';
|
|
|
|
import { MetadataComposerToggleButton } from 'mailspring-component-kit';
|
2017-09-27 02:33:08 +08:00
|
|
|
import { PLUGIN_ID, PLUGIN_NAME } from './open-tracking-constants';
|
2017-09-07 07:19:48 +08:00
|
|
|
|
|
|
|
export default class OpenTrackingButton extends React.Component {
|
|
|
|
static displayName = 'OpenTrackingButton';
|
|
|
|
|
|
|
|
static propTypes = {
|
2017-09-27 02:33:08 +08:00
|
|
|
draft: PropTypes.object.isRequired,
|
|
|
|
session: PropTypes.object.isRequired,
|
2017-09-07 07:19:48 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
shouldComponentUpdate(nextProps) {
|
2017-09-27 02:33:08 +08:00
|
|
|
return (
|
|
|
|
nextProps.draft.metadataForPluginId(PLUGIN_ID) !==
|
|
|
|
this.props.draft.metadataForPluginId(PLUGIN_ID)
|
|
|
|
);
|
2017-09-07 07:19:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
_errorMessage(error) {
|
2017-09-27 02:46:00 +08:00
|
|
|
if (
|
|
|
|
error instanceof APIError &&
|
|
|
|
MailspringAPIRequest.TimeoutErrorCodes.includes(error.statusCode)
|
|
|
|
) {
|
2017-09-27 02:33:08 +08:00
|
|
|
return `Open tracking does not work offline. Please re-enable when you come back online.`;
|
2017-09-07 07:19:48 +08:00
|
|
|
}
|
2018-01-25 06:13:08 +08:00
|
|
|
return `Unfortunately, open tracking is currently not available. Please try again later. Error: ${
|
|
|
|
error.message
|
|
|
|
}`;
|
2017-09-07 07:19:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
const enabledValue = {
|
|
|
|
open_count: 0,
|
|
|
|
open_data: [],
|
|
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
|
|
<MetadataComposerToggleButton
|
|
|
|
iconUrl="mailspring://open-tracking/assets/icon-composer-eye@2x.png"
|
|
|
|
pluginId={PLUGIN_ID}
|
|
|
|
pluginName={PLUGIN_NAME}
|
|
|
|
metadataEnabledValue={enabledValue}
|
|
|
|
errorMessage={this._errorMessage}
|
|
|
|
draft={this.props.draft}
|
|
|
|
session={this.props.session}
|
|
|
|
/>
|
2017-09-27 02:33:08 +08:00
|
|
|
);
|
2017-09-07 07:19:48 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
OpenTrackingButton.containerRequired = false;
|