mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	js: Convert static/js/presence.js to ES6 module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							19bb5fa7ad
						
					
				
				
					commit
					818b5aacb6
				
			@@ -158,7 +158,6 @@
 | 
			
		||||
                "page_params": false,
 | 
			
		||||
                "panels": false,
 | 
			
		||||
                "pointer": false,
 | 
			
		||||
                "presence": false,
 | 
			
		||||
                "reactions": false,
 | 
			
		||||
                "realm_icon": false,
 | 
			
		||||
                "realm_logo": false,
 | 
			
		||||
 
 | 
			
		||||
@@ -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});
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
@@ -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";
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								static/js/global.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								static/js/global.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user