forked from Ivasoft/mattermost-mobile
* Switch to SingleDex and remove all locales * WIP Mattermost Start Component for lazy loading modules * Add files changed for native modules * Add Entry component and app global object * dispatch setStatusBarHeight for iOS * Update screen imports * Include Entry screen * Refactor app to mattermost.android.js * Override unnecessary java files * Fix minor issues in changes * Display empty state based on user credentials Also, add proper background theme for empty loading screen * Add native module constant cache support * Fix startup theme regression * Add Keychain support for credentials * Fix Orientation regression * Fix SharedExtension regression * Emit NATIVE_APP_LAUNCHED across bridge only once during cold start * Add iOS Support * Revert to previous implementation of i18n * Fix styling issues * Include listener for SERVER_VERSION_CHANGED * Add SafeAreaView in Entry screen * Register deviceToken early, in order to get iOS PN Support * Include StartTimeModule * Add ReplyFromPush support and remove NATIVE_APP_LAUNCHED listener * Package native constants in StartTimeModule and avoid bridge calls * Fix check-style errors * Code cleanup * Rename StartTimeModule to InitializationModule * Remove NavigationApplication * Documentation and minor changes * Account for app opening after SharedExtension * Refactor getIntl to getTranslations * Move native module constants into it's own forked repos * Include FetchBlob and DeviceInfo forked repos
118 lines
4.1 KiB
Java
118 lines
4.1 KiB
Java
package com.mattermost.rnbeta;
|
|
|
|
import com.mattermost.share.SharePackage;
|
|
|
|
import android.support.annotation.NonNull;
|
|
import android.content.Context;
|
|
import android.os.Bundle;
|
|
|
|
import com.reactnativedocumentpicker.ReactNativeDocumentPicker;
|
|
import com.oblador.keychain.KeychainPackage;
|
|
import com.reactlibrary.RNReactNativeDocViewerPackage;
|
|
import com.brentvatne.react.ReactVideoPackage;
|
|
import com.horcrux.svg.SvgPackage;
|
|
import com.inprogress.reactnativeyoutube.ReactNativeYouTube;
|
|
import io.sentry.RNSentryPackage;
|
|
import com.masteratul.exceptionhandler.ReactNativeExceptionHandlerPackage;
|
|
import com.RNFetchBlob.RNFetchBlobPackage;
|
|
import com.gantix.JailMonkey.JailMonkeyPackage;
|
|
import io.tradle.react.LocalAuthPackage;
|
|
|
|
import com.facebook.react.ReactPackage;
|
|
import com.facebook.soloader.SoLoader;
|
|
|
|
import com.imagepicker.ImagePickerPackage;
|
|
import com.gnet.bottomsheet.RNBottomSheetPackage;
|
|
import com.learnium.RNDeviceInfo.RNDeviceInfo;
|
|
import com.psykar.cookiemanager.CookieManagerPackage;
|
|
import com.oblador.vectoricons.VectorIconsPackage;
|
|
import com.BV.LinearGradient.LinearGradientPackage;
|
|
import com.github.yamill.orientation.OrientationPackage;
|
|
import com.reactnativenavigation.NavigationApplication;
|
|
import com.wix.reactnativenotifications.RNNotificationsPackage;
|
|
import com.wix.reactnativenotifications.core.notification.INotificationsApplication;
|
|
import com.wix.reactnativenotifications.core.notification.IPushNotification;
|
|
import com.wix.reactnativenotifications.core.AppLaunchHelper;
|
|
import com.wix.reactnativenotifications.core.AppLifecycleFacade;
|
|
import com.wix.reactnativenotifications.core.JsIOHelper;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
public class MainApplication extends NavigationApplication implements INotificationsApplication {
|
|
public NotificationsLifecycleFacade notificationsLifecycleFacade;
|
|
public Boolean sharedExtensionIsOpened = false;
|
|
public Boolean replyFromPushNotification = false;
|
|
|
|
@Override
|
|
public boolean isDebug() {
|
|
return BuildConfig.DEBUG;
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public List<ReactPackage> createAdditionalReactPackages() {
|
|
// Add the packages you require here.
|
|
// No need to add RnnPackage and MainReactPackage
|
|
return Arrays.<ReactPackage>asList(
|
|
new ImagePickerPackage(),
|
|
new RNBottomSheetPackage(),
|
|
new RNDeviceInfo(),
|
|
new CookieManagerPackage(),
|
|
new VectorIconsPackage(),
|
|
new SvgPackage(),
|
|
new LinearGradientPackage(),
|
|
new OrientationPackage(),
|
|
new RNNotificationsPackage(this),
|
|
new LocalAuthPackage(),
|
|
new JailMonkeyPackage(),
|
|
new RNFetchBlobPackage(),
|
|
new MattermostPackage(this),
|
|
new RNSentryPackage(this),
|
|
new ReactNativeExceptionHandlerPackage(),
|
|
new ReactNativeYouTube(),
|
|
new ReactVideoPackage(),
|
|
new RNReactNativeDocViewerPackage(),
|
|
new ReactNativeDocumentPicker(),
|
|
new SharePackage(this),
|
|
new KeychainPackage(),
|
|
new InitializationPackage(this)
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public String getJSMainModuleName() {
|
|
return "index";
|
|
}
|
|
|
|
@Override
|
|
public void onCreate() {
|
|
super.onCreate();
|
|
instance = this;
|
|
// Create an object of the custom facade impl
|
|
notificationsLifecycleFacade = NotificationsLifecycleFacade.getInstance();
|
|
// Attach it to react-native-navigation
|
|
setActivityCallbacks(notificationsLifecycleFacade);
|
|
|
|
SoLoader.init(this, /* native exopackage */ false);
|
|
}
|
|
|
|
@Override
|
|
public boolean clearHostOnActivityDestroy() {
|
|
// This solves the issue where the splash screen does not go away
|
|
// after the app is killed by the OS cause of memory or a long time in the background
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public IPushNotification getPushNotification(Context context, Bundle bundle, AppLifecycleFacade defaultFacade, AppLaunchHelper defaultAppLaunchHelper) {
|
|
return new CustomPushNotification(
|
|
context,
|
|
bundle,
|
|
notificationsLifecycleFacade, // Instead of defaultFacade!!!
|
|
defaultAppLaunchHelper,
|
|
new JsIOHelper()
|
|
);
|
|
}
|
|
}
|