mirror of
https://github.com/element-hq/element-web
synced 2024-11-29 04:48:50 +03:00
Merge pull request #13890 from vector-im/t3chguy/pwa-platform
Add PWA Platform with PWA-specific badge controls
This commit is contained in:
commit
bbe9a73266
3 changed files with 40 additions and 2 deletions
6
src/@types/global.d.ts
vendored
6
src/@types/global.d.ts
vendored
|
@ -31,6 +31,12 @@ declare global {
|
|||
// https://developer.mozilla.org/en-US/docs/Web/API/InstallTrigger
|
||||
InstallTrigger: any;
|
||||
}
|
||||
|
||||
interface Navigator {
|
||||
// PWA badging extensions https://w3c.github.io/badging/
|
||||
setAppBadge?(count: number): Promise<void>;
|
||||
clearAppBadge?(): Promise<void>;
|
||||
}
|
||||
}
|
||||
|
||||
// add method which is missing from the node typing
|
||||
|
|
|
@ -26,6 +26,7 @@ import * as React from "react";
|
|||
import * as languageHandler from "matrix-react-sdk/src/languageHandler";
|
||||
import SettingsStore from "matrix-react-sdk/src/settings/SettingsStore";
|
||||
import ElectronPlatform from "./platform/ElectronPlatform";
|
||||
import PWAPlatform from "./platform/PWAPlatform";
|
||||
import WebPlatform from "./platform/WebPlatform";
|
||||
import PlatformPeg from "matrix-react-sdk/src/PlatformPeg";
|
||||
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
|
||||
|
@ -39,8 +40,10 @@ export const rageshakePromise = initRageshake();
|
|||
export function preparePlatform() {
|
||||
if (window.ipcRenderer) {
|
||||
console.log("Using Electron platform");
|
||||
const plaf = new ElectronPlatform();
|
||||
PlatformPeg.set(plaf);
|
||||
PlatformPeg.set(new ElectronPlatform());
|
||||
} else if (window.matchMedia('(display-mode: standalone)').matches) {
|
||||
console.log("Using PWA platform");
|
||||
PlatformPeg.set(new PWAPlatform());
|
||||
} else {
|
||||
console.log("Using Web platform");
|
||||
PlatformPeg.set(new WebPlatform());
|
||||
|
|
29
src/vector/platform/PWAPlatform.ts
Normal file
29
src/vector/platform/PWAPlatform.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
Copyright 2020 New Vector Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import WebPlatform from "./WebPlatform";
|
||||
|
||||
export default class PWAPlatform extends WebPlatform {
|
||||
setNotificationCount(count: number) {
|
||||
if (!navigator.setAppBadge) return super.setNotificationCount(count);
|
||||
if (this.notificationCount === count) return;
|
||||
this.notificationCount = count;
|
||||
|
||||
navigator.setAppBadge(count).catch(e => {
|
||||
console.error("Failed to update PWA app badge", e);
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue