only request notification permissions on the notifications page
This commit is contained in:
		
							parent
							
								
									f4b81b0ff0
								
							
						
					
					
						commit
						c4b96b998f
					
				@ -72,7 +72,7 @@ export default function Header ({ sub }) {
 | 
			
		||||
    onCompleted: (data) => {
 | 
			
		||||
      const notified = JSON.parse(localStorage.getItem('notified')) || false
 | 
			
		||||
      if (!notified && data.hasNewNotes) {
 | 
			
		||||
        notification.show('you have new notifications')
 | 
			
		||||
        notification.show('you have Stacker News notifications')
 | 
			
		||||
      }
 | 
			
		||||
      localStorage.setItem('notified', data.hasNewNotes)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -301,10 +301,11 @@ export const NotificationProvider = ({ children }) => {
 | 
			
		||||
  const [isDefaultPermission, setIsDefaultPermission] = useState(isSupported ? window.Notification.permission === 'default' : undefined)
 | 
			
		||||
  const [isGranted, setIsGranted] = useState(isSupported ? window.Notification.permission === 'granted' : undefined)
 | 
			
		||||
  const me = useMe()
 | 
			
		||||
  const router = useRouter()
 | 
			
		||||
 | 
			
		||||
  const show_ = (title, options) => {
 | 
			
		||||
    const icon = '/android-chrome-24x24.png'
 | 
			
		||||
    window.Notification(title, { icon, ...options })
 | 
			
		||||
    return new window.Notification(title, { icon, ...options })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const show = useCallback((...args) => {
 | 
			
		||||
@ -317,15 +318,15 @@ export const NotificationProvider = ({ children }) => {
 | 
			
		||||
      setIsDefaultPermission(window.Notification.permission === 'default')
 | 
			
		||||
      if (result === 'granted') {
 | 
			
		||||
        setIsGranted(result === 'granted')
 | 
			
		||||
        show_('you have enabled notifications')
 | 
			
		||||
        show_('Stacker News notifications enabled')
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  }, [isDefaultPermission])
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    if (!me || !isSupported || !isDefaultPermission) return
 | 
			
		||||
    if (!me || !isSupported || !isDefaultPermission || router.pathname !== '/notifications') return
 | 
			
		||||
    requestPermission()
 | 
			
		||||
  }, [])
 | 
			
		||||
  }, [router?.pathname])
 | 
			
		||||
 | 
			
		||||
  const ctx = { isBrowser, isSupported, isDefaultPermission, isGranted, show }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user