service worker: use injectManifest
- a RPC framework is added for further use
- fix an error that the service worker is not
    registered until the settings opened
- added theme-color
- settings: added a item to indicate the offline
    availablity
			
			
This commit is contained in:
		
							parent
							
								
									3ea7072437
								
							
						
					
					
						commit
						559a352bc1
					
				
					 11 changed files with 341 additions and 19 deletions
				
			
		| 
						 | 
				
			
			@ -1,12 +1,37 @@
 | 
			
		|||
import { createContext, useContext, type Accessor } from "solid-js";
 | 
			
		||||
import { useRegisterSW } from "virtual:pwa-register/solid";
 | 
			
		||||
 | 
			
		||||
export function isiOS() {
 | 
			
		||||
  return [
 | 
			
		||||
    'iPad Simulator',
 | 
			
		||||
    'iPhone Simulator',
 | 
			
		||||
    'iPod Simulator',
 | 
			
		||||
    'iPad',
 | 
			
		||||
    'iPhone',
 | 
			
		||||
    'iPod'
 | 
			
		||||
  ].includes(navigator.platform)
 | 
			
		||||
  // iPad on iOS 13 detection
 | 
			
		||||
  || (navigator.userAgent.includes("Mac") && "ontouchend" in document)
 | 
			
		||||
}
 | 
			
		||||
  return (
 | 
			
		||||
    [
 | 
			
		||||
      "iPad Simulator",
 | 
			
		||||
      "iPhone Simulator",
 | 
			
		||||
      "iPod Simulator",
 | 
			
		||||
      "iPad",
 | 
			
		||||
      "iPhone",
 | 
			
		||||
      "iPod",
 | 
			
		||||
    ].includes(navigator.platform) ||
 | 
			
		||||
    // iPad on iOS 13 detection
 | 
			
		||||
    (navigator.userAgent.includes("Mac") && "ontouchend" in document)
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export type ServiceWorkerService = {
 | 
			
		||||
  needRefresh: Accessor<boolean>;
 | 
			
		||||
  offlineReady: Accessor<boolean>;
 | 
			
		||||
  serviceWorker: Accessor<ServiceWorker | undefined>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const ServiceWorkerContext = /* @__PURE__ */ createContext<
 | 
			
		||||
  ServiceWorkerService
 | 
			
		||||
>(({
 | 
			
		||||
  needRefresh: () => false,
 | 
			
		||||
  offlineReady: () => false,
 | 
			
		||||
  serviceWorker: () => undefined
 | 
			
		||||
}));
 | 
			
		||||
 | 
			
		||||
export const ServiceWorkerProvider = ServiceWorkerContext.Provider;
 | 
			
		||||
 | 
			
		||||
export function useServiceWorker(): ServiceWorkerService {
 | 
			
		||||
  return useContext(ServiceWorkerContext);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue