タイムラインのタイムスタンプが更新されない

気づいたのですが:

更新後に修正されました。しかし、更新なしで更新される投稿タイムスタンプに一致する方が論理的であるべきです。

「いいね!」 2

興味深いですね。私たちのグリマーの動き@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",
          })
        ),
      ];

これはウィジェットの html() 関数で呼び出されていましたが、時間が経過するにつれてこれを更新するためのフックがあるようには見えません。

明らかに、望ましい機能は、投稿作成時に bottomAge を最新の日付で更新し、その後、時間が経過するにつれて自動的に更新し続けることです。現時点では、次の場所に関数を追加できます。

そして bottomAgeスクロール時に更新しますが、実際には少し奇妙に感じます。このアイデアのもう 1 つの問題は、最新の投稿の日付の更新とトピックタイムラインの 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

FIX: Latest post created_at on topic-timeline not updating by janzenisaac · Pull Request #20665 · discourse/discourse · GitHub を介して修正されます。

「いいね!」 5