commit
						e946767cba
					
				 6 changed files with 128 additions and 0 deletions
			
			
		| @ -0,0 +1,9 @@ | |||
| dist/ | |||
| node_modules/ | |||
| .DS_Store | |||
| Pods/ | |||
| *.iml | |||
| .idea/ | |||
| .vscode/ | |||
| build/ | |||
| *.tgz | |||
| @ -0,0 +1,45 @@ | |||
| { | |||
|   "name": "capacitor-daily-notification", | |||
|   "version": "0.0.1", | |||
|   "description": "Capacitor plugin for daily notifications with network content", | |||
|   "main": "dist/plugin.js", | |||
|   "module": "dist/esm/index.js", | |||
|   "types": "dist/types/index.d.ts", | |||
|   "scripts": { | |||
|     "build": "npm run clean && tsc", | |||
|     "clean": "rimraf ./dist", | |||
|     "watch": "tsc --watch", | |||
|     "prepublishOnly": "npm run build" | |||
|   }, | |||
|   "author": "Matthew Raymer", | |||
|   "license": "MIT", | |||
|   "dependencies": { | |||
|     "@capacitor/core": "^5.0.0" | |||
|   }, | |||
|   "devDependencies": { | |||
|     "typescript": "^4.9.0", | |||
|     "rimraf": "^3.0.2" | |||
|   }, | |||
|   "peerDependencies": { | |||
|     "@capacitor/core": "^5.0.0" | |||
|   }, | |||
|   "files": [ | |||
|     "dist/", | |||
|     "ios/", | |||
|     "android/", | |||
|     "CapacitorDailyNotification.podspec" | |||
|   ], | |||
|   "keywords": [ | |||
|     "capacitor", | |||
|     "plugin", | |||
|     "native" | |||
|   ], | |||
|   "capacitor": { | |||
|     "ios": { | |||
|       "src": "ios" | |||
|     }, | |||
|     "android": { | |||
|       "src": "android" | |||
|     } | |||
|   } | |||
| } | |||
| @ -0,0 +1,19 @@ | |||
| export interface DailyNotificationPlugin { | |||
|     initialize(options: DailyNotificationOptions): Promise<void>; | |||
|     checkPermissions(): Promise<PermissionStatus>; | |||
|     requestPermissions(): Promise<PermissionStatus>; | |||
|   } | |||
|    | |||
|   export interface DailyNotificationOptions { | |||
|     url: string; | |||
|     notificationTime: string; // "HH:mm" format
 | |||
|     title?: string; | |||
|     body?: string; | |||
|   } | |||
|    | |||
|   export interface PermissionStatus { | |||
|     notifications: PermissionState; | |||
|     backgroundRefresh?: PermissionState; // iOS only
 | |||
|   } | |||
|    | |||
|   export type PermissionState = 'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'; | |||
| @ -0,0 +1,10 @@ | |||
| import { registerPlugin } from '@capacitor/core'; | |||
| 
 | |||
| import type { DailyNotificationPlugin } from './definitions'; | |||
| 
 | |||
| const DailyNotification = registerPlugin<DailyNotificationPlugin>('DailyNotification', { | |||
|   web: () => import('./web').then(m => new m.DailyNotificationWeb()), | |||
| }); | |||
| 
 | |||
| export * from './definitions'; | |||
| export { DailyNotification }; | |||
| @ -0,0 +1,45 @@ | |||
| import { WebPlugin } from '@capacitor/core'; | |||
| 
 | |||
| import type { DailyNotificationPlugin, DailyNotificationOptions, PermissionStatus } from './definitions'; | |||
| 
 | |||
| export class DailyNotificationWeb extends WebPlugin implements DailyNotificationPlugin { | |||
|   async initialize(options: DailyNotificationOptions): Promise<void> { | |||
|     console.warn('DailyNotification.initialize() is not implemented on web'); | |||
|     return; | |||
|   } | |||
| 
 | |||
|   async checkPermissions(): Promise<PermissionStatus> { | |||
|     if ('Notification' in window) { | |||
|       const status = await Notification.permission; | |||
|       return { | |||
|         notifications: this.mapWebPermission(status), | |||
|       }; | |||
|     } | |||
|     return { | |||
|       notifications: 'denied', | |||
|     }; | |||
|   } | |||
| 
 | |||
|   async requestPermissions(): Promise<PermissionStatus> { | |||
|     if ('Notification' in window) { | |||
|       const status = await Notification.requestPermission(); | |||
|       return { | |||
|         notifications: this.mapWebPermission(status), | |||
|       }; | |||
|     } | |||
|     return { | |||
|       notifications: 'denied', | |||
|     }; | |||
|   } | |||
| 
 | |||
|   private mapWebPermission(permission: NotificationPermission): PermissionState { | |||
|     switch (permission) { | |||
|       case 'granted': | |||
|         return 'granted'; | |||
|       case 'denied': | |||
|         return 'denied'; | |||
|       default: | |||
|         return 'prompt'; | |||
|     } | |||
|   } | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue