Skip to content

Commit

Permalink
Add reload device activity center (#44)
Browse files Browse the repository at this point in the history
* Stop returning getAuthorizationStatus since its not fully stable

* bump and minor things

* add reloadDeviceActivityCenter

* bump version

* update to check for status

* bump version
  • Loading branch information
robertherber authored Feb 13, 2025
1 parent 55ae2b5 commit dda0025
Show file tree
Hide file tree
Showing 9 changed files with 21 additions and 13 deletions.
2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ __tests__
*.spec.tsx
__tests__/

# seems like something is causing example to get installed recursively (bun bug?)
example
7 changes: 2 additions & 5 deletions example/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"scheme": "device-activity",
"orientation": "portrait",
"icon": "./assets/icon.png",
"platforms": ["ios"],
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash.png",
Expand All @@ -21,11 +22,7 @@
"assets/*"
],
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
},
"package": "expo.modules.deviceactivity.example"
"package": "expo.modules.deviceactivity.example",
},
"web": {
"favicon": "./assets/favicon.png"
Expand Down
6 changes: 3 additions & 3 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1205,7 +1205,7 @@ PODS:
- React-logger (= 0.74.5)
- React-perflogger (= 0.74.5)
- React-utils (= 0.74.5)
- ReactNativeDeviceActivity (0.2.2):
- ReactNativeDeviceActivity (0.2.3):
- ExpoModulesCore
- RNVectorIcons (10.2.0):
- DoubleConversion
Expand Down Expand Up @@ -1507,11 +1507,11 @@ SPEC CHECKSUMS:
React-runtimescheduler: cfbe85c3510c541ec6dc815c7729b41304b67961
React-utils: f242eb7e7889419d979ca0e1c02ccc0ea6e43b29
ReactCommon: f7da14a8827b72704169a48c929bcde802698361
ReactNativeDeviceActivity: 209e3900dcfd7516b60b1655becc53a8b5e8d1bf
ReactNativeDeviceActivity: 1501d123b0b00911140107eac87bbec9d722f48e
RNVectorIcons: 845eda5c7819bd29699cafd0fc98c9d4afe28c96
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
SwiftLint: 92196976e597b9afec5dbe374810103e6c1d9d7c
Yoga: 950bbfd7e6f04790fdb51149ed51df41f329fcc8
Yoga: 2246eea72aaf1b816a68a35e6e4b74563653ae09

PODFILE CHECKSUM: b8b40c46183fad3b03c145dfc75dd8fc64203c70

Expand Down
3 changes: 2 additions & 1 deletion example/screens/AllTheThings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ export function AllTheThings() {

const requestAuthorization = useCallback(async () => {
if (authorizationStatus === AuthorizationStatus.notDetermined) {
const status = await ReactNativeDeviceActivity.requestAuthorization();
await ReactNativeDeviceActivity.requestAuthorization();
const status = ReactNativeDeviceActivity.getAuthorizationStatus();
setAuthorizationStatus(status);
} else if (authorizationStatus === AuthorizationStatus.denied) {
Alert.alert(
Expand Down
9 changes: 8 additions & 1 deletion ios/ReactNativeDeviceActivityModule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ public class ReactNativeDeviceActivityModule: Module {
// The module will be accessible from `requireNativeModule('ReactNativeDeviceActivity')` in JavaScript.
Name("ReactNativeDeviceActivity")

let center = DeviceActivityCenter()
var center = DeviceActivityCenter()

// Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary.
Constants([
Expand Down Expand Up @@ -435,6 +435,13 @@ public class ReactNativeDeviceActivityModule: Module {

}

Function("reloadDeviceActivityCenter") {
// probably should be done, but is not entirely intuitive so doing it in userland
// center.stopMonitoring()

center = DeviceActivityCenter()
}

Function("stopMonitoring") { (activityNames: [String]?) in
if activityNames == nil || activityNames?.count == 0 {
center.stopMonitoring()
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-native-device-activity",
"version": "0.2.3",
"version": "0.3.1",
"description": "Provides access to Apples DeviceActivity API",
"main": "build/index.js",
"types": "build/index.d.ts",
Expand Down
1 change: 1 addition & 0 deletions src/ReactNativeDeviceActivity.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ export type ReactNativeDeviceActivityNativeModule = {
activities: () => string[];
authorizationStatus: () => AuthorizationStatusType;
stopMonitoring: (activityNames?: string[]) => void;
reloadDeviceActivityCenter: () => void;
startMonitoring: (
activityName: string,
deviceActivitySchedule: DeviceActivitySchedule,
Expand Down
1 change: 1 addition & 0 deletions src/ReactNativeDeviceActivityModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ const mockModule:
blockApps: warnFn,
activities: warnFnArray,
authorizationStatus: warnFnNumber,
reloadDeviceActivityCenter: warnFn,
getEvents: () => {
console.warn(warnText);
return {};
Expand Down
3 changes: 1 addition & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import ReactNativeDeviceActivityModule from "./ReactNativeDeviceActivityModule";

export async function requestAuthorization(
forIndividualOrChild: "individual" | "child" = "individual",
): Promise<AuthorizationStatusType> {
) {
try {
await ReactNativeDeviceActivityModule?.requestAuthorization(
forIndividualOrChild,
Expand All @@ -32,7 +32,6 @@ export async function requestAuthorization(
// seems like we get a promise rejection if the user denies the authorization, but we can still request again
console.error(error);
}
return getAuthorizationStatus();
}

export async function revokeAuthorization(): Promise<AuthorizationStatusType> {
Expand Down

0 comments on commit dda0025

Please sign in to comment.