js: Convert static/js/presence.js to ES6 module.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2021-02-27 16:12:10 -08:00
committed by Tim Abbott
parent 19bb5fa7ad
commit 818b5aacb6
13 changed files with 47 additions and 53 deletions

View File

@@ -158,7 +158,6 @@
"page_params": false,
"panels": false,
"pointer": false,
"presence": false,
"reactions": false,
"realm_icon": false,
"realm_logo": false,

View File

@@ -151,7 +151,7 @@ presence_info.set(alice.user_id, {status: "inactive"});
presence_info.set(fred.user_id, {status: "active"});
presence_info.set(jill.user_id, {status: "active"});
presence.presence_info = presence_info;
presence.__Rewire__("presence_info", presence_info);
// Simulate a small window by having the
// fill_screen_with_content render the entire
@@ -226,7 +226,7 @@ run_test("huddle_data.process_loaded_messages", () => {
assert.deepEqual(huddle_data.get_huddles(), [user_ids_string2, user_ids_string1]);
});
presence.presence_info = new Map();
presence.__Rewire__("presence_info", new Map());
presence.presence_info.set(alice.user_id, {status: activity.IDLE});
presence.presence_info.set(fred.user_id, {status: activity.ACTIVE});
presence.presence_info.set(jill.user_id, {status: activity.ACTIVE});
@@ -406,7 +406,7 @@ test_ui("handlers", (override) => {
})();
});
presence.presence_info = new Map();
presence.__Rewire__("presence_info", new Map());
presence.presence_info.set(alice.user_id, {status: activity.ACTIVE});
presence.presence_info.set(fred.user_id, {status: activity.ACTIVE});
presence.presence_info.set(jill.user_id, {status: activity.ACTIVE});

View File

