모바일에서 게시글 작업 취소 시간 이후에도 반응 메뉴가 표시됩니다

https://community.openstreetmap.org/에서 엄지손가락(좋아요)을 눌렀습니다. 13분 후 돌아와서 하트로 바꾸려 했죠. 보시다시피 그 정도까지는 했습니다. 하지만 하트로 바꿀 수 없었습니다. 10분 이후에는 아무것도 변경할 수 없다는 규칙이 있다고 해도, 그렇다면 우리가 선택할 수 있는 아이콘 목록을 보여주는 것은 적절하지 않습니다. 왜냐하면 그 목록의 어떤 것도 사용할 수 없기 때문입니다.

즉, 다른 것으로 바꾸기 위해 엄지손가락을 다시 탭할 때, 최선은 아무 반응도 없어야 한다는 것입니다. 사용할 수 없는 선택지 목록을 보여주는 것보다는요.

더 나은 방법은, 엄지손가락을 다시 탭했을 때 10분이 지났기 때문에 선택을 변경할 수 없다는 설명 메시지가 팝업으로 표시되는 것입니다.

왜 이 메타 사이트에서 해당 로컬 사이트가 아니라 여기에 게시하느냐고요? 제가 이야기하는 문제는 이러한 선택지를 제공하는 모든 사이트에 영향을 미치는 문제이기 때문입니다.

1개의 좋아요

네, 모바일(안드로이드/크롬)에서 재현할 수 있습니다. 이전에는 이런 현상이 없었던 것 같으니 어떤 종류의 회귀 문제(regression)인 것 같습니다.

데스크톱에서는 :no_entry_sign: 이 표시되고 '반응을 더 이상 제거할 수 없습니다’라는 호버 텍스트가 나타납니다.

단계별 재현 방법: (모바일 기준)

  • 반응(Reactions) 활성화
  • post undo action window mins를 1로 설정 (선택 사항)
  • 게시글에 반응을 추가한 후 N분 대기
  • 반응 아이콘을 길게 누르기
  • 반응 또는 반응 제거가 불가능함에도 반응 메뉴가 표시됨
  • 메뉴가 반응하지 않으며 오류 메시지도 표시되지 않음
3개의 좋아요

히스토리에서 회귀(regression)가 될 만한 사항을 찾을 수 없었습니다.

toggleFromButton에는 클릭에 대한 체크가 있습니다:

https://github.com/discourse/discourse-reactions/blob/main/assets/javascripts/discourse/widgets/discourse-reactions-actions.js#L430-L435

하지만 터치에 대한 체크는 없습니다:
https://github.com/discourse/discourse-reactions/blob/main/assets/javascripts/discourse/widgets/discourse-reactions-actions.js#L170-L183

반응 목록이 열리지 않도록 다음과 같은 방식으로 처리할 수 있을 것 같습니다:

  touchStart() {
    cancel(this._touchTimeout);
    if (this.capabilities.touch) {
      if (
        this.attrs.post.current_user_reaction &&
        !this.attrs.post.current_user_reaction.can_undo
      ) {
        return false;
      }
      ...
}
3개의 좋아요

참고로, 사용자가 자신의 반응을 삭제할 수 없다는 점을 알려주는 것은 좋은 방법입니다. 하지만 시간 제한도 함께 언급하는 것이 좋습니다. 그렇지 않으면 사용자가 그것이 하루인지, 한 달인지, 아니면 1분인지 알 수 없기 때문입니다. 사용자가 알아낼 수 있는 유일한 방법은 시행착오뿐입니다!

2개의 좋아요

좋아요에 대한 시간 제한이 아주 특이한 기본 설정인 것을 발견해서, 가장 먼저 변경한 것 중 하나였습니다 (언제든 자유롭게 좋아요/좋아요 취소할 수 있도록). 참고로 말씀드립니다.

3개의 좋아요