mirror of https://github.com/zulip/zulip.git
presence: Use server-provided params in the webapp.
As of the previous commit, the server provides these parameters in page_params. The defaults match the values hard-coded in the webapp so far - so get rid of the hard-coded values in favor of taking them from page_params.
This commit is contained in:
parent
a593089770
commit
8ef889f392
|
@ -577,6 +577,8 @@ test("update_presence_info", ({override}) => {
|
||||||
override(pm_list, "update_private_messages", () => {});
|
override(pm_list, "update_private_messages", () => {});
|
||||||
|
|
||||||
page_params.realm_presence_disabled = false;
|
page_params.realm_presence_disabled = false;
|
||||||
|
page_params.server_presence_ping_interval_seconds = 50;
|
||||||
|
page_params.server_presence_offline_threshold_seconds = 140;
|
||||||
|
|
||||||
const server_time = 500;
|
const server_time = 500;
|
||||||
const info = {
|
const info = {
|
||||||
|
|
|
@ -422,6 +422,8 @@ test("always show me", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("level", () => {
|
test("level", () => {
|
||||||
|
page_params.server_presence_offline_threshold_seconds = 140;
|
||||||
|
|
||||||
add_canned_users();
|
add_canned_users();
|
||||||
assert.equal(buddy_data.level(me.user_id), 0);
|
assert.equal(buddy_data.level(me.user_id), 0);
|
||||||
assert.equal(buddy_data.level(selma.user_id), 3);
|
assert.equal(buddy_data.level(selma.user_id), 3);
|
||||||
|
|
|
@ -5,7 +5,7 @@ const {strict: assert} = require("assert");
|
||||||
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
const {mock_esm, zrequire} = require("../zjsunit/namespace");
|
||||||
const {run_test} = require("../zjsunit/test");
|
const {run_test} = require("../zjsunit/test");
|
||||||
const blueslip = require("../zjsunit/zblueslip");
|
const blueslip = require("../zjsunit/zblueslip");
|
||||||
const {user_settings} = require("../zjsunit/zpage_params");
|
const {page_params, user_settings} = require("../zjsunit/zpage_params");
|
||||||
|
|
||||||
const reload_state = mock_esm("../../static/js/reload_state", {
|
const reload_state = mock_esm("../../static/js/reload_state", {
|
||||||
is_in_progress: () => false,
|
is_in_progress: () => false,
|
||||||
|
@ -78,6 +78,7 @@ people.initialize_current_user(me.user_id);
|
||||||
|
|
||||||
function test(label, f) {
|
function test(label, f) {
|
||||||
run_test(label, ({override}) => {
|
run_test(label, ({override}) => {
|
||||||
|
page_params.server_presence_offline_threshold_seconds = OFFLINE_THRESHOLD_SECS;
|
||||||
user_settings.presence_enabled = true;
|
user_settings.presence_enabled = true;
|
||||||
presence.clear_internal_data();
|
presence.clear_internal_data();
|
||||||
f({override});
|
f({override});
|
||||||
|
|
|
@ -27,8 +27,6 @@ export let user_filter;
|
||||||
|
|
||||||
/* Broadcast "idle" to server after 5 minutes of local inactivity */
|
/* Broadcast "idle" to server after 5 minutes of local inactivity */
|
||||||
const DEFAULT_IDLE_TIMEOUT_MS = 5 * 60 * 1000;
|
const DEFAULT_IDLE_TIMEOUT_MS = 5 * 60 * 1000;
|
||||||
/* Time between keep-alive pings */
|
|
||||||
const ACTIVE_PING_INTERVAL_MS = 50 * 1000;
|
|
||||||
|
|
||||||
/* Keep in sync with views.py:update_active_status_backend() */
|
/* Keep in sync with views.py:update_active_status_backend() */
|
||||||
export const ACTIVE = "active";
|
export const ACTIVE = "active";
|
||||||
|
@ -246,7 +244,9 @@ export function initialize() {
|
||||||
send_presence_to_server(true);
|
send_presence_to_server(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
util.call_function_periodically(get_full_presence_list_update, ACTIVE_PING_INTERVAL_MS);
|
/* Time between keep-alive pings */
|
||||||
|
const active_ping_interval_ms = page_params.server_presence_ping_interval_seconds * 1000;
|
||||||
|
util.call_function_periodically(get_full_presence_list_update, active_ping_interval_ms);
|
||||||
|
|
||||||
// Let the server know we're here, but pass "false" for
|
// Let the server know we're here, but pass "false" for
|
||||||
// want_redraw, since we just got all this info in page_params.
|
// want_redraw, since we just got all this info in page_params.
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import * as blueslip from "./blueslip";
|
import * as blueslip from "./blueslip";
|
||||||
|
import {page_params} from "./page_params";
|
||||||
import * as people from "./people";
|
import * as people from "./people";
|
||||||
import * as reload_state from "./reload_state";
|
import * as reload_state from "./reload_state";
|
||||||
import {user_settings} from "./user_settings";
|
import {user_settings} from "./user_settings";
|
||||||
|
@ -22,11 +23,6 @@ export function clear_internal_data() {
|
||||||
presence_info.clear();
|
presence_info.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark users as offline after 140 seconds since their last checkin,
|
|
||||||
* Keep in sync with zerver/tornado/event_queue.py:receiver_is_idle
|
|
||||||
*/
|
|
||||||
const OFFLINE_THRESHOLD_SECS = 140;
|
|
||||||
|
|
||||||
const BIG_REALM_COUNT = 250;
|
const BIG_REALM_COUNT = 250;
|
||||||
|
|
||||||
export function get_status(user_id) {
|
export function get_status(user_id) {
|
||||||
|
@ -58,6 +54,10 @@ export function status_from_raw(raw) {
|
||||||
server_timestamp: 1585745140
|
server_timestamp: 1585745140
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Mark users as offline after this many seconds since their last checkin, */
|
||||||
|
const offline_threshold_secs = page_params.server_presence_offline_threshold_seconds;
|
||||||
|
|
||||||
function age(timestamp) {
|
function age(timestamp) {
|
||||||
return raw.server_timestamp - (timestamp || 0);
|
return raw.server_timestamp - (timestamp || 0);
|
||||||
}
|
}
|
||||||
|
@ -79,14 +79,14 @@ export function status_from_raw(raw) {
|
||||||
show the user as active (even if there's a newer
|
show the user as active (even if there's a newer
|
||||||
timestamp for idle).
|
timestamp for idle).
|
||||||
*/
|
*/
|
||||||
if (age(active_timestamp) < OFFLINE_THRESHOLD_SECS) {
|
if (age(active_timestamp) < offline_threshold_secs) {
|
||||||
return {
|
return {
|
||||||
status: "active",
|
status: "active",
|
||||||
last_active,
|
last_active,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (age(idle_timestamp) < OFFLINE_THRESHOLD_SECS) {
|
if (age(idle_timestamp) < offline_threshold_secs) {
|
||||||
return {
|
return {
|
||||||
status: "idle",
|
status: "idle",
|
||||||
last_active,
|
last_active,
|
||||||
|
|
|
@ -488,7 +488,6 @@ LOG_API_EVENT_TYPES = False
|
||||||
STAGING = False
|
STAGING = False
|
||||||
|
|
||||||
# How long to wait before presence should treat a user as offline.
|
# How long to wait before presence should treat a user as offline.
|
||||||
# Should match the presence.js constant.
|
|
||||||
OFFLINE_THRESHOLD_SECS = 140
|
OFFLINE_THRESHOLD_SECS = 140
|
||||||
|
|
||||||
# How often a client should ping by asking for presence data of all users.
|
# How often a client should ping by asking for presence data of all users.
|
||||||
|
|
Loading…
Reference in New Issue