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) {
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;
}
@@ -165,7 +165,7 @@ function get_message_date_divider_data(opts) {
return {
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) {
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.
// 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.
@@ -1832,7 +1832,7 @@ export class MessageListView {
}
this.sticky_recipient_message_id = message.id;
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({
$element: $sticky_header.find(".recipient_row_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 {parse_html} from "./ui_util";
import {user_settings} from "./user_settings";
import * as util from "./util";
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
// 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.)
export function render_date(time: Date): JQuery {
export function render_date(time: Date): HTMLElement {
const className = `timerender${next_timerender_id}`;
next_timerender_id += 1;
const rendered_time = render_now(time);
@@ -364,7 +365,7 @@ export function render_date(time: Date): JQuery {
className,
time,
});
return $node;
return util.the($node);
}
// 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
mock_esm("../src/timerender", {
render_date(time) {
return [{outerHTML: String(time.getTime())}];
return {outerHTML: String(time.getTime())};
},
stringify_time(time) {
return time.toString("h:mm TT");

View File

@@ -360,8 +360,14 @@ run_test("render_date_renders_time_html", () => {
return $span_stub;
};
const $actual = timerender.render_date(message_time);
assert.equal($actual.text(), expected_text);
let actual_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.class, "timerender-content timerender0");