electron_bridge: Use getter and setter interface to mutable properties.

This exists in all versions of the desktop app that we still support,
and will eventually let us delete a bit of annoying compatibility code
from the desktop app’s injected JavaScript.

Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
Anders Kaseorg
2020-04-26 14:13:25 -07:00
committed by Tim Abbott
parent 25c5856988
commit e701f20861
3 changed files with 8 additions and 6 deletions

View File

@@ -868,14 +868,14 @@ run_test('electron_bridge', () => {
assert.equal(activity.compute_active_status(), activity.ACTIVE);
window.electron_bridge = {
idle_on_system: true,
get_idle_on_system: () => true,
};
assert.equal(activity.compute_active_status(), activity.IDLE);
activity.client_is_active = false;
assert.equal(activity.compute_active_status(), activity.IDLE);
window.electron_bridge = {
idle_on_system: false,
get_idle_on_system: () => false,
};
assert.equal(activity.compute_active_status(), activity.ACTIVE);
activity.client_is_active = true;

View File

@@ -272,11 +272,11 @@ exports.compute_active_status = function () {
// * For the electron desktop app, we also know whether the
// user is active or idle elsewhere on their system.
//
// The check for `idle_on_system === undefined` is feature
// The check for `get_idle_on_system === undefined` is feature
// detection; older desktop app releases never set that property.
if (window.electron_bridge !== undefined
&& window.electron_bridge.idle_on_system !== undefined) {
if (window.electron_bridge.idle_on_system) {
&& window.electron_bridge.get_idle_on_system !== undefined) {
if (window.electron_bridge.get_idle_on_system()) {
return exports.IDLE;
}
return exports.ACTIVE;

View File

@@ -271,7 +271,9 @@ if (window.electron_bridge !== undefined) {
// 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.
window.electron_bridge.send_notification_reply_message_supported = true;
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', function (message_id, reply) {
const message = message_store.get(message_id);
const data = {