Skip to content

Commit

Permalink
fix: updated ActivityUtilsModule
Browse files Browse the repository at this point in the history
updated ActivityUtilsModule with not deprecated props
revert not useful changes
  • Loading branch information
Stanislav Yudin committed Oct 18, 2024
1 parent 34e8707 commit 9467834
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 21 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { setFlags } from 'react-native-activity-utils';

// ...

await setFlags(params: boolean);
await setFlags({ turnScreenOn: true, showWhenLocked: true, keepScreenOn: true });
```

## Contributing
Expand Down
41 changes: 28 additions & 13 deletions android/src/main/java/com/activityutils/ActivityUtilsModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
31 changes: 25 additions & 6 deletions example/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
<View style={styles.container}>
<Button
onPress={() =>
setIsTurnScreenOn((prevValue: boolean) => {
setFlags(!prevValue);
setTurnScreenOn((prevValue) => {
setFlags({ turnScreenOn: !prevValue });
return !prevValue;
})
}
title={`turnScreenOn: ${isTurnScreenOn}`}
/>
title={`turnScreenOn: ${turnScreenOn}`}
/>
<Button
onPress={() =>
setShowWhenLocked((prevValue) => {
setFlags({ showWhenLocked: !prevValue });
return !prevValue;
})
}
title={`showWhenLocked: ${showWhenLocked}`}
/>
<Button
onPress={() =>
setKeepScreenOn((prevValue) => {
setFlags({ keepScreenOn: !prevValue });
return !prevValue;
})
}
title={`keepScreenOn: ${keepScreenOn}`}
/>
</View>
);
}
Expand Down
6 changes: 5 additions & 1 deletion src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ const ActivityUtils = isAndroid
)
: null;

export async function setFlags(params: boolean): Promise<void> {
export async function setFlags(params: {
turnScreenOn?: boolean;
showWhenLocked?: boolean;
keepScreenOn?: boolean;
}): Promise<void> {
if (!isAndroid) throw new Error('Implemented only on Android!');
await ActivityUtils.setFlags(params);
}

0 comments on commit 9467834

Please sign in to comment.