35 lines
		
	
	
	
		
			782 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			782 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// Copyright 2021 Signal Messenger, LLC
 | 
						|
// SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
import { useEffect, useState } from 'react';
 | 
						|
 | 
						|
function getOnlineStatus(): boolean {
 | 
						|
  if (window.textsecure) {
 | 
						|
    return window.textsecure.server?.isOnline() ?? true;
 | 
						|
  }
 | 
						|
 | 
						|
  // Only for storybook
 | 
						|
  return navigator.onLine;
 | 
						|
}
 | 
						|
 | 
						|
export function useIsOnline(): boolean {
 | 
						|
  const [isOnline, setIsOnline] = useState(getOnlineStatus());
 | 
						|
 | 
						|
  useEffect(() => {
 | 
						|
    const update = () => {
 | 
						|
      setIsOnline(getOnlineStatus());
 | 
						|
    };
 | 
						|
 | 
						|
    update();
 | 
						|
 | 
						|
    window.Whisper.events.on('online', update);
 | 
						|
    window.Whisper.events.on('offline', update);
 | 
						|
 | 
						|
    return () => {
 | 
						|
      window.Whisper.events.off('online', update);
 | 
						|
      window.Whisper.events.off('offline', update);
 | 
						|
    };
 | 
						|
  }, []);
 | 
						|
 | 
						|
  return isOnline;
 | 
						|
}
 |