Skip to content

Commit 3e674f4

Browse files
committed
Prepublish cleanup
1 parent 281a1dc commit 3e674f4

14 files changed

+136
-140
lines changed

example/App.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export default function App() {
106106

107107
<Button title="Get events" onPress={refreshEvents} />
108108

109-
<ReactNativeDeviceActivity.ReactNativeDeviceActivityView
109+
<ReactNativeDeviceActivity.DeviceActivitySelectionView
110110
style={{
111111
width: 200,
112112
height: 200,
@@ -135,7 +135,7 @@ export default function App() {
135135
style={{ backgroundColor: "green", height: 100 }}
136136
pointerEvents="none"
137137
/>
138-
</ReactNativeDeviceActivity.ReactNativeDeviceActivityView>
138+
</ReactNativeDeviceActivity.DeviceActivitySelectionView>
139139
<Text>{JSON.stringify(largestEvent, null, 2)}</Text>
140140
</View>
141141
),

expo-module.config.json

-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@
22
"platforms": ["ios"],
33
"ios": {
44
"modules": ["ReactNativeDeviceActivityModule"]
5-
},
6-
"android": {
7-
"modules": ["expo.modules.deviceactivity.ReactNativeDeviceActivityModule"]
85
}
96
}

ios/ReactNativeDeviceActivityModule.swift

+1-4
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,7 @@ class Hello {
147147
registerListener(name: "eventDidReachThreshold")
148148
registerListener(name: "intervalWillStartWarning")
149149
registerListener(name: "intervalWillEndWarning")
150-
registerListener(name: "eventWillReachThresholdWarning")
151-
152-
153-
150+
registerListener(name: "eventWillReachThresholdWarning")
154151
}
155152
}
156153

package.json

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "react-native-device-activity",
3-
"version": "0.1.0",
4-
"description": "Provide access to Apples DeviceActivity API",
3+
"version": "0.0.1",
4+
"description": "Provides access to Apples DeviceActivity API",
55
"main": "build/index.js",
66
"types": "build/index.d.ts",
77
"scripts": {
@@ -12,9 +12,13 @@
1212
"prepare": "expo-module prepare",
1313
"prepublishOnly": "expo-module prepublishOnly",
1414
"expo-module": "expo-module",
15-
"open:ios": "open -a \"Xcode\" example/ios",
16-
"open:android": "open -a \"Android Studio\" example/android"
15+
"open:ios": "open -a \"Xcode\" example/ios"
1716
},
17+
"files": [
18+
"build",
19+
"ios",
20+
"app.plugin.js"
21+
],
1822
"keywords": [
1923
"react-native",
2024
"expo",
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { requireNativeViewManager } from "expo-modules-core";
2+
import * as React from "react";
3+
4+
import { DeviceActivitySelectionViewProps } from "./ReactNativeDeviceActivity.types";
5+
6+
const NativeView: React.ComponentType<DeviceActivitySelectionViewProps> =
7+
requireNativeViewManager("ReactNativeDeviceActivity");
8+
9+
export default function DeviceActivitySelectionView(
10+
props: DeviceActivitySelectionViewProps
11+
) {
12+
return <NativeView {...props} />;
13+
}

src/DeviceActivitySelectionView.tsx

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import * as React from "react";
2+
import { View } from "react-native";
3+
4+
import { DeviceActivitySelectionViewProps } from "./ReactNativeDeviceActivity.types";
5+
6+
export default function DeviceActivitySelectionView({
7+
style,
8+
children,
9+
...props
10+
}: DeviceActivitySelectionViewProps) {
11+
return <View style={style}>{children}</View>;
12+
}
+60-25
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,75 @@
11
import { PropsWithChildren } from "react";
22
import { NativeSyntheticEvent, StyleProp, ViewStyle } from "react-native";
33

4-
export type ChangeEventPayload = {
5-
selection: Selection;
6-
};
7-
84
export type DeviceActivityMonitorEventPayload = {
9-
eventName: string;
5+
eventName:
6+
| "intervalDidStart"
7+
| "intervalDidEnd"
8+
| "eventDidReachThreshold"
9+
| "intervalWillStartWarning"
10+
| "intervalWillEndWarning"
11+
| "eventWillReachThresholdWarning";
1012
};
1113

12-
type ActivityCategory = {
13-
localizedDisplayName?: string;
14-
token?: string;
14+
export type EventsLookup = Record<string, number>;
15+
16+
export type DeviceActivitySelectionViewProps = PropsWithChildren<{
17+
style: StyleProp<ViewStyle>;
18+
onSelectionChange?: (
19+
selection: NativeSyntheticEvent<{ familyActivitySelection: string }>
20+
) => void;
21+
familyActivitySelection?: string | null;
22+
}>;
23+
24+
export type DateComponents = {
25+
// calendar: Calendar?;
26+
// timeZone: TimeZone?;
27+
era?: number;
28+
year?: number;
29+
month?: number;
30+
day?: number;
31+
hour?: number;
32+
minute?: number;
33+
second?: number;
34+
nanosecond?: number;
35+
weekday?: number;
36+
weekdayOrdinal?: number;
37+
quarter?: number;
38+
weekOfMonth?: number;
39+
weekOfYear?: number;
40+
yearForWeekOfYear?: number;
1541
};
1642

17-
type Application = {
18-
localizedDisplayName?: string;
19-
token?: string;
20-
bundleIdentifier?: string;
43+
export type DeviceActivitySchedule = {
44+
intervalStart: DateComponents;
45+
intervalEnd: DateComponents;
46+
repeats: boolean;
47+
warningTime?: DateComponents;
2148
};
2249

23-
type WebDomain = {
24-
domain?: string;
25-
token?: string;
50+
export type FamilyActivitySelection = string;
51+
52+
export type DeviceActivityEvent = {
53+
familyActivitySelection: FamilyActivitySelection;
54+
threshold: DateComponents;
55+
eventName: string;
2656
};
2757

28-
type Selection = {
29-
categories: ActivityCategory[];
30-
applications: Application[];
31-
webDomains: WebDomain[];
58+
export type DeviceActivityEventRaw = Omit<
59+
DeviceActivityEvent,
60+
"familyActivitySelection"
61+
> & {
62+
familyActivitySelectionIndex: number;
3263
};
3364

34-
export type ReactNativeDeviceActivityViewProps = PropsWithChildren<{
35-
style: StyleProp<ViewStyle>;
36-
onSelectionChange?: (
37-
selection: NativeSyntheticEvent<{ familyActivitySelection: string }>
65+
export type ReactNativeDeviceActivityNativeModule = {
66+
requestAuthorization: () => PromiseLike<void> | void;
67+
getEvents: () => EventsLookup;
68+
stopMonitoring: () => void;
69+
startMonitoring: (
70+
activityName: string,
71+
deviceActivitySchedule: DeviceActivitySchedule,
72+
deviceActivityEvents: DeviceActivityEventRaw[],
73+
uniqueSelections: string[]
3874
) => void;
39-
familyActivitySelection?: string | null;
40-
}>;
75+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { requireNativeModule } from "expo-modules-core";
2+
3+
// It loads the native module object from the JSI or falls back to
4+
// the bridge module (from NativeModulesProxy) if the remote debugger is on.
5+
export default requireNativeModule("ReactNativeDeviceActivity");
+22-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
1-
import { requireNativeModule } from 'expo-modules-core';
1+
import { ProxyNativeModule } from "expo-modules-core";
22

3-
// It loads the native module object from the JSI or falls back to
4-
// the bridge module (from NativeModulesProxy) if the remote debugger is on.
5-
export default requireNativeModule('ReactNativeDeviceActivity');
3+
import type { ReactNativeDeviceActivityNativeModule } from "./ReactNativeDeviceActivity.types";
4+
5+
const warnText = "[react-native-device-activity] Only available on iOS";
6+
7+
const warnFn = () => {
8+
console.warn(warnText);
9+
};
10+
11+
const mockModule: ReactNativeDeviceActivityNativeModule & ProxyNativeModule = {
12+
requestAuthorization: warnFn,
13+
getEvents: () => {
14+
console.warn(warnText);
15+
return {};
16+
},
17+
startMonitoring: warnFn,
18+
stopMonitoring: warnFn,
19+
addListener: warnFn,
20+
removeListeners: warnFn,
21+
};
22+
23+
export default mockModule;

src/ReactNativeDeviceActivityModule.web.ts

-10
This file was deleted.

src/ReactNativeDeviceActivityView.tsx

-11
This file was deleted.

src/ReactNativeDeviceActivityView.web.tsx

-9
This file was deleted.

src/index.ts

+12-68
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,17 @@ import {
66

77
// Import the native module. On web, it will be resolved to ReactNativeDeviceActivity.web.ts
88
// and on native platforms to ReactNativeDeviceActivity.ts
9+
import DeviceActivitySelectionView from "./DeviceActivitySelectionView";
910
import {
10-
ChangeEventPayload,
11-
ReactNativeDeviceActivityViewProps,
11+
DeviceActivityEvent,
12+
DeviceActivityEventRaw,
13+
DeviceActivityMonitorEventPayload,
14+
DeviceActivitySchedule,
15+
DeviceActivitySelectionViewProps,
16+
EventsLookup,
17+
FamilyActivitySelection,
1218
} from "./ReactNativeDeviceActivity.types";
1319
import ReactNativeDeviceActivityModule from "./ReactNativeDeviceActivityModule";
14-
import ReactNativeDeviceActivityView from "./ReactNativeDeviceActivityView";
15-
16-
type EventsLookup = Record<string, number>;
17-
18-
type DateComponents = {
19-
// calendar: Calendar?;
20-
// timeZone: TimeZone?;
21-
era?: number;
22-
year?: number;
23-
month?: number;
24-
day?: number;
25-
hour?: number;
26-
minute?: number;
27-
second?: number;
28-
nanosecond?: number;
29-
weekday?: number;
30-
weekdayOrdinal?: number;
31-
quarter?: number;
32-
weekOfMonth?: number;
33-
weekOfYear?: number;
34-
yearForWeekOfYear?: number;
35-
};
36-
37-
// Get the native constant value.
38-
export const PI = ReactNativeDeviceActivityModule.PI;
39-
40-
export function hello(): string {
41-
return ReactNativeDeviceActivityModule.hello();
42-
}
43-
44-
export async function setValueAsync(value: string) {
45-
return await ReactNativeDeviceActivityModule.setValueAsync(value);
46-
}
4720

4821
export async function requestAuthorization(): Promise<void> {
4922
return await ReactNativeDeviceActivityModule.requestAuthorization();
@@ -53,28 +26,6 @@ export function getEvents(): EventsLookup {
5326
return ReactNativeDeviceActivityModule.getEvents();
5427
}
5528

56-
type DeviceActivitySchedule = {
57-
intervalStart: DateComponents;
58-
intervalEnd: DateComponents;
59-
repeats: boolean;
60-
warningTime?: DateComponents;
61-
};
62-
63-
type FamilyActivitySelection = string;
64-
65-
export type DeviceActivityEvent = {
66-
familyActivitySelection: FamilyActivitySelection;
67-
threshold: DateComponents;
68-
eventName: string;
69-
};
70-
71-
export type DeviceActivityEventRaw = Omit<
72-
DeviceActivityEvent,
73-
"familyActivitySelection"
74-
> & {
75-
familyActivitySelectionIndex: number;
76-
};
77-
7829
function convertDeviceActivityEvents(
7930
events: DeviceActivityEvent[]
8031
): [DeviceActivityEventRaw[], FamilyActivitySelection[]] {
@@ -131,23 +82,16 @@ const emitter = new EventEmitter(
13182
NativeModulesProxy.ReactNativeDeviceActivity
13283
);
13384

134-
export function addSelectionChangeListener(
135-
listener: (event: ChangeEventPayload) => void
136-
): Subscription {
137-
return emitter.addListener<ChangeEventPayload>("onSelectionChange", listener);
138-
}
139-
14085
export function addEventReceivedListener(
141-
listener: (event: ChangeEventPayload) => void
86+
listener: (event: DeviceActivityMonitorEventPayload) => void
14287
): Subscription {
143-
return emitter.addListener<ChangeEventPayload>(
88+
return emitter.addListener<DeviceActivityMonitorEventPayload>(
14489
"onDeviceActivityMonitorEvent",
14590
listener
14691
);
14792
}
14893

14994
export {
150-
ReactNativeDeviceActivityView,
151-
ReactNativeDeviceActivityViewProps,
152-
ChangeEventPayload,
95+
DeviceActivitySelectionView,
96+
DeviceActivitySelectionViewProps as ReactNativeDeviceActivityViewProps,
15397
};

targets/ActivityMonitorExtension/Info.plist

+1
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@
1111
</dict>
1212
</dict>
1313
</plist>
14+

0 commit comments

Comments
 (0)