Repository URL to install this package:
|
Version:
0.0.5 ▾
|
react-native-motif-sdk
/
android
/
src
/
main
/
java
/
com
/
vipera
/
de
/
rn
/
assetmanager
/
RNAssetManager.java
|
|---|
package com.vipera.de.rn.assetmanager;
import android.app.Application;
import android.content.Context;
import android.support.annotation.IdRes;
import android.support.annotation.XmlRes;
import android.util.Log;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import com.vipera.de.rn.RNContextHelper;
import com.vipera.de.rn.assetmanager.logs.RNUpdateLog;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class RNAssetManager implements ReactPackage {
private static final String LOG_TAG = "RNAssetManager";
public static String DEFAULT_APP_CHECK_OP = "appcheck";
public static String DEFAULT_ASSET_DOWNLOAD_OP = "assetdld";
public static String DEFAULT_DOM = "Default";
public static String DEFAULT_APP = "vipera";
public static String DEFAULT_SRV = "appcont";
private static RNAssetManager currentInstance;
private final RNAssetManagerConfig configuration;
private RNUpdateManager updateManager;
private RNUpdateLog updateLog;
/*public RNAssetManager(Application application){
this(application,RNAssetManagerConfig.Builder.initFromResources(application).build());
}*/
public RNAssetManager(Application application, @XmlRes int xmlConfigFileId){
this(application,RNAssetManagerConfig.Builder.initFromResources(application,xmlConfigFileId).build());
}
public RNAssetManager(Application application, RNAssetManagerConfig config){
Log.i(LOG_TAG,"RNAssetManagerPackage constructor: " + config);
configuration = config;
updateLog = new RNUpdateLog();
initUpdateManager(application, config);
currentInstance = this;
}
private void initUpdateManager(Application application, RNAssetManagerConfig config) {
if(config.isAssetManagerAvailable()) {
updateManager = new RNUpdateManager(application, config);
}
}
public static String getJSBundleFile() {
if(currentInstance == null){
throw new IllegalStateException("RNAssetManager not initialized");
}
if(!currentInstance.configuration.isAssetManagerAvailable()) {
return null;
}
final RNAssetBundleInfo info = currentInstance.getUpdateManager().getCurrentBundleInfo();
if(info == null || info.getType() == RNAssetBundleInfo.Type.EMBEDDED) {
return null;
}
try {
checkValidReactAppContext(RNContextHelper.getReactApp());
return RNBundlePathResolver.resolveDeployedPath((Context) RNContextHelper.getReactApp(),info);
}catch (Exception ex){
Log.e(LOG_TAG,ex.getMessage(),ex);
Log.w(LOG_TAG,"reset to legacy status");
currentInstance.updateLog.logRollbackEvent(info.getVersion(),currentInstance.configuration.getEmbeddedAssetVersion());
currentInstance.updateManager.invalidateCurrentInstance();
return null;
}
}
public static void checkValidReactAppContext(ReactApplication reactApplication){
if(!(reactApplication instanceof Application)){
throw new IllegalStateException("reactApplication context is null");
}
}
public static ReactInstanceManager getReactInstanceManager() {
ReactApplication reactApplication = RNContextHelper.getReactApp();
if(reactApplication != null && reactApplication.getReactNativeHost() != null){
return reactApplication.getReactNativeHost().getReactInstanceManager();
}
return null;
}
public static RNUpdateLog getUpdateLog() {
if(currentInstance == null){
throw new IllegalStateException("RNAssetManager not initialized");
}
return currentInstance.updateLog;
}
public RNUpdateManager getUpdateManager() {
return updateManager;
}
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(new RNAssetManagerModule(reactContext,updateManager,configuration,updateLog));
}
// Deprecated from RN 0.47
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}