@@ -116,7 +116,7 @@ run_test("huddle_fraction_present", () => {
presence_info.set(fred.user_id, {status: "idle"}); // does not count as present
// jill not in list
presence_info.set(mark.user_id, {status: "offline"}); // does not count
presence.presence_info = presence_info;
presence.__Rewire__("presence_info", presence_info);
assert.equal(buddy_data.huddle_fraction_present(huddle), 0.5);
@@ -124,7 +124,7 @@ run_test("huddle_fraction_present", () => {
for (const user of [alice, fred, jill, mark]) {
presence_info.set(user.user_id, {status: "active"}); // counts as present
}
presence.presence_info = presence_info;
presence.__Rewire__("presence_info", presence_info);
assert.equal(buddy_data.huddle_fraction_present(huddle), 1);
@@ -135,7 +135,7 @@ run_test("huddle_fraction_present", () => {
presence_info.set(fred.user_id, {status: "idle"}); // does not count as present
// jill not in list
presence_info.set(mark.user_id, {status: "offline"}); // does not count
presence.presence_info = presence_info;
presence.__Rewire__("presence_info", presence_info);
assert.equal(buddy_data.huddle_fraction_present(huddle), undefined);
});

View File

@@ -30,7 +30,6 @@ rewiremock("../../static/js/pm_list_dom").with(pm_list_dom);
rewiremock.enable();
zrequire("presence");
zrequire("buddy_data");
const people = zrequire("people");
const pm_conversations = zrequire("pm_conversations");

View File

@@ -48,7 +48,6 @@ rewiremock.enable();
zrequire("narrow");
const people = zrequire("people");
zrequire("presence");
zrequire("buddy_data");
const user_status = zrequire("user_status");
const message_edit = zrequire("message_edit");

View File

@@ -114,7 +114,6 @@ rewiremock.enable();
const util = zrequire("util");
zrequire("message_view_header");
zrequire("presence");
zrequire("search_pill_widget");
zrequire("unread");
zrequire("bot_data");

View File

@@ -8,6 +8,7 @@ const {ListCursor} = require("./list_cursor");
const people = require("./people");
const pm_list = require("./pm_list");
const popovers = require("./popovers");
const presence = require("./presence");
const server_events = require("./server_events");
const {UserSearch} = require("./user_search");
const user_status = require("./user_status");

View File

@@ -3,6 +3,7 @@
const compose_fade = require("./compose_fade");
const hash_util = require("./hash_util");
const people = require("./people");
const presence = require("./presence");
const user_status = require("./user_status");
const util = require("./util");
/*

View File

@@ -33,7 +33,6 @@ import "../notifications";
import "../message_events";
import "../server_events";
import "../zulip";
import "../presence";
import "../buddy_data";
import "../padded_widget";
import "../buddy_list";

View File

@@ -31,7 +31,6 @@ declare let padded_widget: any;
declare let page_params: any;
declare let panels: any;
declare let pointer: any;
declare let presence: any;
declare let reactions: any;
declare let realm_icon: any;
declare let realm_logo: any;

View File

@@ -1,8 +1,6 @@
"use strict";
const people = require("./people");
const reload_state = require("./reload_state");
const server_events = require("./server_events");
import * as people from "./people";
import * as reload_state from "./reload_state";
import * as server_events from "./server_events";
// This module just manages data. See activity.js for
// the UI of our buddy list.
@@ -14,7 +12,7 @@ const server_events = require("./server_events");
// In future commits we'll use raw_info to facilitate
// handling server events and/or timeout events.
const raw_info = new Map();
exports.presence_info = new Map();
export const presence_info = new Map();
/* Mark users as offline after 140 seconds since their last checkin,
* Keep in sync with zerver/tornado/event_queue.py:receiver_is_idle
@@ -23,31 +21,31 @@ const OFFLINE_THRESHOLD_SECS = 140;
const BIG_REALM_COUNT = 250;
exports.is_active = function (user_id) {
if (exports.presence_info.has(user_id)) {
const status = exports.presence_info.get(user_id).status;
export function is_active(user_id) {
if (presence_info.has(user_id)) {
const status = presence_info.get(user_id).status;
if (status === "active") {
return true;
}
}
return false;
};
}
exports.get_status = function (user_id) {
export function get_status(user_id) {
if (people.is_my_user_id(user_id)) {
return "active";
}
if (exports.presence_info.has(user_id)) {
return exports.presence_info.get(user_id).status;
if (presence_info.has(user_id)) {
return presence_info.get(user_id).status;
}
return "offline";
};
}
exports.get_user_ids = function () {
return Array.from(exports.presence_info.keys());
};
export function get_user_ids() {
return Array.from(presence_info.keys());
}
exports.status_from_raw = function (raw) {
export function status_from_raw(raw) {
/*
Example of `raw`:
@@ -96,9 +94,9 @@ exports.status_from_raw = function (raw) {
status: "offline",
last_active,
};
};
}
exports.update_info_from_event = function (user_id, info, server_timestamp) {
export function update_info_from_event(user_id, info, server_timestamp) {
/*
Example of `info`:
@@ -135,11 +133,11 @@ exports.update_info_from_event = function (user_id, info, server_timestamp) {
raw_info.set(user_id, raw);
const status = exports.status_from_raw(raw);
exports.presence_info.set(user_id, status);
};
const status = status_from_raw(raw);
presence_info.set(user_id, status);
}
exports.set_info = function (presences, server_timestamp) {
export function set_info(presences, server_timestamp) {
/*
Example `presences` data:
@@ -151,7 +149,7 @@ exports.set_info = function (presences, server_timestamp) {
*/
raw_info.clear();
exports.presence_info.clear();
presence_info.clear();
for (const [user_id_str, info] of Object.entries(presences)) {
const user_id = Number.parseInt(user_id_str, 10);
@@ -195,13 +193,13 @@ exports.set_info = function (presences, server_timestamp) {
raw_info.set(user_id, raw);
const status = exports.status_from_raw(raw);
exports.presence_info.set(user_id, status);
const status = status_from_raw(raw);
presence_info.set(user_id, status);
}
exports.update_info_for_small_realm();
};
update_info_for_small_realm();
}
exports.update_info_for_small_realm = function () {
export function update_info_for_small_realm() {
if (people.get_active_human_count() >= BIG_REALM_COUNT) {
// For big realms, we don't want to bloat our buddy
// lists with lots of long-time-inactive users.
@@ -216,7 +214,7 @@ exports.update_info_for_small_realm = function () {
const user_id = person.user_id;
let status = "offline";
if (exports.presence_info.has(user_id)) {
if (presence_info.has(user_id)) {
// this is normal, we have data for active
// users that we don't want to clobber.
continue;
@@ -231,25 +229,23 @@ exports.update_info_for_small_realm = function () {
status = "active";
}
exports.presence_info.set(user_id, {
presence_info.set(user_id, {
status,
last_active: undefined,
});
}
};
}
exports.last_active_date = function (user_id) {
const info = exports.presence_info.get(user_id);
export function last_active_date(user_id) {
const info = presence_info.get(user_id);
if (!info || !info.last_active) {
return undefined;
}
return new Date(info.last_active * 1000);
};
}
exports.initialize = function (params) {
exports.set_info(params.presences, params.initial_servertime);
};
window.presence = exports;
export function initialize(params) {
set_info(params.presences, params.initial_servertime);
}

View File

@@ -9,6 +9,7 @@ const ListWidget = require("./list_widget");
const loading = require("./loading");
const overlays = require("./overlays");
const people = require("./people");
const presence = require("./presence");
const settings_config = require("./settings_config");
const settings_data = require("./settings_data");
const settings_panel_menu = require("./settings_panel_menu");

View File

@@ -34,6 +34,7 @@ const overlays = require("./overlays");
const people = require("./people");
const pm_conversations = require("./pm_conversations");
const pm_list = require("./pm_list");
const presence = require("./presence");
const reload = require("./reload");
const resize = require("./resize");
const rows = require("./rows");