forked from Ivasoft/mattermost-mobile
* Enable ESLint no-unused-vars * Use FastImage instead of Image * Update fast-image patch to support multiple cookies * Fix ESLint errors * Have jest run timers for post_textbox tests * Feedback review * Update snapshots
103 lines
3.4 KiB
JavaScript
103 lines
3.4 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import 'react-native/Libraries/Core/InitializeCore';
|
|
import {DeviceEventEmitter, Platform, Text} from 'react-native';
|
|
import 'react-native-gesture-handler';
|
|
|
|
import LocalConfig from 'assets/config';
|
|
|
|
import telemetry from 'app/telemetry';
|
|
|
|
import 'app/mattermost';
|
|
|
|
if (Platform.OS === 'android') {
|
|
require('harmony-reflect');
|
|
}
|
|
|
|
if (__DEV__) {
|
|
const YellowBox = require('react-native/Libraries/YellowBox/YellowBox');
|
|
YellowBox.ignoreWarnings([
|
|
'Warning: componentWillReceiveProps',
|
|
'Warning: StatusBarIOS',
|
|
'`-[RCTRootView cancelTouches]`',
|
|
'Animated',
|
|
|
|
// Hide warnings caused by React Native (https://github.com/facebook/react-native/issues/20841)
|
|
'Require cycle: node_modules/react-native/Libraries/Network/fetch.js',
|
|
]);
|
|
}
|
|
|
|
const setFontFamily = () => {
|
|
// Set a global font for Android
|
|
const defaultFontFamily = {
|
|
style: {
|
|
fontFamily: 'Roboto',
|
|
},
|
|
};
|
|
const TextRender = Text.render;
|
|
const initialDefaultProps = Text.defaultProps;
|
|
Text.defaultProps = {
|
|
...initialDefaultProps,
|
|
...defaultFontFamily,
|
|
};
|
|
Text.render = function render(props, ...args) {
|
|
const oldProps = props;
|
|
let newProps = {...props, style: [defaultFontFamily.style, props.style]};
|
|
try {
|
|
return Reflect.apply(TextRender, this, [newProps, ...args]);
|
|
} finally {
|
|
newProps = oldProps;
|
|
}
|
|
};
|
|
};
|
|
|
|
if (Platform.OS === 'android') {
|
|
const ShareExtension = require('share_extension/android').default;
|
|
const AppRegistry = require('react-native/Libraries/ReactNative/AppRegistry');
|
|
AppRegistry.registerComponent('MattermostShare', () => ShareExtension);
|
|
setFontFamily();
|
|
|
|
if (LocalConfig.TelemetryEnabled) {
|
|
const metricsSubscription = DeviceEventEmitter.addListener('nativeMetrics', (metrics) => {
|
|
telemetry.setAppStartTime(metrics.appReload);
|
|
telemetry.include([
|
|
{name: 'start:process_packages', startTime: metrics.processPackagesStart, endTime: metrics.processPackagesEnd},
|
|
{name: 'start:content_appeared', startTime: metrics.appReload, endTime: metrics.appContentAppeared},
|
|
]);
|
|
telemetry.start(['start:overall'], metrics.appReload);
|
|
|
|
DeviceEventEmitter.removeSubscription(metricsSubscription);
|
|
});
|
|
}
|
|
}
|
|
|
|
// Uncomment the snippet below if you want to update the modules
|
|
// defined in packager/modulePaths.js so they are included in the main bundle.
|
|
|
|
/*
|
|
//!* eslint-disable no-console *!/
|
|
if (__DEV__) {
|
|
const modules = require.getModules();
|
|
const moduleIds = Object.keys(modules);
|
|
const loadedModuleNames = moduleIds.
|
|
filter((moduleId) => modules[moduleId].isInitialized).
|
|
map((moduleId) => modules[moduleId].verboseName);
|
|
|
|
const waitingModuleNames = moduleIds.
|
|
filter((moduleId) => !modules[moduleId].isInitialized).
|
|
map((moduleId) => modules[moduleId].verboseName);
|
|
|
|
// make sure that the modules you expect to be waiting are actually waiting
|
|
console.log(
|
|
'loaded:',
|
|
loadedModuleNames.length,
|
|
'waiting:',
|
|
waitingModuleNames.length,
|
|
);
|
|
|
|
// grab this text blob, and put it in a file named packager/moduleNames.js
|
|
console.log(`module.exports = ${JSON.stringify(loadedModuleNames.sort())};`);
|
|
}
|
|
*/
|