react-native-push-signal 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +20 -0
  2. package/PushSignal.podspec +31 -0
  3. package/README.md +125 -0
  4. package/README.ru.md +125 -0
  5. package/android/CMakeLists.txt +24 -0
  6. package/android/build.gradle +115 -0
  7. package/android/src/main/AndroidManifest.xml +18 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  9. package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignal.kt +44 -0
  10. package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignalCenter.kt +353 -0
  11. package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignalInitProvider.kt +34 -0
  12. package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignalMessagingService.kt +15 -0
  13. package/android/src/main/java/com/margelo/nitro/pushsignal/PushSignalPackage.kt +22 -0
  14. package/ios/PushSignal.swift +38 -0
  15. package/ios/PushSignalCenter.swift +430 -0
  16. package/ios/PushSignalLaunchStore.h +21 -0
  17. package/ios/PushSignalLaunchStore.m +26 -0
  18. package/lib/module/PushSignal.nitro.js +4 -0
  19. package/lib/module/PushSignal.nitro.js.map +1 -0
  20. package/lib/module/index.js +4 -0
  21. package/lib/module/index.js.map +1 -0
  22. package/lib/module/package.json +1 -0
  23. package/lib/module/pushSignal.js +19 -0
  24. package/lib/module/pushSignal.js.map +1 -0
  25. package/lib/module/pushSignal.native.js +46 -0
  26. package/lib/module/pushSignal.native.js.map +1 -0
  27. package/lib/typescript/package.json +1 -0
  28. package/lib/typescript/src/PushSignal.nitro.d.ts +33 -0
  29. package/lib/typescript/src/PushSignal.nitro.d.ts.map +1 -0
  30. package/lib/typescript/src/index.d.ts +3 -0
  31. package/lib/typescript/src/index.d.ts.map +1 -0
  32. package/lib/typescript/src/pushSignal.d.ts +8 -0
  33. package/lib/typescript/src/pushSignal.d.ts.map +1 -0
  34. package/lib/typescript/src/pushSignal.native.d.ts +8 -0
  35. package/lib/typescript/src/pushSignal.native.d.ts.map +1 -0
  36. package/nitro.json +23 -0
  37. package/nitrogen/generated/android/c++/JAndroidFirebaseConfig.hpp +70 -0
  38. package/nitrogen/generated/android/c++/JFunc_void_PushMessage.hpp +80 -0
  39. package/nitrogen/generated/android/c++/JHybridPushSignalSpec.cpp +138 -0
  40. package/nitrogen/generated/android/c++/JHybridPushSignalSpec.hpp +68 -0
  41. package/nitrogen/generated/android/c++/JPermissionStatus.hpp +61 -0
  42. package/nitrogen/generated/android/c++/JPushCredentials.hpp +70 -0
  43. package/nitrogen/generated/android/c++/JPushEnvironment.hpp +58 -0
  44. package/nitrogen/generated/android/c++/JPushMessage.hpp +84 -0
  45. package/nitrogen/generated/android/c++/JPushPlatform.hpp +58 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/AndroidFirebaseConfig.kt +66 -0
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/Func_void_PushMessage.kt +78 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/HybridPushSignalSpec.kt +87 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PermissionStatus.kt +24 -0
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushCredentials.kt +61 -0
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushEnvironment.kt +23 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushMessage.kt +66 -0
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/PushPlatform.kt +23 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/pushsignal/pushsignalOnLoad.kt +35 -0
  55. package/nitrogen/generated/android/pushsignal+autolinking.cmake +81 -0
  56. package/nitrogen/generated/android/pushsignal+autolinking.gradle +27 -0
  57. package/nitrogen/generated/android/pushsignalOnLoad.cpp +56 -0
  58. package/nitrogen/generated/android/pushsignalOnLoad.hpp +34 -0
  59. package/nitrogen/generated/ios/PushSignal+autolinking.rb +62 -0
  60. package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Bridge.cpp +65 -0
  61. package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Bridge.hpp +257 -0
  62. package/nitrogen/generated/ios/PushSignal-Swift-Cxx-Umbrella.hpp +66 -0
  63. package/nitrogen/generated/ios/PushSignalAutolinking.mm +33 -0
  64. package/nitrogen/generated/ios/PushSignalAutolinking.swift +26 -0
  65. package/nitrogen/generated/ios/c++/HybridPushSignalSpecSwift.cpp +11 -0
  66. package/nitrogen/generated/ios/c++/HybridPushSignalSpecSwift.hpp +137 -0
  67. package/nitrogen/generated/ios/swift/AndroidFirebaseConfig.swift +96 -0
  68. package/nitrogen/generated/ios/swift/Func_void_PermissionStatus.swift +46 -0
  69. package/nitrogen/generated/ios/swift/Func_void_PushCredentials.swift +46 -0
  70. package/nitrogen/generated/ios/swift/Func_void_PushMessage.swift +46 -0
  71. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  72. package/nitrogen/generated/ios/swift/HybridPushSignalSpec.swift +60 -0
  73. package/nitrogen/generated/ios/swift/HybridPushSignalSpec_cxx.swift +226 -0
  74. package/nitrogen/generated/ios/swift/PermissionStatus.swift +44 -0
  75. package/nitrogen/generated/ios/swift/PushCredentials.swift +45 -0
  76. package/nitrogen/generated/ios/swift/PushEnvironment.swift +40 -0
  77. package/nitrogen/generated/ios/swift/PushMessage.swift +97 -0
  78. package/nitrogen/generated/ios/swift/PushPlatform.swift +40 -0
  79. package/nitrogen/generated/shared/c++/AndroidFirebaseConfig.hpp +96 -0
  80. package/nitrogen/generated/shared/c++/HybridPushSignalSpec.cpp +26 -0
  81. package/nitrogen/generated/shared/c++/HybridPushSignalSpec.hpp +79 -0
  82. package/nitrogen/generated/shared/c++/PermissionStatus.hpp +80 -0
  83. package/nitrogen/generated/shared/c++/PushCredentials.hpp +97 -0
  84. package/nitrogen/generated/shared/c++/PushEnvironment.hpp +76 -0
  85. package/nitrogen/generated/shared/c++/PushMessage.hpp +97 -0
  86. package/nitrogen/generated/shared/c++/PushPlatform.hpp +76 -0
  87. package/package.json +187 -0
  88. package/src/PushSignal.nitro.ts +37 -0
  89. package/src/index.tsx +16 -0
  90. package/src/pushSignal.native.tsx +67 -0
  91. package/src/pushSignal.tsx +32 -0
