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