From b24e09047115c043e022a984eae4522ccec24693 Mon Sep 17 00:00:00 2001 From: Erik Hellman Date: Wed, 31 Mar 2021 07:48:03 +0200 Subject: [PATCH] fix: korrekt registrering av cookie jar --- .../org/skolplattformen/app/MainActivity.java | 16 +-- .../skolplattformen/app/MainApplication.java | 131 +++++++++--------- .../app/SkolplattformenCookieJar.java | 8 +- 3 files changed, 79 insertions(+), 76 deletions(-) diff --git a/packages/app/android/app/src/main/java/org/skolplattformen/app/MainActivity.java b/packages/app/android/app/src/main/java/org/skolplattformen/app/MainActivity.java index f1d98f9d..db9b9a81 100644 --- a/packages/app/android/app/src/main/java/org/skolplattformen/app/MainActivity.java +++ b/packages/app/android/app/src/main/java/org/skolplattformen/app/MainActivity.java @@ -4,12 +4,12 @@ import com.facebook.react.ReactActivity; public class MainActivity extends ReactActivity { - /** - * Returns the name of the main component registered from JavaScript. This is used to schedule - * rendering of the component. - */ - @Override - protected String getMainComponentName() { - return "app"; - } + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "app"; + } } diff --git a/packages/app/android/app/src/main/java/org/skolplattformen/app/MainApplication.java b/packages/app/android/app/src/main/java/org/skolplattformen/app/MainApplication.java index 769463e1..f33b1e2d 100644 --- a/packages/app/android/app/src/main/java/org/skolplattformen/app/MainApplication.java +++ b/packages/app/android/app/src/main/java/org/skolplattformen/app/MainApplication.java @@ -10,92 +10,95 @@ import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.modules.network.OkHttpClientFactory; import com.facebook.react.modules.network.OkHttpClientProvider; +import com.facebook.react.modules.network.ReactCookieJarContainer; import com.facebook.soloader.SoLoader; import java.lang.reflect.InvocationTargetException; -import java.net.CookieManager; +import java.net.CookieHandler; import java.util.List; import okhttp3.OkHttpClient; public class MainApplication extends Application implements ReactApplication { - private final ReactNativeHost mReactNativeHost = - new ReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } + private final ReactNativeHost mReactNativeHost = + new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } - @Override - protected List getPackages() { - @SuppressWarnings("UnnecessaryLocalVariable") - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return packages; - } + @Override + protected List getPackages() { + @SuppressWarnings("UnnecessaryLocalVariable") + List packages = new PackageList(this).getPackages(); + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(new MyReactNativePackage()); + return packages; + } - @Override - protected String getJSMainModuleName() { - return "index"; - } - }; + @Override + protected String getJSMainModuleName() { + return "index"; + } + }; - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } - @Override - public void onCreate() { - super.onCreate(); - SoLoader.init(this, /* native exopackage */ false); - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - ReactInstanceManager mReactInstanceManager = getReactNativeHost().getReactInstanceManager(); - mReactInstanceManager.addReactInstanceEventListener(reactContext -> { - OkHttpClientProvider.setOkHttpClientFactory(new OkHttpClientFactory() { - @Override - public OkHttpClient createNewNetworkModuleClient() { - return OkHttpClientProvider.createClientBuilder(reactContext) - .cookieJar(new SkolplattformenCookieJar(new CookieManager())) - .build(); - } + ReactInstanceManager mReactInstanceManager = getReactNativeHost().getReactInstanceManager(); + mReactInstanceManager.addReactInstanceEventListener(reactContext -> { + OkHttpClientProvider.setOkHttpClientFactory(new OkHttpClientFactory() { + @Override + public OkHttpClient createNewNetworkModuleClient() { + ReactCookieJarContainer reactCookieJarContainer = new ReactCookieJarContainer(); + reactCookieJarContainer.setCookieJar(new SkolplattformenCookieJar(CookieHandler.getDefault())); + return OkHttpClientProvider.createClientBuilder(reactContext) + .cookieJar(reactCookieJarContainer) + .build(); + } + }); }); - }); - } + } /** - * Loads Flipper in React Native templates. Call this in the onCreate method with something like - * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - * - * @param context - * @param reactInstanceManager - */ - private static void initializeFlipper( - Context context, ReactInstanceManager reactInstanceManager) { - if (BuildConfig.DEBUG) { - try { + * Loads Flipper in React Native templates. Call this in the onCreate method with something like + * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + * + * @param context + * @param reactInstanceManager + */ + private static void initializeFlipper( + Context context, ReactInstanceManager reactInstanceManager) { + if (BuildConfig.DEBUG) { + try { /* We use reflection here to pick up the class that initializes Flipper, since Flipper library is not available in release mode */ - Class aClass = Class.forName("com.app.ReactNativeFlipper"); - aClass - .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) - .invoke(null, context, reactInstanceManager); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } + Class aClass = Class.forName("com.app.ReactNativeFlipper"); + aClass + .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) + .invoke(null, context, reactInstanceManager); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } } - } } diff --git a/packages/app/android/app/src/main/java/org/skolplattformen/app/SkolplattformenCookieJar.java b/packages/app/android/app/src/main/java/org/skolplattformen/app/SkolplattformenCookieJar.java index c8ea1e60..bdfdcdbb 100644 --- a/packages/app/android/app/src/main/java/org/skolplattformen/app/SkolplattformenCookieJar.java +++ b/packages/app/android/app/src/main/java/org/skolplattformen/app/SkolplattformenCookieJar.java @@ -20,10 +20,10 @@ import static okhttp3.internal.Util.trimSubstring; import static okhttp3.internal.platform.Platform.WARN; public final class SkolplattformenCookieJar implements CookieJar { - public static final String HEADER_COOKIE_2 = "Cookie2"; - public static final String HEADER_COOKIE = "Cookie"; - public static final String HEADER_SET_COOKIE = "Set-Cookie"; - private final CookieHandler cookieHandler; + public static final String HEADER_COOKIE_2 = "Cookie2"; + public static final String HEADER_COOKIE = "Cookie"; + public static final String HEADER_SET_COOKIE = "Set-Cookie"; + private final CookieHandler cookieHandler; public SkolplattformenCookieJar(CookieHandler cookieHandler) { this.cookieHandler = cookieHandler;