타임라인 타임스탬프가 업데이트되지 않음

참고로:

새로고침을 하면 업데이트됩니다. 하지만 새로고침 없이 업데이트되는 게시글 타임스탬프와 일치하는 것이 더 논리적일 것 같습니다.

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",
          })
        ),
      ];

이것은 위젯의 html() 함수에서 호출되었는데, 시간이 지남에 따라 이를 업데이트하기 위한 후크가 있는 것 같지 않습니다.

명백히 원하는 기능은 게시글 생성 시 최신 날짜로 bottomAge를 업데이트하고, 이후 시간이 지남에 따라 자동으로 계속 업데이트하는 것입니다. 현재 우리가 할 수 있는 일은 다음에 함수를 추가하는 것입니다:

그리고 bottomAge를 스크롤 시 업데이트하는 것입니다. 하지만 실제로는 약간 어색하게 느껴집니다. 이 아이디어의 또 다른 문제는 최신 게시글의 날짜 업데이트 시점과 토픽 타임라인의 bottomAge 날짜 업데이트 시점을 일치시키는 것이 어렵다는 것입니다. 게시글의 상대적 created_at은 약 10초 정도 지연됩니다… 이로 인해 스크롤할 때 불일치가 발생합니다.

이상적으로는 상대적 게시글 created_at 날짜를 추적하여 타임라인에 그대로 적용하면 되겠지만, 이것이 현재 가능한지 모르겠습니다.

@david, 혹시 아이디어가 있으신가요?

2개의 좋아요

네, 그것이 이상적이겠네요 :+1:

올바른 HTML 구조를 사용한다면, 시간 경과에 따른 자동 업데이트는 상대 날짜 헬퍼에 의해 자동으로 처리될 수 있습니다.

topic.last_posted_at 값의 변경 사항을 처리하려면, 스크롤 시 동작을 수행하는 대신 Glimmer의 반응성(reactivity)에 의존할 수 있어야 합니다. 예를 들어:

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개의 좋아요