pwa support check
This commit is contained in:
@ -7,13 +7,19 @@ import ProtectedRoute from './protectedRoute';
|
||||
import { UserRole } from '@prisma/client';
|
||||
|
||||
function PwaManager() {
|
||||
const isSupported = () =>
|
||||
'Notification' in window &&
|
||||
'serviceWorker' in navigator &&
|
||||
'PushManager' in window
|
||||
|
||||
const [inProgress, setInProgress] = useState(false)
|
||||
const [deferredPrompt, setDeferredPrompt] = useState(null);
|
||||
const [isPWAInstalled, setIsPWAInstalled] = useState(false);
|
||||
const [isStandAlone, setIsStandAlone] = useState(false);
|
||||
const [isSubscribed, setIsSubscribed] = useState(false);
|
||||
const [subscription, setSubscription] = useState(null);
|
||||
const [registration, setRegistration] = useState(null);
|
||||
const [notificationPermission, setNotificationPermission] = useState(Notification.permission);
|
||||
const [notificationPermission, setNotificationPermission] = useState(isSupported() && Notification.permission);
|
||||
const [subs, setSubs] = useState("")
|
||||
|
||||
const { data: session } = useSession();
|
||||
@ -23,10 +29,12 @@ function PwaManager() {
|
||||
isAdmin = session.user.role === UserRole.ADMIN;
|
||||
}
|
||||
|
||||
|
||||
// Handle PWA installation
|
||||
useEffect(() => {
|
||||
|
||||
setNotificationPermission(Notification.permission);
|
||||
if (isSupported()) {
|
||||
setNotificationPermission(Notification.permission);
|
||||
}
|
||||
|
||||
// Handle Push Notification Subscription
|
||||
if ('serviceWorker' in navigator && 'PushManager' in window) {
|
||||
@ -190,14 +198,19 @@ function PwaManager() {
|
||||
// Function to request push notification permission
|
||||
const requestNotificationPermission = async (e) => {
|
||||
e.preventDefault();
|
||||
const permission = await Notification.requestPermission();
|
||||
setNotificationPermission(permission);
|
||||
if (permission === "granted") {
|
||||
// User granted permission
|
||||
subscribeToNotifications(null); // Pass the required argument here
|
||||
} else {
|
||||
// User denied or dismissed permission
|
||||
console.log("Push notifications permission denied.");
|
||||
if (isSupported()) {
|
||||
const permission = await Notification.requestPermission();
|
||||
setNotificationPermission(permission);
|
||||
if (permission === "granted") {
|
||||
// User granted permission
|
||||
subscribeToNotifications(null); // Pass the required argument here
|
||||
} else {
|
||||
// User denied or dismissed permission
|
||||
console.log("Push notifications permission denied.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.error('Web push not supported');
|
||||
}
|
||||
};
|
||||
|
||||
@ -308,6 +321,7 @@ function PwaManager() {
|
||||
</button>
|
||||
)}
|
||||
{isPWAInstalled && <p>Инсталирано!</p>}
|
||||
{!isSupported() && <p>Това устройство не поддържа нотификации</p>}
|
||||
{/* {isStandAlone && <p>PWA App</p>} */}
|
||||
<button
|
||||
onClick={isSubscribed ? unsubscribeFromNotifications : subscribeToNotifications}
|
||||
|
Reference in New Issue
Block a user