mirror of
https://github.com/zulip/zulip.git
synced 2026-07-18 21:04:19 +08:00
settings: Show desktop notifications warning when permissions needed.
Some checks failed
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Display a warning banner in the desktop notifications settings when browser permissions are not granted. Hide "Send test notification" button unless permissions are granted. Fixes: #33222.
This commit is contained in:
parent
6f0ae8633f
commit
32e6383779
@ -5,6 +5,7 @@ import {z} from "zod";
|
||||
import render_confirm_disable_all_notifications from "../templates/confirm_dialog/confirm_disable_all_notifications.hbs";
|
||||
import render_stream_specific_notification_row from "../templates/settings/stream_specific_notification_row.hbs";
|
||||
|
||||
import * as banners from "./banners.ts";
|
||||
import * as blueslip from "./blueslip.ts";
|
||||
import * as channel from "./channel.ts";
|
||||
import * as confirm_dialog from "./confirm_dialog.ts";
|
||||
@ -33,6 +34,22 @@ import * as util from "./util.ts";
|
||||
|
||||
export let user_settings_panel: SettingsPanel | undefined;
|
||||
|
||||
const DESKTOP_NOTIFICATIONS_BANNER: banners.Banner = {
|
||||
intent: "warning",
|
||||
label: $t({
|
||||
defaultMessage: "Zulip needs your permission to enable desktop notifications.",
|
||||
}),
|
||||
buttons: [
|
||||
{
|
||||
label: $t({defaultMessage: "Enable notifications"}),
|
||||
custom_classes: "request-desktop-notifications",
|
||||
attention: "primary",
|
||||
},
|
||||
],
|
||||
close_button: true,
|
||||
custom_classes: "desktop-setting-notifications",
|
||||
};
|
||||
|
||||
function rerender_ui(): void {
|
||||
const $unmatched_streams_table = $("#stream-specific-notify-table");
|
||||
if ($unmatched_streams_table.length === 0) {
|
||||
@ -68,6 +85,18 @@ function rerender_ui(): void {
|
||||
} else {
|
||||
$unmatched_streams_table.css("display", "table-row-group");
|
||||
}
|
||||
update_notification_banner();
|
||||
}
|
||||
|
||||
function update_notification_banner(): void {
|
||||
const permission = Notification.permission;
|
||||
if (permission === "granted") {
|
||||
banners.close($(".desktop-notification-settings-banners .desktop-setting-notifications"));
|
||||
$(".send_test_notification").show();
|
||||
} else {
|
||||
banners.append(DESKTOP_NOTIFICATIONS_BANNER, $(".desktop-notification-settings-banners"));
|
||||
$(".send_test_notification").hide();
|
||||
}
|
||||
}
|
||||
|
||||
function change_notification_setting(
|
||||
@ -336,6 +365,26 @@ export function set_up(settings_panel: SettingsPanel): void {
|
||||
);
|
||||
});
|
||||
|
||||
$("#settings_content").on("click", ".request-desktop-notifications", (e) => {
|
||||
e.preventDefault();
|
||||
void Notification.requestPermission().then((permission) => {
|
||||
if (permission === "granted") {
|
||||
update_notification_banner();
|
||||
} else if (permission === "denied") {
|
||||
window.open(
|
||||
"/help/desktop-notifications#check-platform-settings",
|
||||
"_blank",
|
||||
"noopener noreferrer",
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#settings_content").on("click", ".banner-close-button", (e) => {
|
||||
e.preventDefault();
|
||||
$(".banner-wrapper").remove();
|
||||
});
|
||||
|
||||
set_enable_marketing_emails_visibility();
|
||||
rerender_ui();
|
||||
}
|
||||
|
||||
@ -107,6 +107,8 @@
|
||||
{{> settings_save_discard_widget section_name="desktop-message-settings" show_only_indicator=(not for_realm_settings) }}
|
||||
</div>
|
||||
|
||||
<div class="desktop-notification-settings-banners"></div>
|
||||
|
||||
{{#unless for_realm_settings}}
|
||||
<p><a class="send_test_notification">{{t "Send a test notification" }}</a></p>
|
||||
{{/unless}}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user