package/package.json ADDED
@@ -0,0 +1,187 @@
1
+ {
2
+ "name": "react-native-push-signal",
3
+ "version": "0.1.0",
4
+ "description": "Push",
5
+ "main": "./lib/module/index.js",
6
+ "types": "./lib/typescript/src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "react-native-push-signal-source": "./src/index.tsx",
10
+ "types": "./lib/typescript/src/index.d.ts",
11
+ "default": "./lib/module/index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "files": [
16
+ "src",
17
+ "lib",
18
+ "android",
19
+ "ios",
20
+ "cpp",
21
+ "nitrogen",
22
+ "nitro.json",
23
+ "*.podspec",
24
+ "react-native.config.js",
25
+ "!ios/build",
26
+ "!android/build",
27
+ "!android/gradle",
28
+ "!android/gradlew",
29
+ "!android/gradlew.bat",
30
+ "!android/local.properties",
31
+ "!**/__tests__",
32
+ "!**/__fixtures__",
33
+ "!**/__mocks__",
34
+ "!**/.*"
35
+ ],
36
+ "scripts": {
37
+ "example": "yarn workspace react-native-push-signal-example",
38
+ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
39
+ "prepare": "bob build",
40
+ "nitrogen": "nitrogen",
41
+ "typecheck": "tsc",
42
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
43
+ "test": "jest",
44
+ "release": "release-it --only-version",
45
+ "web": "vite",
46
+ "build:web": "vite build"
47
+ },
48
+ "keywords": [
49
+ "react-native",
50
+ "ios",
51
+ "android"
52
+ ],
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "git+https://antonseagull.com.git"
56
+ },
57
+ "author": "Anton Seagull <hi@antonseagull.com> (https://antonseagull.com)",
58
+ "license": "MIT",
59
+ "bugs": {
60
+ "url": "https://antonseagull.com/issues"
61
+ },
62
+ "homepage": "https://antonseagull.com#readme",
63
+ "publishConfig": {
64
+ "registry": "https://registry.npmjs.org/"
65
+ },
66
+ "devDependencies": {
67
+ "@commitlint/config-conventional": "^21.0.2",
68
+ "@eslint/compat": "^2.1.0",
69
+ "@eslint/eslintrc": "^3.3.5",
70
+ "@eslint/js": "^10.0.1",
71
+ "@jest/globals": "^29.7.0",
72
+ "@react-native/babel-preset": "0.85.0",
73
+ "@react-native/eslint-config": "0.85.0",
74
+ "@react-native/jest-preset": "0.85.0",
75
+ "@release-it/conventional-changelog": "^11.0.1",
76
+ "@types/react": "^19.2.0",
77
+ "commitlint": "^21.0.2",
78
+ "del-cli": "^7.0.0",
79
+ "eslint": "^9.39.4",
80
+ "eslint-config-prettier": "^10.1.8",
81
+ "eslint-plugin-ft-flow": "^3.0.11",
82
+ "eslint-plugin-prettier": "^5.5.6",
83
+ "jest": "^29.7.0",
84
+ "lefthook": "^2.1.9",
85
+ "nitrogen": "^0.37.0",
86
+ "prettier": "^3.8.3",
87
+ "react": "19.2.3",
88
+ "react-native": "0.85.0",
89
+ "react-native-builder-bob": "^0.43.0",
90
+ "react-native-nitro-modules": "^0.37.0",
91
+ "react-native-web": "~0.21.2",
92
+ "release-it": "^20.2.0",
93
+ "turbo": "^2.9.16",
94
+ "typescript": "^6.0.3"
95
+ },
96
+ "peerDependencies": {
97
+ "react": "*",
98
+ "react-native": "*",
99
+ "react-native-nitro-modules": "^0.37.0"
100
+ },
101
+ "workspaces": [
102
+ "example"
103
+ ],
104
+ "packageManager": "yarn@4.11.0",
105
+ "react-native-builder-bob": {
106
+ "source": "src",
107
+ "output": "lib",
108
+ "targets": [
109
+ [
110
+ "custom",
111
+ {
112
+ "script": "nitrogen",
113
+ "clean": "nitrogen/"
114
+ }
115
+ ],
116
+ [
117
+ "module",
118
+ {
119
+ "esm": true
120
+ }
121
+ ],
122
+ [
123
+ "typescript",
124
+ {
125
+ "project": "tsconfig.build.json"
126
+ }
127
+ ]
128
+ ]
129
+ },
130
+ "prettier": {
131
+ "quoteProps": "consistent",
132
+ "singleQuote": true,
133
+ "tabWidth": 2,
134
+ "trailingComma": "es5",
135
+ "useTabs": false
136
+ },
137
+ "jest": {
138
+ "preset": "@react-native/jest-preset",
139
+ "testEnvironmentOptions": {
140
+ "customExportConditions": [
141
+ "require",
142
+ "react-native",
143
+ "<%- project.sourceCondition -%>"
144
+ ]
145
+ },
146
+ "modulePathIgnorePatterns": [
147
+ "<rootDir>/example/node_modules",
148
+ "<rootDir>/lib/"
149
+ ]
150
+ },
151
+ "commitlint": {
152
+ "extends": [
153
+ "@commitlint/config-conventional"
154
+ ]
155
+ },
156
+ "release-it": {
157
+ "git": {
158
+ "commitMessage": "chore: release ${version}",
159
+ "tagName": "v${version}"
160
+ },
161
+ "npm": {
162
+ "publish": true
163
+ },
164
+ "github": {
165
+ "release": true
166
+ },
167
+ "plugins": {
168
+ "@release-it/conventional-changelog": {
169
+ "preset": {
170
+ "name": "angular"
171
+ }
172
+ }
173
+ }
174
+ },
175
+ "create-react-native-library": {
176
+ "type": "nitro-module",
177
+ "languages": "kotlin-swift",
178
+ "tools": [
179
+ "eslint",
180
+ "jest",
181
+ "lefthook",
182
+ "release-it",
183
+ "vite"
184
+ ],
185
+ "version": "0.63.0"
186
+ }
187
+ }
@@ -0,0 +1,37 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+
3
+ export type PermissionStatus = 'authorized' | 'denied' | 'notDetermined';
4
+ export type PushPlatform = 'ios' | 'android';
5
+ export type PushEnvironment = 'sandbox' | 'production';
6
+
7
+ export interface PushCredentials {
8
+ platform: PushPlatform;
9
+ token: string;
10
+ environment?: PushEnvironment;
11
+ }
12
+
13
+ export interface PushMessage {
14
+ id?: string;
15
+ title?: string;
16
+ body?: string;
17
+ data: Record<string, string>;
18
+ }
19
+
20
+ export interface AndroidFirebaseConfig {
21
+ projectId?: string;
22
+ applicationId?: string;
23
+ apiKey?: string;
24
+ gcmSenderId?: string;
25
+ }
26
+
27
+ export interface PushSignal extends HybridObject<{
28
+ ios: 'swift';
29
+ android: 'kotlin';
30
+ }> {
31
+ initialize(config: AndroidFirebaseConfig): void;
32
+ getPermissionStatus(): Promise<PermissionStatus>;
33
+ requestPermission(): Promise<PermissionStatus>;
34
+ getCredentials(): Promise<PushCredentials>;
35
+ setOnMessage(callback: (message: PushMessage) => void): void;
36
+ setOnNotificationPress(callback: (message: PushMessage) => void): void;
37
+ }
package/src/index.tsx ADDED
@@ -0,0 +1,16 @@
1
+ export type {
2
+ AndroidFirebaseConfig,
3
+ PermissionStatus,
4
+ PushCredentials,
5
+ PushEnvironment,
6
+ PushMessage,
7
+ PushPlatform,
8
+ } from './PushSignal.nitro';
9
+ export {
10
+ getCredentials,
11
+ getPermissionStatus,
12
+ initialize,
13
+ onMessage,
14
+ onNotificationPress,
15
+ requestPermission,
16
+ } from './pushSignal';
@@ -0,0 +1,67 @@
1
+ import { NitroModules } from 'react-native-nitro-modules';
2
+ import type {
3
+ AndroidFirebaseConfig,
4
+ PermissionStatus,
5
+ PushCredentials,
6
+ PushMessage,
7
+ PushSignal,
8
+ } from './PushSignal.nitro';
9
+
10
+ const PushSignalHybridObject =
11
+ NitroModules.createHybridObject<PushSignal>('PushSignal');
12
+
13
+ const messageListeners = new Set<(message: PushMessage) => void>();
14
+ const pressListeners = new Set<(message: PushMessage) => void>();
15
+ let nativeCallbacksBound = false;
16
+
17
+ function bindNativeCallbacks() {
18
+ if (nativeCallbacksBound) {
19
+ return;
20
+ }
21
+
22
+ nativeCallbacksBound = true;
23
+
24
+ PushSignalHybridObject.setOnMessage((message) => {
25
+ messageListeners.forEach((listener) => listener(message));
26
+ });
27
+
28
+ PushSignalHybridObject.setOnNotificationPress((message) => {
29
+ pressListeners.forEach((listener) => listener(message));
30
+ });
31
+ }
32
+
33
+ export function initialize(config: AndroidFirebaseConfig = {}): void {
34
+ PushSignalHybridObject.initialize(config);
35
+ }
36
+
37
+ export function getPermissionStatus(): Promise<PermissionStatus> {
38
+ return PushSignalHybridObject.getPermissionStatus();
39
+ }
40
+
41
+ export function requestPermission(): Promise<PermissionStatus> {
42
+ return PushSignalHybridObject.requestPermission();
43
+ }
44
+
45
+ export function getCredentials(): Promise<PushCredentials> {
46
+ return PushSignalHybridObject.getCredentials();
47
+ }
48
+
49
+ export function onMessage(
50
+ listener: (message: PushMessage) => void
51
+ ): () => void {
52
+ bindNativeCallbacks();
53
+ messageListeners.add(listener);
54
+ return () => {
55
+ messageListeners.delete(listener);
56
+ };
57
+ }
58
+
59
+ export function onNotificationPress(
60
+ listener: (message: PushMessage) => void
61
+ ): () => void {
62
+ bindNativeCallbacks();
63
+ pressListeners.add(listener);
64
+ return () => {
65
+ pressListeners.delete(listener);
66
+ };
67
+ }
@@ -0,0 +1,32 @@
1
+ import type {
2
+ AndroidFirebaseConfig,
3
+ PermissionStatus,
4
+ PushCredentials,
5
+ PushMessage,
6
+ } from './PushSignal.nitro';
7
+
8
+ export function initialize(_config: AndroidFirebaseConfig = {}): void {}
9
+
10
+ export async function getPermissionStatus(): Promise<PermissionStatus> {
11
+ return 'denied';
12
+ }
13
+
14
+ export async function requestPermission(): Promise<PermissionStatus> {
15
+ return 'denied';
16
+ }
17
+
18
+ export async function getCredentials(): Promise<PushCredentials> {
19
+ throw new Error('Push credentials are not supported on web');
20
+ }
21
+
22
+ export function onMessage(
23
+ _listener: (message: PushMessage) => void
24
+ ): () => void {
25
+ return () => {};
26
+ }
27
+
28
+ export function onNotificationPress(
29
+ _listener: (message: PushMessage) => void
30
+ ): () => void {
31
+ return () => {};
32
+ }