notifications: Move electon bridge code to `desktop_integration` module.

This commit is contained in:
Lalit 2023-06-07 15:08:12 +05:30 committed by Tim Abbott
parent 37192e8af3
commit e7d19866d9
2 changed files with 43 additions and 44 deletions

View File

@ -1,6 +1,9 @@
import $ from "jquery"; import $ from "jquery";
import * as browser_history from "./browser_history"; import * as browser_history from "./browser_history";
import * as channel from "./channel";
import * as message_store from "./message_store";
import * as narrow from "./narrow";
if (window.electron_bridge !== undefined) { if (window.electron_bridge !== undefined) {
window.electron_bridge.on_event("logout", () => { window.electron_bridge.on_event("logout", () => {
@ -14,4 +17,44 @@ if (window.electron_bridge !== undefined) {
window.electron_bridge.on_event("show-notification-settings", () => { window.electron_bridge.on_event("show-notification-settings", () => {
browser_history.go_to_location("settings/notifications"); browser_history.go_to_location("settings/notifications");
}); });
// The code below is for sending a message received from notification reply which
// is often referred to as inline reply feature. This is done so desktop app doesn't
// have to depend on channel.post for setting crsf_token and narrow.by_topic
// to narrow to the message being sent.
if (window.electron_bridge.set_send_notification_reply_message_supported !== undefined) {
window.electron_bridge.set_send_notification_reply_message_supported(true);
}
window.electron_bridge.on_event("send_notification_reply_message", (message_id, reply) => {
const message = message_store.get(message_id);
const data = {
type: message.type,
content: reply,
to: message.type === "private" ? message.reply_to : message.stream,
topic: message.topic,
};
function success() {
if (message.type === "stream") {
narrow.by_topic(message_id, {trigger: "desktop_notification_reply"});
} else {
narrow.by_recipient(message_id, {trigger: "desktop_notification_reply"});
}
}
function error(error) {
window.electron_bridge.send_event("send_notification_reply_message_failed", {
data,
message_id,
error,
});
}
channel.post({
url: "/json/messages",
data,
success,
error,
});
});
} }

View File

@ -5,14 +5,12 @@ import render_unmute_topic_banner from "../templates/compose_banner/unmute_topic
import * as alert_words from "./alert_words"; import * as alert_words from "./alert_words";
import * as blueslip from "./blueslip"; import * as blueslip from "./blueslip";
import * as channel from "./channel";
import * as compose_banner from "./compose_banner"; import * as compose_banner from "./compose_banner";
import * as favicon from "./favicon"; import * as favicon from "./favicon";
import * as hash_util from "./hash_util"; import * as hash_util from "./hash_util";
import {$t} from "./i18n"; import {$t} from "./i18n";
import * as message_lists from "./message_lists"; import * as message_lists from "./message_lists";
import * as message_parser from "./message_parser"; import * as message_parser from "./message_parser";
import * as message_store from "./message_store";
import * as narrow from "./narrow"; import * as narrow from "./narrow";
import * as narrow_state from "./narrow_state"; import * as narrow_state from "./narrow_state";
import {page_params} from "./page_params"; import {page_params} from "./page_params";
@ -186,48 +184,6 @@ export function notify_above_composebox(
compose_banner.append_compose_banner_to_banner_list($notification, $("#compose_banners")); compose_banner.append_compose_banner_to_banner_list($notification, $("#compose_banners"));
} }
if (window.electron_bridge !== undefined) {
// The code below is for sending a message received from notification reply which
// is often referred to as inline reply feature. This is done so desktop app doesn't
// have to depend on channel.post for setting crsf_token and narrow.by_topic
// to narrow to the message being sent.
if (window.electron_bridge.set_send_notification_reply_message_supported !== undefined) {
window.electron_bridge.set_send_notification_reply_message_supported(true);
}
window.electron_bridge.on_event("send_notification_reply_message", (message_id, reply) => {
const message = message_store.get(message_id);
const data = {
type: message.type,
content: reply,
to: message.type === "private" ? message.reply_to : message.stream,
topic: message.topic,
};
function success() {
if (message.type === "stream") {
narrow.by_topic(message_id, {trigger: "desktop_notification_reply"});
} else {
narrow.by_recipient(message_id, {trigger: "desktop_notification_reply"});
}
}
function error(error) {
window.electron_bridge.send_event("send_notification_reply_message_failed", {
data,
message_id,
error,
});
}
channel.post({
url: "/json/messages",
data,
success,
error,
});
});
}
export function process_notification(notification) { export function process_notification(notification) {
let i; let i;
let notification_object; let notification_object;