참고로:
새로고침을 하면 업데이트됩니다. 하지만 새로고침 없이 업데이트되는 게시글 타임스탬프와 일치하는 것이 더 논리적일 것 같습니다.
흥미로운데요, 우리의 글리머(glimmer) 움직임과 관련이 있을 수 있겠네요 @isaac
기존 구현을 자세히 살펴보니, 이것이 이전에도 문제가 되었을지 궁금합니다…
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, 혹시 아이디어가 있으신가요?
네, 그것이 이상적이겠네요 ![]()
올바른 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' 파라미터를 지원할 수 있도록 헬퍼에 몇 가지 개선이 필요할 수도 있습니다?
이 문제는 다음을 통해 수정될 것입니다.