UNPKG

@fliklab/react-push-notification

Version:

Simple and easy-to-use web push notification library for React

3 lines (2 loc) 1.11 kB
import{useState as r,useEffect as e,useCallback as o}from"react";const i=async()=>{if(!("Notification"in window))return console.error("This browser does not support notifications"),!1;try{const r=await Notification.requestPermission();return"granted"===r&&await(async()=>{if("serviceWorker"in navigator)try{const r=await navigator.serviceWorker.register("/service-worker.ts",{scope:"/"});console.log("Service Worker registered:",r)}catch(r){console.error("Service Worker registration failed:",r)}})(),"granted"===r}catch(r){return console.error("Error requesting notification permission:",r),!1}},t=()=>{const[t,n]=r(!1),[s,c]=r(null);e((()=>{n("granted"===Notification.permission)}),[]);return{isSubscribed:t,error:s,subscribe:o((async()=>{try{c(null);const r=await i();n(r),r||c("알림 권한이 거부되었습니다.")}catch(r){c("알림 구독 중 오류가 발생했습니다."),console.error("Subscription error:",r)}}),[]),unsubscribe:o((()=>{c("브라우저 설정에서 알림 권한을 수동으로 취소해주세요.")}),[])}};export{t as usePushNotification}; //# sourceMappingURL=index.mjs.map