diff --git a/.yarn/patches/patches.md b/.yarn/patches/patches.md index 7a5de67b503..0bce17d0e11 100644 --- a/.yarn/patches/patches.md +++ b/.yarn/patches/patches.md @@ -80,4 +80,12 @@ Created on **19/05/2025** #### Reason: -- Patch to fix a visualization error that prevented cards to be incorrectly rendered in Wallet Home Screen. \ No newline at end of file +- Patch to fix a visualization error that prevented cards to be incorrectly rendered in Wallet Home Screen. + +### react-native-screenshot-prevent-npm-1.2.1-d115315590.patch + +created on **24/11/2025** + +#### Reason: + +- Patch to make the library ready for react-native new architecture \ No newline at end of file diff --git a/.yarn/patches/react-native-screenshot-prevent-npm-1.2.1-d115315590.patch b/.yarn/patches/react-native-screenshot-prevent-npm-1.2.1-d115315590.patch new file mode 100644 index 00000000000..65f5a6299a1 --- /dev/null +++ b/.yarn/patches/react-native-screenshot-prevent-npm-1.2.1-d115315590.patch @@ -0,0 +1,579 @@ +diff --git a/android/build.gradle b/android/build.gradle +index 6ee6db648848012a47a1d95356c38d716ad29a15..507756cfb96d460338c96953a1a9d8e47d39a1cc 100644 +--- a/android/build.gradle ++++ b/android/build.gradle +@@ -1,24 +1,22 @@ + apply plugin: 'com.android.library' ++apply plugin: 'com.facebook.react' + +-buildscript { +- repositories { +- jcenter() +- } +- +- dependencies { +- classpath 'com.android.tools.build:gradle:1.3.1' +- } ++def isNewArchitectureEnabled() { ++ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true" + } + + def safeExtGet(prop, fallback) { + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback + } + +-def DEFAULT_COMPILE_SDK_VERSION = 23 +-def DEFAULT_BUILD_TOOLS_VERSION = "23.0.1" +-def DEFAULT_MIN_SDK_VERSION = 16 +-def DEFAULT_TARGET_SDK_VERSION = 22 ++def DEFAULT_COMPILE_SDK_VERSION = 33 ++def DEFAULT_BUILD_TOOLS_VERSION = "33.0.0" ++def DEFAULT_MIN_SDK_VERSION = 21 ++def DEFAULT_TARGET_SDK_VERSION = 33 + ++react { ++ libraryName = "RNScreenshotPrevent" ++} + + android { + compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION) +@@ -29,14 +27,37 @@ android { + targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION) + versionCode 1 + versionName "1.0" ++ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() ++ } ++ ++ buildTypes { ++ release { ++ minifyEnabled false ++ } + } + lintOptions { +- abortOnError false ++ disable 'GradleCompatible' ++ } ++ ++ compileOptions { ++ sourceCompatibility JavaVersion.VERSION_1_8 ++ targetCompatibility JavaVersion.VERSION_1_8 ++ } ++ ++ sourceSets { ++ main { ++ if (isNewArchitectureEnabled()) { ++ java.srcDirs += ['src/newArch/java'] ++ } else { ++ java.srcDirs += ['src/oldArch/java'] ++ } ++ } + } + } + + repositories { + mavenCentral() ++ google() + } + + dependencies { +diff --git a/android/src/main/java/com/killserver/screenshotprev/RNScreenshotPreventModule.java b/android/src/main/java/com/killserver/screenshotprev/RNScreenshotPreventModule.java +index d381e388ec81d0a456ea496891fc635fe48a863e..95c0be266cdb11c121ae8d52056e2a40bdd21bd5 100644 +--- a/android/src/main/java/com/killserver/screenshotprev/RNScreenshotPreventModule.java ++++ b/android/src/main/java/com/killserver/screenshotprev/RNScreenshotPreventModule.java +@@ -21,8 +21,8 @@ import java.net.URL; + public class RNScreenshotPreventModule extends ReactContextBaseJavaModule implements LifecycleEventListener { + + private final ReactApplicationContext reactContext; +- private RelativeLayout overlayLayout; +- private boolean secureFlagWasSet; ++ private static RelativeLayout overlayLayout; ++ private static boolean secureFlagWasSet; + + public RNScreenshotPreventModule(ReactApplicationContext reactContext) { + super(reactContext); +@@ -37,8 +37,12 @@ public class RNScreenshotPreventModule extends ReactContextBaseJavaModule implem + + @ReactMethod + public void enabled(boolean _enable) { +- if (this.reactContext.hasCurrentActivity()) { +- final Activity activity = this.reactContext.getCurrentActivity(); ++ enabled(_enable, this.reactContext); ++ } ++ ++ public static void enabled(boolean _enable, ReactApplicationContext reactContext) { ++ if (reactContext.hasCurrentActivity()) { ++ final Activity activity = reactContext.getCurrentActivity(); + if (activity != null) { + if (_enable) { + activity.runOnUiThread(new Runnable() { +@@ -61,8 +65,12 @@ public class RNScreenshotPreventModule extends ReactContextBaseJavaModule implem + + @ReactMethod + public void enableSecureView(String imagePath) { +- if (this.reactContext.hasCurrentActivity()) { +- final Activity activity = this.reactContext.getCurrentActivity(); ++ enableSecureView(imagePath, this.reactContext); ++ } ++ ++ public static void enableSecureView(String imagePath, ReactApplicationContext reactContext) { ++ if (reactContext.hasCurrentActivity()) { ++ final Activity activity = reactContext.getCurrentActivity(); + if (activity != null) { + if (overlayLayout == null) { + createOverlay(activity, imagePath); +@@ -79,8 +87,12 @@ public class RNScreenshotPreventModule extends ReactContextBaseJavaModule implem + + @ReactMethod + public void disableSecureView() { +- if (this.reactContext.hasCurrentActivity()) { +- final Activity activity = this.reactContext.getCurrentActivity(); ++ disableSecureView(this.reactContext); ++ } ++ ++ public static void disableSecureView(ReactApplicationContext reactContext) { ++ if (reactContext.hasCurrentActivity()) { ++ final Activity activity = reactContext.getCurrentActivity(); + if (activity != null) { + activity.runOnUiThread(new Runnable() { + @Override +@@ -97,7 +109,7 @@ public class RNScreenshotPreventModule extends ReactContextBaseJavaModule implem + } + } + +- private void createOverlay(Activity activity, String imagePath) { ++ private static void createOverlay(Activity activity, String imagePath) { + overlayLayout = new RelativeLayout(activity); + overlayLayout.setBackgroundColor(Color.parseColor("#FFFFFF")); + +@@ -170,7 +182,7 @@ public class RNScreenshotPreventModule extends ReactContextBaseJavaModule implem + // Cleanup if needed + } + +- private Bitmap decodeImageUrl(String imagePath) { ++ private static Bitmap decodeImageUrl(String imagePath) { + try { + URL imageUrl = new URL(imagePath); + Bitmap bitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream()); +diff --git a/android/src/newArch/java/com/killserver/screenshotprev/ScreenshotPreventModule.java b/android/src/newArch/java/com/killserver/screenshotprev/ScreenshotPreventModule.java +new file mode 100644 +index 0000000000000000000000000000000000000000..86b414c8478e4dc0ec9aea45a7dd297f48d6ce95 +--- /dev/null ++++ b/android/src/newArch/java/com/killserver/screenshotprev/ScreenshotPreventModule.java +@@ -0,0 +1,46 @@ ++package com.killserver.screenshotprev; ++ ++import androidx.annotation.NonNull; ++import com.facebook.react.bridge.ReactApplicationContext; ++import com.facebook.react.module.annotations.ReactModule; ++ ++@ReactModule(name = ScreenshotPreventModule.NAME) ++public class ScreenshotPreventModule extends NativeScreenshotPreventSpec { ++ ++ public static final String NAME = "RNScreenshotPrevent"; ++ ++ public ScreenshotPreventModule(ReactApplicationContext reactContext) { ++ super(reactContext); ++ } ++ ++ @Override ++ @NonNull ++ public String getName() { ++ return NAME; ++ } ++ ++ @Override ++ public void enabled(boolean enable) { ++ RNScreenshotPreventModule.enabled(enable, getReactApplicationContext()); ++ } ++ ++ @Override ++ public void enableSecureView(String imagePath) { ++ RNScreenshotPreventModule.enableSecureView(imagePath, getReactApplicationContext()); ++ } ++ ++ @Override ++ public void disableSecureView() { ++ RNScreenshotPreventModule.disableSecureView(getReactApplicationContext()); ++ } ++ ++ @Override ++ public void addListener(String eventName) { ++ // Set up any upstream listeners or background tasks ++ } ++ ++ @Override ++ public void removeListeners(double count) { ++ // Remove any upstream listeners or background tasks ++ } ++} +\ No newline at end of file +diff --git a/android/src/newArch/java/com/killserver/screenshotprev/ScreenshotPreventTurboPackage.java b/android/src/newArch/java/com/killserver/screenshotprev/ScreenshotPreventTurboPackage.java +new file mode 100644 +index 0000000000000000000000000000000000000000..d3e442329c75d16d06833a98117dc9bbfff1f874 +--- /dev/null ++++ b/android/src/newArch/java/com/killserver/screenshotprev/ScreenshotPreventTurboPackage.java +@@ -0,0 +1,49 @@ ++package com.killserver.screenshotprev; ++ ++import com.facebook.react.TurboReactPackage; ++import com.facebook.react.bridge.NativeModule; ++import com.facebook.react.bridge.ReactApplicationContext; ++import com.facebook.react.module.model.ReactModuleInfo; ++import com.facebook.react.module.model.ReactModuleInfoProvider; ++import com.facebook.react.turbomodule.core.interfaces.TurboModule; ++ ++import java.util.Collections; ++import java.util.List; ++import java.util.HashMap; ++import java.util.Map; ++ ++import javax.annotation.Nonnull; ++import javax.annotation.Nullable; ++ ++public class ScreenshotPreventTurboPackage extends TurboReactPackage { ++ ++ @Nullable ++ @Override ++ public NativeModule getModule(String name, @Nonnull ReactApplicationContext reactContext) { ++ if (name.equals(ScreenshotPreventModule.NAME)) { ++ return new ScreenshotPreventModule(reactContext); ++ } else { ++ return null; ++ } ++ } ++ ++ @Override ++ public ReactModuleInfoProvider getReactModuleInfoProvider() { ++ return () -> { ++ final Map moduleInfos = new HashMap<>(); ++ boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; ++ moduleInfos.put( ++ ScreenshotPreventModule.NAME, ++ new ReactModuleInfo( ++ ScreenshotPreventModule.NAME, ++ ScreenshotPreventModule.class.getName(), ++ false, // canOverrideExistingModule ++ false, // needsEagerInit ++ true, // hasConstants ++ false, // isCxxModule ++ isTurboModule // isTurboModule ++ )); ++ return moduleInfos; ++ }; ++ } ++} +\ No newline at end of file +diff --git a/android/src/oldArch/java/com/killserver/screenshotprev/RNScreenshotPreventModule.java b/android/src/oldArch/java/com/killserver/screenshotprev/RNScreenshotPreventModule.java +new file mode 100644 +index 0000000000000000000000000000000000000000..cd02eadcec027c8d417ed68f23a150b9ccf54c66 +--- /dev/null ++++ b/android/src/oldArch/java/com/killserver/screenshotprev/RNScreenshotPreventModule.java +@@ -0,0 +1,194 @@ ++package com.killserver.screenshotprev; ++ ++import android.app.Activity; ++import android.graphics.Bitmap; ++import android.graphics.BitmapFactory; ++import android.graphics.Color; ++import android.view.ViewGroup; ++import android.view.WindowManager; ++import android.widget.RelativeLayout; ++import android.widget.ImageView; ++ ++import com.facebook.react.bridge.ReactApplicationContext; ++import com.facebook.react.bridge.LifecycleEventListener; ++import com.facebook.react.bridge.ReactContextBaseJavaModule; ++import com.facebook.react.bridge.ReactMethod; ++ ++import java.io.IOException; ++import java.net.URL; ++ ++public class RNScreenshotPreventModule extends ReactContextBaseJavaModule implements LifecycleEventListener { ++ ++ private final ReactApplicationContext reactContext; ++ private static RelativeLayout overlayLayout; ++ private static boolean secureFlagWasSet; ++ ++ public RNScreenshotPreventModule(ReactApplicationContext reactContext) { ++ super(reactContext); ++ this.reactContext = reactContext; ++ this.reactContext.addLifecycleEventListener(this); ++ } ++ ++ @Override ++ public String getName() { ++ return "RNScreenshotPrevent"; ++ } ++ ++ @ReactMethod ++ public void enabled(boolean _enable) { ++ enabled(_enable, this.reactContext); ++ } ++ ++ public static void enabled(boolean _enable, ReactApplicationContext reactContext) { ++ if (reactContext.hasCurrentActivity()) { ++ final Activity activity = reactContext.getCurrentActivity(); ++ if (activity != null) { ++ if (_enable) { ++ activity.runOnUiThread(new Runnable() { ++ @Override ++ public void run() { ++ activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); ++ } ++ }); ++ } else { ++ activity.runOnUiThread(new Runnable() { ++ @Override ++ public void run() { ++ activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); ++ } ++ }); ++ } ++ } ++ } ++ } ++ ++ @ReactMethod ++ public void enableSecureView(String imagePath) { ++ enableSecureView(imagePath, this.reactContext); ++ } ++ ++ public static void enableSecureView(String imagePath, ReactApplicationContext reactContext) { ++ if (reactContext.hasCurrentActivity()) { ++ final Activity activity = reactContext.getCurrentActivity(); ++ if (activity != null) { ++ if (overlayLayout == null) { ++ createOverlay(activity, imagePath); ++ } ++ activity.runOnUiThread(new Runnable() { ++ @Override ++ public void run() { ++ activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); ++ } ++ }); ++ } ++ } ++ } ++ ++ @ReactMethod ++ public void disableSecureView() { ++ disableSecureView(this.reactContext); ++ } ++ ++ public static void disableSecureView(ReactApplicationContext reactContext) { ++ if (reactContext.hasCurrentActivity()) { ++ final Activity activity = reactContext.getCurrentActivity(); ++ if (activity != null) { ++ activity.runOnUiThread(new Runnable() { ++ @Override ++ public void run() { ++ if (overlayLayout != null) { ++ ViewGroup rootView = (ViewGroup) activity.getWindow().getDecorView().getRootView(); ++ rootView.removeView(overlayLayout); ++ overlayLayout = null; ++ } ++ activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); ++ } ++ }); ++ } ++ } ++ } ++ ++ private static void createOverlay(Activity activity, String imagePath) { ++ overlayLayout = new RelativeLayout(activity); ++ overlayLayout.setBackgroundColor(Color.parseColor("#FFFFFF")); ++ ++ // Create an ImageView ++ ImageView imageView = new ImageView(activity); ++ RelativeLayout.LayoutParams imageParams = new RelativeLayout.LayoutParams( ++ RelativeLayout.LayoutParams.MATCH_PARENT, ++ RelativeLayout.LayoutParams.WRAP_CONTENT); ++ imageParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); ++ ++ imageView.setLayoutParams(imageParams); ++ ++ // Set image resource ++ Bitmap bitmap = decodeImageUrl(imagePath); ++ ++ if (bitmap != null) { ++ int imageHeight = (int)(bitmap.getHeight() * ((float) activity.getResources().getDisplayMetrics().widthPixels / bitmap.getWidth())); ++ Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, activity.getResources().getDisplayMetrics().widthPixels, imageHeight, true); ++ imageView.setImageBitmap(scaledBitmap); ++ } ++ ++ overlayLayout.addView(imageView); ++ } ++ ++ @Override ++ public void onHostResume() { ++ Activity currentActivity = this.reactContext.getCurrentActivity(); ++ if (currentActivity != null && overlayLayout != null) { ++ currentActivity.runOnUiThread(new Runnable() { ++ @Override ++ public void run() { ++ ViewGroup rootView = (ViewGroup) currentActivity.getWindow().getDecorView().getRootView(); ++ rootView.removeView(overlayLayout); ++ if (secureFlagWasSet) { ++ currentActivity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); ++ secureFlagWasSet = false; ++ } ++ } ++ }); ++ } ++ } ++ ++ @Override ++ public void onHostPause() { ++ Activity currentActivity = this.reactContext.getCurrentActivity(); ++ if (currentActivity != null && overlayLayout != null) { ++ currentActivity.runOnUiThread(new Runnable() { ++ @Override ++ public void run() { ++ ViewGroup rootView = (ViewGroup) currentActivity.getWindow().getDecorView().getRootView(); ++ RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( ++ ViewGroup.LayoutParams.MATCH_PARENT, ++ ViewGroup.LayoutParams.MATCH_PARENT); ++ rootView.addView(overlayLayout, layoutParams); ++ ++ int flags = currentActivity.getWindow().getAttributes().flags; ++ if ((flags & WindowManager.LayoutParams.FLAG_SECURE) != 0) { ++ currentActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); ++ secureFlagWasSet = true; ++ } else { ++ secureFlagWasSet = false; ++ } ++ } ++ }); ++ } ++ } ++ ++ @Override ++ public void onHostDestroy() { ++ // Cleanup if needed ++ } ++ ++ private static Bitmap decodeImageUrl(String imagePath) { ++ try { ++ URL imageUrl = new URL(imagePath); ++ Bitmap bitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream()); ++ return bitmap; ++ } catch (IOException e) { ++ e.printStackTrace(); ++ return null; ++ } ++ } ++} +\ No newline at end of file +diff --git a/android/src/oldArch/java/com/killserver/screenshotprev/RNScreenshotPreventPackage.java b/android/src/oldArch/java/com/killserver/screenshotprev/RNScreenshotPreventPackage.java +new file mode 100644 +index 0000000000000000000000000000000000000000..7f62ad494ba5b82a396a5dae6a8961ab1dec66b0 +--- /dev/null ++++ b/android/src/oldArch/java/com/killserver/screenshotprev/RNScreenshotPreventPackage.java +@@ -0,0 +1,28 @@ ++package com.killserver.screenshotprev; ++ ++import java.util.Arrays; ++import java.util.Collections; ++import java.util.List; ++ ++import com.facebook.react.ReactPackage; ++import com.facebook.react.bridge.NativeModule; ++import com.facebook.react.bridge.ReactApplicationContext; ++import com.facebook.react.uimanager.ViewManager; ++import com.facebook.react.bridge.JavaScriptModule; ++ ++public class RNScreenshotPreventPackage implements ReactPackage { ++ @Override ++ public List createNativeModules(ReactApplicationContext reactContext) { ++ return Arrays.asList(new RNScreenshotPreventModule(reactContext)); ++ } ++ ++ // Deprecated from RN 0.47 ++ public List> createJSModules() { ++ return Collections.emptyList(); ++ } ++ ++ @Override ++ public List createViewManagers(ReactApplicationContext reactContext) { ++ return Collections.emptyList(); ++ } ++} +\ No newline at end of file +diff --git a/package.json b/package.json +index 42c26ead07c8d2c70443aa312fe0502c4dffd4be..72047f31345ee05533e67a9c2f49e80c8695d537 100644 +--- a/package.json ++++ b/package.json +@@ -127,6 +127,9 @@ + "codegenConfig": { + "name": "RNScreenshotPreventSpec", + "type": "modules", +- "jsSrcsDir": "src" ++ "jsSrcsDir": "src", ++ "android": { ++ "javaPackageName": "com.killserver.screenshotprev" ++ } + } + } +diff --git a/src/NativeScreenshotPrevent.ts b/src/NativeScreenshotPrevent.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..1a023c5fba4c3cd51914a2caa016697943b3c4e2 +--- /dev/null ++++ b/src/NativeScreenshotPrevent.ts +@@ -0,0 +1,14 @@ ++import type { TurboModule } from 'react-native'; ++import { TurboModuleRegistry } from 'react-native'; ++ ++export interface Spec extends TurboModule { ++ enabled(enable: boolean): void; ++ enableSecureView(imagePath: string): void; ++ disableSecureView(): void; ++ ++ // Add listener support for screenshot detection ++ addListener(eventName: string): void; ++ removeListeners(count: number): void; ++} ++ ++export default TurboModuleRegistry.getEnforcing('RNScreenshotPrevent'); +\ No newline at end of file +diff --git a/src/index.ts b/src/index.ts +index aa8f952601bb8d0c8c0d8b0f08ab4710f7e05fce..83fee84498bd607e97dd1a965d73ae01f8ca83b2 100644 +--- a/src/index.ts ++++ b/src/index.ts +@@ -1,5 +1,6 @@ + import { NativeModules, NativeEventEmitter, Platform } from 'react-native'; + import { useEffect } from 'react'; ++import NativeScreenshotPrevent from './NativeScreenshotPrevent'; + + type FN = (resp: any) => void + type Return = { +@@ -7,14 +8,15 @@ type Return = { + } + let addListen: any, RNScreenshotPrevent: any; + if (Platform.OS !== "web") { +- const { RNScreenshotPrevent: RNScreenshotPreventNative } = NativeModules; ++ // Try to use TurboModule first, fallback to legacy bridge ++ const RNScreenshotPreventNative = NativeScreenshotPrevent ?? NativeModules.RNScreenshotPrevent; + RNScreenshotPrevent = { + ...RNScreenshotPreventNative, + enableSecureView: function enableSecureView(imagePath: string = "") { + RNScreenshotPreventNative.enableSecureView(imagePath) + } + } +- const eventEmitter = new NativeEventEmitter(RNScreenshotPrevent); ++ const eventEmitter = new NativeEventEmitter(RNScreenshotPreventNative); + + /** + * subscribes to userDidTakeScreenshot event +@@ -36,10 +38,10 @@ if (Platform.OS !== "web") { + } else { + RNScreenshotPrevent = { + enabled: (enabled: boolean): void => { +- console.warn("RNScreenshotPrevent: enabled not work in web. value: " + enabled); ++ console.warn("RNScreenshotPrevent: enabled not work in web. value: " enabled); + }, + enableSecureView: (imagePath: string = ""): void => { +- console.warn("RNScreenshotPrevent: enableSecureView not work in web."+(!!imagePath ? " send: "+imagePath : "")); ++ console.warn("RNScreenshotPrevent: enableSecureView not work in web."(!!imagePath ? " send: "imagePath : "")); + }, + disableSecureView: (): void => { + console.warn("RNScreenshotPrevent: disableSecureView not work in web"); diff --git a/package.json b/package.json index 5e77948c03e..b7d82e50356 100644 --- a/package.json +++ b/package.json @@ -272,7 +272,8 @@ "react-native-webview@^13.13.5": "patch:react-native-webview@npm%3A13.13.5#./.yarn/patches/react-native-webview-npm-13.13.5-802657184f.patch", "react-native-reanimated@^3.17.5": "patch:react-native-reanimated@npm%3A3.17.5#./.yarn/patches/react-native-reanimated-npm-3.17.5-134bd4e99e.patch", "react-native-pdf@6.7.7": "patch:react-native-pdf@npm%3A6.7.7#./.yarn/patches/react-native-pdf-npm-6.7.7-7aa1e3a631.patch", - "react-native-webview@^13.16.0": "patch:react-native-webview@npm%3A13.16.0#./.yarn/patches/react-native-webview-npm-13.16.0-82f4e13202.patch" + "react-native-webview@^13.16.0": "patch:react-native-webview@npm%3A13.16.0#./.yarn/patches/react-native-webview-npm-13.16.0-82f4e13202.patch", + "react-native-screenshot-prevent@^1.2.1": "patch:react-native-screenshot-prevent@npm%3A1.2.1#./.yarn/patches/react-native-screenshot-prevent-npm-1.2.1-d115315590.patch" }, "react-native": { "path": "path-browserify", diff --git a/yarn.lock b/yarn.lock index 54093c42618..2fa0db949bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16661,7 +16661,7 @@ __metadata: languageName: node linkType: hard -"react-native-screenshot-prevent@npm:^1.2.1": +"react-native-screenshot-prevent@npm:1.2.1": version: 1.2.1 resolution: "react-native-screenshot-prevent@npm:1.2.1" peerDependencies: @@ -16671,6 +16671,16 @@ __metadata: languageName: node linkType: hard +"react-native-screenshot-prevent@patch:react-native-screenshot-prevent@npm%3A1.2.1#./.yarn/patches/react-native-screenshot-prevent-npm-1.2.1-d115315590.patch::locator=io%40workspace%3A.": + version: 1.2.1 + resolution: "react-native-screenshot-prevent@patch:react-native-screenshot-prevent@npm%3A1.2.1#./.yarn/patches/react-native-screenshot-prevent-npm-1.2.1-d115315590.patch::version=1.2.1&hash=da5425&locator=io%40workspace%3A." + peerDependencies: + react: "*" + react-native: "*" + checksum: 484b3c7d7169fbd4a4721f01071a0cf442ca6a62892143f12d6aa1c4df719c14b7051c3d863a7de879c522da914cb99b243f56295a17a9270f40146bec857d27 + languageName: node + linkType: hard + "react-native-share@npm:^12.0.9": version: 12.0.9 resolution: "react-native-share@npm:12.0.9"