package com.unitreactnativecomponents.nativeModules.unComponentsSnapshotProtectionModule import android.view.WindowManager import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod class UNComponentsSnapshotProtectionModule(var reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { @ReactMethod fun setSecureFlags(promise: Promise) { val currentActivity = reactContext.currentActivity val window = currentActivity?.window if (currentActivity == null || window == null) { promise.reject("No window") return } try { val isSecured = (window.attributes.flags and WindowManager.LayoutParams.FLAG_SECURE) != 0 if (!isSecured) { currentActivity.runOnUiThread { window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE) promise.resolve("secured") } } else { promise.resolve("already secured") } } catch (e: Exception) { promise.reject(e) } } override fun getName() = NAME companion object { const val NAME = "UNComponentsSnapshotProtectionModule" } }