时间线时间戳未更新

注意到:

刷新后已更新。但如果与帖子时间戳匹配,那会更合乎逻辑,帖子时间戳无需刷新即可更新。

2 个赞

这个很有意思,可能和我们的glimmer操作有关,@isaac

3 个赞

深入研究旧实现,我想知道这是否以前也存在问题……

      const bottomAge = relativeAge(
        new Date(topic.last_posted_at || topic.created_at),
        {
          addAgo: true,
          defaultFormat: timelineDate,
        }
      );
      const scroller = [
        h(
          "div.timeline-date-wrapper",
          this.attach("link", {
            className: "now-date",
            rawLabel: bottomAge,
            action: "jumpBottom",
          })
        ),
      ];

这在 widget 的 html() 函数中被调用,看起来我们没有任何钩子可以在时间流逝时更新它。

显然,期望的功能是在创建帖子时使用最新日期更新 bottomAge,然后随着时间的推移自动更新它。我们现在可以做的是添加一个函数到

并在滚动时更新 bottomAge,但实际上感觉有点奇怪。这个想法的另一个问题是,很难将最新帖子的日期更新时间与主题时间轴上的 bottomAge 日期更新时间相匹配。帖子的相对 created_at 会滞后大约 10 秒……在滚动时造成不匹配。

理想情况下,我们可以跟踪帖子的相对 created_at 日期并将其插入时间轴,但我不知道这是否可能。

@david,你有什么想法吗?

2 个赞

是的,那将是理想的 :+1:

如果我们使用正确的 HTML 结构,随着时间的推移自动更新可以由我们的相对日期帮助程序 自动处理

为了处理 topic.last_posted_at 值的更改,我们应该能够依赖 Glimmer 的响应性,而不是在滚动时执行操作。例如:

get bottomAge(){
  return this.args.topic.get("last_posted_at") || this.args.topic.get("created_at");
}

然后在 hbs 中,我们可以使用 我们的相对日期帮助程序 来渲染它,以便自动更新的正确结构

{{age-with-tooltip this.bottomAge}}

可能需要对帮助程序进行一些改进,以便它能够支持 ‘addAgo’ 和 ‘defaultFormat’ 参数?

1 个赞

这将通过以下方式修复:

5 个赞