timerender: Move util.the into render_date.

This commit is contained in:
evykassirer
2024-09-04 12:06:34 -07:00
committed by Tim Abbott
parent b572b1536a
commit b387ad24fa
4 changed files with 16 additions and 9 deletions

View File

@@ -119,7 +119,7 @@ function analyze_edit_history(message, last_edit_timestr) {
function get_group_display_date(message) { function get_group_display_date(message) {
const time = new Date(message.timestamp * 1000); const time = new Date(message.timestamp * 1000);
const date_element = util.the(timerender.render_date(time)); const date_element = timerender.render_date(time);
return date_element.outerHTML; return date_element.outerHTML;
} }
@@ -165,7 +165,7 @@ function get_message_date_divider_data(opts) {
return { return {
want_date_divider: true, want_date_divider: true,
date_divider_html: util.the(timerender.render_date(curr_time)).outerHTML, date_divider_html: timerender.render_date(curr_time).outerHTML,
}; };
} }
@@ -404,7 +404,7 @@ export class MessageListView {
} }
if (last_edit_timestamp !== undefined) { if (last_edit_timestamp !== undefined) {
const last_edit_time = new Date(last_edit_timestamp * 1000); const last_edit_time = new Date(last_edit_timestamp * 1000);
let date = util.the(timerender.render_date(last_edit_time)).textContent; let date = timerender.render_date(last_edit_time).textContent;
// If the date is today or yesterday, we don't want to show the date as capitalized. // If the date is today or yesterday, we don't want to show the date as capitalized.
// Thus, we need to check if the date string contains a digit or not using regex, // Thus, we need to check if the date string contains a digit or not using regex,
// since any other date except today/yesterday will contain a digit. // since any other date except today/yesterday will contain a digit.
@@ -1832,7 +1832,7 @@ export class MessageListView {
} }
this.sticky_recipient_message_id = message.id; this.sticky_recipient_message_id = message.id;
const time = new Date(message.timestamp * 1000); const time = new Date(message.timestamp * 1000);
const rendered_date = util.the(timerender.render_date(time)); const rendered_date = timerender.render_date(time);
dom_updates.html_updates.push({ dom_updates.html_updates.push({
$element: $sticky_header.find(".recipient_row_date"), $element: $sticky_header.find(".recipient_row_date"),
rendered_date, rendered_date,

View File

@@ -14,6 +14,7 @@ import {$t} from "./i18n";
import {difference_in_calendar_days, get_offset, start_of_day} from "./time_zone_util"; import {difference_in_calendar_days, get_offset, start_of_day} from "./time_zone_util";
import {parse_html} from "./ui_util"; import {parse_html} from "./ui_util";
import {user_settings} from "./user_settings"; import {user_settings} from "./user_settings";
import * as util from "./util";
let next_timerender_id = 0; let next_timerender_id = 0;
@@ -353,7 +354,7 @@ function render_date_span($elem: JQuery, rendered_time: TimeRender): JQuery {
// (What's actually spliced into the message template is the contents // (What's actually spliced into the message template is the contents
// of this DOM node as HTML, so effectively a copy of the node. That's // of this DOM node as HTML, so effectively a copy of the node. That's
// okay since to update the time later we look up the node by its id.) // okay since to update the time later we look up the node by its id.)
export function render_date(time: Date): JQuery { export function render_date(time: Date): HTMLElement {
const className = `timerender${next_timerender_id}`; const className = `timerender${next_timerender_id}`;
next_timerender_id += 1; next_timerender_id += 1;
const rendered_time = render_now(time); const rendered_time = render_now(time);
@@ -364,7 +365,7 @@ export function render_date(time: Date): JQuery {
className, className,
time, time,
}); });
return $node; return util.the($node);
} }
// Renders the timestamp returned by the <time:> Markdown syntax. // Renders the timestamp returned by the <time:> Markdown syntax.

View File

@@ -13,7 +13,7 @@ set_global("document", "document-stub");
// timerender calls setInterval when imported // timerender calls setInterval when imported
mock_esm("../src/timerender", { mock_esm("../src/timerender", {
render_date(time) { render_date(time) {
return [{outerHTML: String(time.getTime())}]; return {outerHTML: String(time.getTime())};
}, },
stringify_time(time) { stringify_time(time) {
return time.toString("h:mm TT"); return time.toString("h:mm TT");

View File

@@ -360,8 +360,14 @@ run_test("render_date_renders_time_html", () => {
return $span_stub; return $span_stub;
}; };
const $actual = timerender.render_date(message_time); let actual_text;
assert.equal($actual.text(), expected_text); $span_stub.text = (val) => {
actual_text = val;
return $span_stub;
};
timerender.render_date(message_time);
assert.equal(actual_text, expected_text);
assert.equal(attrs["data-tippy-content"], "Friday, April 12, 2019"); assert.equal(attrs["data-tippy-content"], "Friday, April 12, 2019");
assert.equal(attrs.class, "timerender-content timerender0"); assert.equal(attrs.class, "timerender-content timerender0");