Просмотр исходного кода

Default web push to enabled on PWAs

nimbleghost 2 лет назад
Родитель
Сommit
48d1f7887d
3 измененных файлов с 17 добавлено и 3 удалено
  1. 2 1
      web/src/app/Prefs.js
  2. 13 0
      web/src/app/utils.js
  3. 2 2
      web/src/components/Preferences.jsx

+ 2 - 1
web/src/app/Prefs.js

@@ -1,4 +1,5 @@
 import db from "./db";
+import { isLaunchedPWA } from "./utils";
 
 class Prefs {
   constructor(dbImpl) {
@@ -34,7 +35,7 @@ class Prefs {
 
   async webPushEnabled() {
     const webPushEnabled = await this.db.prefs.get("webPushEnabled");
-    return webPushEnabled?.value ?? false;
+    return webPushEnabled?.value ?? isLaunchedPWA();
   }
 
   async setWebPushEnabled(enabled) {

+ 13 - 0
web/src/app/utils.js

@@ -263,3 +263,16 @@ export const urlB64ToUint8Array = (base64String) => {
   }
   return outputArray;
 };
+
+export const isLaunchedPWA = () => {
+  if (window.matchMedia("(display-mode: standalone)").matches) {
+    return true;
+  }
+
+  // iOS
+  if (window.navigator.standalone === true) {
+    return true;
+  }
+
+  return false;
+};

+ 2 - 2
web/src/components/Preferences.jsx

@@ -36,7 +36,7 @@ import { Info } from "@mui/icons-material";
 import { useOutletContext } from "react-router-dom";
 import theme from "./theme";
 import userManager from "../app/UserManager";
-import { playSound, shuffle, sounds, validUrl } from "../app/utils";
+import { isLaunchedPWA, playSound, shuffle, sounds, validUrl } from "../app/utils";
 import session from "../app/Session";
 import routes from "./routes";
 import accountApi, { Permission, Role } from "../app/AccountApi";
@@ -86,7 +86,7 @@ const Notifications = () => {
         <Sound />
         <MinPriority />
         <DeleteAfter />
-        {notifier.pushPossible() && <WebPushEnabled />}
+        {!isLaunchedPWA() && notifier.pushPossible() && <WebPushEnabled />}
       </PrefGroup>
     </Card>
   );