aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVendicated <vendicated@riseup.net>2023-02-14 19:20:10 +0100
committerVendicated <vendicated@riseup.net>2023-02-14 19:20:10 +0100
commit68055977d24c25cd2d086cba173abb392059b03d (patch)
treea1209e3626ad6a03feec2bf0aa315ad18144ead8
parent2b0c25b45ccd66612899bb493a59d275458cd46d (diff)
downloadVencord-68055977d24c25cd2d086cba173abb392059b03d.tar.gz
Vencord-68055977d24c25cd2d086cba173abb392059b03d.tar.bz2
Vencord-68055977d24c25cd2d086cba173abb392059b03d.zip
NotificationAPI: Correctly request browser permissions
-rw-r--r--src/api/Notifications/Notifications.tsx11
-rw-r--r--src/components/VencordSettings/VencordTab.tsx7
2 files changed, 16 insertions, 2 deletions
diff --git a/src/api/Notifications/Notifications.tsx b/src/api/Notifications/Notifications.tsx
index 9c599aa..46472ad 100644
--- a/src/api/Notifications/Notifications.tsx
+++ b/src/api/Notifications/Notifications.tsx
@@ -76,8 +76,15 @@ function shouldBeNative() {
return false;
}
-export function showNotification(data: NotificationData) {
- if (shouldBeNative()) {
+export async function requestPermission() {
+ return (
+ Notification.permission === "granted" ||
+ (Notification.permission !== "denied" && (await Notification.requestPermission()) === "granted")
+ );
+}
+
+export async function showNotification(data: NotificationData) {
+ if (shouldBeNative() && await requestPermission()) {
const { title, body, icon, image, onClick = null, onClose = null } = data;
const n = new Notification(title, {
body,
diff --git a/src/components/VencordSettings/VencordTab.tsx b/src/components/VencordSettings/VencordTab.tsx
index 6ea1ca9..9880872 100644
--- a/src/components/VencordSettings/VencordTab.tsx
+++ b/src/components/VencordSettings/VencordTab.tsx
@@ -21,6 +21,7 @@ import { useSettings } from "@api/settings";
import { classNameFactory } from "@api/Styles";
import DonateButton from "@components/DonateButton";
import ErrorBoundary from "@components/ErrorBoundary";
+import { ErrorCard } from "@components/ErrorCard";
import IpcEvents from "@utils/IpcEvents";
import { Margins } from "@utils/margins";
import { identity, useAwaiter } from "@utils/misc";
@@ -141,6 +142,12 @@ function VencordSettings() {
<Forms.FormTitle tag="h5">Notification Style</Forms.FormTitle>
+ {notifSettings.useNative !== "never" && Notification.permission === "denied" && (
+ <ErrorCard style={{ padding: "1em" }} className={Margins.bottom8}>
+ <Forms.FormTitle tag="h5">Desktop Notification Permission denied</Forms.FormTitle>
+ <Forms.FormText>You have denied Notification Permissions. Thus, Desktop notifications will not work!</Forms.FormText>
+ </ErrorCard>
+ )}
<Forms.FormText className={Margins.bottom8}>
Some plugins may show you notifications. These come in two styles:
<ul>