From 94678340ed6cd2da6cc4257689acecb39442e548 Mon Sep 17 00:00:00 2001 From: Stanislav Yudin Date: Fri, 18 Oct 2024 12:33:12 +0300 Subject: [PATCH] fix: updated ActivityUtilsModule updated ActivityUtilsModule with not deprecated props revert not useful changes --- README.md | 2 +- .../activityutils/ActivityUtilsModule.java | 41 +++++++++++++------ example/src/App.tsx | 31 +++++++++++--- src/index.tsx | 6 ++- 4 files changed, 59 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 7eb1a07..07a4b18 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ import { setFlags } from 'react-native-activity-utils'; // ... -await setFlags(params: boolean); +await setFlags({ turnScreenOn: true, showWhenLocked: true, keepScreenOn: true }); ``` ## Contributing diff --git a/android/src/main/java/com/activityutils/ActivityUtilsModule.java b/android/src/main/java/com/activityutils/ActivityUtilsModule.java index 5b660b4..2428c83 100644 --- a/android/src/main/java/com/activityutils/ActivityUtilsModule.java +++ b/android/src/main/java/com/activityutils/ActivityUtilsModule.java @@ -27,30 +27,45 @@ public String getName() { } @ReactMethod - public void setFlags(boolean params, Promise promise) { - + public void setFlags(ReadableMap params, Promise promise) { + UiThreadUtil.runOnUiThread(new Runnable() { - @Override - public void run() { - final var activity = getCurrentActivity(); + @Override + public void run() { + final var activity = getCurrentActivity(); - if (activity == null) { - promise.reject("Missing activity in keepScreenOn"); - return; - } + if (activity == null) { + promise.reject("Missing activity in setFlags"); + return; + } + + if (params.hasKey("turnScreenOn")) { + boolean value = params.getBoolean("turnScreenOn"); + activity.setTurnScreenOn(value); + } + + if (params.hasKey("showWhenLocked")) { + boolean value = params.getBoolean("showWhenLocked"); + activity.setShowWhenLocked(value); + } + + if (params.hasKey("keepScreenOn")) { + boolean value = params.getBoolean("keepScreenOn"); final var window = activity.getWindow(); if (window == null) { promise.reject("Missing window in keepScreenOn"); return; } - if (params) { - window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); + + if (value) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } else { - window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } } - }); + } + }); promise.resolve(null); } diff --git a/example/src/App.tsx b/example/src/App.tsx index 4401d4e..cb9ff07 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -4,20 +4,39 @@ import { StyleSheet, View, Button } from 'react-native'; import { setFlags } from 'react-native-activity-utils'; export default function App() { - const [isTurnScreenOn, setIsTurnScreenOn] = useState(false); - + const [turnScreenOn, setTurnScreenOn] = useState(false); + const [showWhenLocked, setShowWhenLocked] = useState(false); + const [keepScreenOn, setKeepScreenOn] = useState(false); return (