Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"categories": {},
"rules": {
"for-direction": "warn",
"jest/no-focused-tests": "error",
"no-async-promise-executor": "warn",
"no-caller": "warn",
"no-class-assign": "warn",
Expand Down
94 changes: 94 additions & 0 deletions __mocks__/react-native.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import { vi } from 'vitest';

const mockRNOneSignal = {
initialize: vi.fn(),
login: vi.fn(),
logout: vi.fn(),
setPrivacyConsentRequired: vi.fn(),
setPrivacyConsentGiven: vi.fn(),
setLogLevel: vi.fn(),
setAlertLevel: vi.fn(),
enterLiveActivity: vi.fn(),
exitLiveActivity: vi.fn(),
setPushToStartToken: vi.fn(),
removePushToStartToken: vi.fn(),
setupDefaultLiveActivity: vi.fn(),
startDefaultLiveActivity: vi.fn(),
addPushSubscriptionObserver: vi.fn(),
getPushSubscriptionId: vi.fn(),
getPushSubscriptionToken: vi.fn(),
getOptedIn: vi.fn(),
optOut: vi.fn(),
optIn: vi.fn(),
addUserStateObserver: vi.fn(),
getOnesignalId: vi.fn(),
getExternalId: vi.fn(),
setLanguage: vi.fn(),
addAlias: vi.fn(),
addAliases: vi.fn(),
removeAlias: vi.fn(),
removeAliases: vi.fn(),
addEmail: vi.fn(),
removeEmail: vi.fn(),
addSms: vi.fn(),
removeSms: vi.fn(),
addTag: vi.fn(),
addTags: vi.fn(),
removeTags: vi.fn(),
getTags: vi.fn(),
hasNotificationPermission: vi.fn(),
requestNotificationPermission: vi.fn(),
canRequestNotificationPermission: vi.fn(),
registerForProvisionalAuthorization: vi.fn(),
permissionNative: vi.fn(),
addNotificationClickListener: vi.fn(),
addNotificationForegroundLifecycleListener: vi.fn(),
addPermissionObserver: vi.fn(),
clearAllNotifications: vi.fn(),
removeNotification: vi.fn(),
removeGroupedNotifications: vi.fn(),
addInAppMessageClickListener: vi.fn(),
addInAppMessagesLifecycleListener: vi.fn(),
addTriggers: vi.fn(),
removeTrigger: vi.fn(),
removeTriggers: vi.fn(),
clearTriggers: vi.fn(),
paused: vi.fn(),
getPaused: vi.fn(),
requestLocationPermission: vi.fn(),
setLocationShared: vi.fn(),
isLocationShared: vi.fn(),
addOutcome: vi.fn(),
addUniqueOutcome: vi.fn(),
addOutcomeWithValue: vi.fn(),
};

const mockPlatform = {
OS: 'ios',
};

export const NativeModules = {
OneSignal: mockRNOneSignal,
};

export const Platform = mockPlatform;

export { mockPlatform, mockRNOneSignal };

export class NativeEventEmitter {
constructor(_nativeModule: typeof mockRNOneSignal) {}

addListener(_eventName: string, _callback: (payload: unknown) => void) {
return {
remove: vi.fn(),
};
}

removeListener(_eventName: string, _callback: (payload: unknown) => void) {
// Mock implementation
}

removeAllListeners(_eventName: string) {
// Mock implementation
}
}
84 changes: 79 additions & 5 deletions bun.lock

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,23 @@
"prepare": "bun run build",
"build": "tsc --noEmit && vite build",
"lint": "oxlint src examples && prettier --check src examples",
"lint:fix": "oxlint src examples --fix && prettier --write src examples"
"lint:fix": "oxlint src examples --fix && prettier --write src examples",
"test": "vitest",
"test:coverage": "vitest run --coverage"
},
"dependencies": {
"invariant": "^2.2.4"
},
"devDependencies": {
"@types/invariant": "^2.2.37",
"@types/react-native": "^0.73.0",
"@vitest/coverage-v8": "4.0.8",
"oxlint": "^1.26.0",
"prettier": "^3.6.2",
"typescript": "^5.9.3",
"vite": "^7.2.0",
"vite-plugin-dts": "^4.5.4"
"vite-plugin-dts": "^4.5.4",
"vitest": "^4.0.8"
},
"keywords": [
"react-component",
Expand Down
7 changes: 7 additions & 0 deletions src/constants/Subscription.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export enum OSNotificationPermission {
NotDetermined = 0,
Denied,
Authorized,
Provisional, // only available in iOS 12
Ephemeral, // only available in iOS 14
}
Loading
Loading