Files
ColdBreeze-chat-web/src/common/component/Notification/index.js
T
2022-06-12 15:30:14 +08:00

34 lines
991 B
JavaScript

import { useEffect } from "react";
import { useNavigate } from "react-router-dom";
// import toast, { Toaster } from 'react-hot-toast';
import useDeviceToken from "./useDeviceToken";
import { vapidKey } from "../../../app/config";
import { useUpdateDeviceTokenMutation } from "../../../app/services/auth";
const Notification = () => {
const navigateTo = useNavigate();
const token = useDeviceToken(vapidKey);
const [updateDeviceToken] = useUpdateDeviceTokenMutation();
useEffect(() => {
if (token) {
updateDeviceToken(token);
}
}, [token]);
useEffect(() => {
const handleServiceworkerMessage = (event) => {
const { newPath } = event.data;
navigateTo(newPath);
};
// https only
navigator.serviceWorker?.addEventListener("message", handleServiceworkerMessage);
return () => {
navigator.serviceWorker?.removeEventListener("message", handleServiceworkerMessage);
};
}, []);
return null;
};
export default Notification;