Refactor a bit

This commit is contained in:
Viktor Sarström 2021-03-30 22:36:25 +02:00
parent 4165d7451f
commit f488ab6b61
3 changed files with 50 additions and 33 deletions

View File

@ -8,21 +8,17 @@ import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.modules.network.ForwardingCookieHandler;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.network.OkHttpClientProvider;
import com.facebook.react.modules.network.ReactCookieJarContainer;
import com.facebook.soloader.SoLoader;
import org.skolplattformen.modules.OkHttpClientFactoryCustom;
import java.lang.reflect.InvocationTargetException;
import java.net.CookieHandler;
import java.util.List;
import okhttp3.CookieJar;
import okhttp3.JavaNetCookieJar;
import okhttp3.OkHttpClient;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost =
new ReactNativeHost(this) {
@Override
@ -55,27 +51,13 @@ public class MainApplication extends Application implements ReactApplication {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
changeCookieManager();
ReactInstanceManager mReactInstanceManager = getReactNativeHost().getReactInstanceManager();
mReactInstanceManager.addReactInstanceEventListener(reactContext ->
OkHttpClientProvider.setOkHttpClientFactory(new OkHttpClientFactoryCustom(reactContext)));
}
private void changeCookieManager() {
OkHttpClientProvider.setOkHttpClientFactory(() -> {
OkHttpClient.Builder builder = OkHttpClientProvider.createClientBuilder(
mReactNativeHost.getReactInstanceManager().getCurrentReactContext());
builder.cookieJar(new ReactCookieJarContainer() {
@Override
public void setCookieJar(CookieJar cookieJar) {
super.setCookieJar(new OBJavaNetCookieJar(new ForwardingCookieHandler(mReactNativeHost.getReactInstanceManager().getCurrentReactContext())));
}
});
return builder.build();
});
}
/**
* Loads Flipper in React Native templates. Call this in the onCreate method with something like
* initializeFlipper(this, getReactNativeHost().getReactInstanceManager());

View File

@ -1,9 +1,8 @@
package org.skolplattformen.app;
package org.skolplattformen.modules;
import java.io.IOException;
import java.net.CookieHandler;
import java.net.HttpCookie;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -18,11 +17,10 @@ import static okhttp3.internal.Util.delimiterOffset;
import static okhttp3.internal.Util.trimSubstring;
import static okhttp3.internal.platform.Platform.WARN;
final class OBJavaNetCookieJar implements CookieJar {
final class CookieJarCustom implements CookieJar {
private final CookieHandler cookieHandler;
public OBJavaNetCookieJar(CookieHandler cookieHandler) {
public CookieJarCustom(CookieHandler cookieHandler) {
this.cookieHandler = cookieHandler;
}

View File

@ -0,0 +1,37 @@
package org.skolplattformen.modules;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.network.ForwardingCookieHandler;
import com.facebook.react.modules.network.OkHttpClientFactory;
import com.facebook.react.modules.network.OkHttpClientProvider;
import com.facebook.react.modules.network.ReactCookieJarContainer;
import okhttp3.CookieJar;
import okhttp3.OkHttpClient;
public class OkHttpClientFactoryCustom implements OkHttpClientFactory {
private final ReactContext context;
public OkHttpClientFactoryCustom(ReactContext context) {
super();
this.context = context;
}
@Override
public OkHttpClient createNewNetworkModuleClient() {
OkHttpClient.Builder builder = OkHttpClientProvider.createClientBuilder(this.context);
CookieJarCustom cookieJarCustom = new CookieJarCustom(new ForwardingCookieHandler(this.context));
builder.cookieJar(new ReactCookieJarContainer() {
@Override
public void setCookieJar(CookieJar cookieJar) {
super.setCookieJar(cookieJarCustom);
}
});
return builder.build();
}
}