mattermost-mobile/share_extension/ios/index.js
Chris Duarte d9f2bca9c0 Share ext error (#1587)
* Wrap iOS share extension in error boundary component

* Wrap Android share extension in error boundary component

* Review feedback
2018-04-17 15:23:37 -04:00

67 lines
1.6 KiB
JavaScript

// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React, {PureComponent} from 'react';
import {NativeModules} from 'react-native';
import {IntlProvider} from 'react-intl';
import DeviceInfo from 'react-native-device-info';
import Config from 'assets/config';
import {getTranslations} from 'app/i18n';
import {captureExceptionWithoutState, initializeSentry, LOGGER_EXTENSION} from 'app/utils/sentry';
import ErrorMessage from './error_message';
import Extension from './extension';
const ShareExtension = NativeModules.MattermostShare;
export class SharedApp extends PureComponent {
constructor(props) {
super(props);
initializeSentry();
this.state = {
hasError: false,
};
}
componentDidCatch(error) {
this.setState({hasError: true});
captureExceptionWithoutState(error, LOGGER_EXTENSION);
}
close = (data) => {
ShareExtension.close(data, Config.AppGroupId);
};
render() {
if (this.state.hasError) {
return (
<ErrorMessage close={this.close}/>
);
}
return (
<Extension
appGroupId={Config.AppGroupId}
onClose={this.close}
/>
);
}
}
export default function ShareExtensionProvider() {
const locale = DeviceInfo.getDeviceLocale().split('-')[0];
return (
<IntlProvider
locale={locale}
messages={getTranslations(locale)}
>
<SharedApp/>
</IntlProvider>
);
}