Unified New에서 사용자가 스크롤로 넘긴 주제를 제거할 수 있나요?

새로운 Unified New 뷰를 내 Discourse 사이트의 메인 피드/홈페이지로 사용하려고 합니다. 다만, 이 뷰가 X(구 트위터)나 페이스북처럼 조금 더 동작했으면 좋겠습니다.

제가 달성하고자 하는 것은 다음과 같습니다:

  • Unified New 피드에 토픽이 나타납니다.
  • 사용자가 아래로 스크롤하여 해당 토픽이 뷰포트(화면 표시 영역) 안에 표시됩니다.
  • 사용자가 해당 토픽을 스크롤로 지나치면, Discourse는 해당 사용자에게 대해 그 토픽을 “확인됨” 또는 “거부됨”으로 간주합니다.
  • 사용자가 나중에 새로고침하거나 /new로 돌아오면, 그 토픽은 더 이상 표시되지 않습니다.

이상적으로는 스크롤하는 동안 행이 즉시 사라지지 않았으면 합니다. 그렇게 하면 페이지가 뛸 수 있기 때문입니다. 배경에서 확인됨/거부됨으로만 표시되어 다음 로드 시 사라지도록 하면 됩니다.

또한, 저는 뷰포트 주변의 토픽을 미리 가져오는 Don’s Topic Preview Modal 플러그인을 사용 중입니다. 이 때문에 토픽이 단순히 미리 가져와진(prefetched) 것과 사용자가 실제로 그것을 보고 있는 것을 구별하고 싶습니다.

예를 들어, 다음과 같은 방식이 될 수 있습니다:

토픽이 최소 50% 이상 200~400ms 동안 표시됨 → 확인됨으로 표시 → 사용자가 스크롤로 지나감 → Unified New에서 거부.

누군가 비슷한 것을 구현해 보셨나요?

현재 사용자에게 개별 토픽을 Unified New에서 거부하는 기존 Discourse API나 프론트엔드 메서드가 있나요, 아니면 이 기능을 구현하려면 플러그인/테마 컴포넌트가 필요할까요?

결국 저는 사용자가 모든 토픽을 실제로 열어야 하는 것이 아니라, “아직 보지 않은 것들”의 개인화된 스크롤링 피드로 Unified New를 변형하려는 것입니다.

3개의 좋아요

현재로서는 이런 기능이 없는 것 같아서 Contribute > Feature 로 옮기겠습니다.

벌크 액션 기능은 존재하지만, 스크롤하면서 '처리됨’으로 표시하는 것만으로는 꽤 매끄럽지 않습니다.

1개의 좋아요

토픽 모달이 이미 프리페치를 사용하고 있으므로, 프리페치가 완료되면 자동으로 닫히는 컴포넌트를 만들어 볼 수 있을지 확인해 보겠습니다.

로그인한 사용자만 /new를 홈페이지로 설정하는 방법이 있을까요? 당연히 로그아웃된 사용자는 404 오류를 받게 되겠죠.

이렇게 하면 도움이 될까요?

여기서 "latest"를 "new"로 변경할 수 있습니다. 직접 테스트해 봤는데 작동하는 것 같습니다.

모든 사용자가 자동으로 추가되는 trust_level_0 그룹을 사용하여 작동해야 하는 Custom Homepage for Groups 도 있습니다.

2개의 좋아요

이제 더 간단한 방법이 있다는 걸 알았다… 그냥 찾아내는 문제일 뿐이었다.

1개의 좋아요