쪽지를 보냈다가 아차 싶을 때가 있지 않습니까?

내용을 조금 더 다듬어서 보낼 걸, 하는 생각이 들 때도 있구요.

그럴 때 전송을 취소하고 싶은 마음이 들 수 있는데요.

 

가장 간편한 접근으로 보낸쪽지함에서 쪽지를 삭제하는 방법이 있습니다.

라고 쉽게 말하면 좋겠지만, 당연히 상대의 받은쪽지함에서는 쪽지가 삭제되지 않습니다.

 

생각해보면 당연한 건데, 한편으로는 아쉬운 마음이 들기도 합니다.

적어도 수신자가 쪽지를 아직 열어보지 않았을 경우에 한해서,

발신자가 쪽지를 삭제할 때,

수신자의 받은쪽지함에서도 쪽지가 삭제된다면 어떨까 싶으니까요.

즉, "전송 취소" 꼼수입니다.

 

참고로 저는 코어는 건드리지 말자는 주의입니다만, 애드온을 따로 만들거나 하지는 않을 생각이어서 팁 정도만 남겨봅니다.

communication 모듈의 일부를 수정하는 팁입니다.

 

https://github.com/rhymix/rhymix/blob/90d3766e5c6125b263eccc1ecd25a8dea7e1039e/modules/communication/communication.controller.php#L303-L371

여기에 보면 쪽지를 삭제하는 함수가 있는데요.

 

이곳의 368행쯤에 다음과 같은 구문을 삽입해줍니다.

// 상대의 받은쪽지함에 쪽지가 남아 있고, 아직 읽지 않은 상태라면
else if ($related && $related->readed != 'Y')
{
    $args = new stdClass();
    $args->message_srl = $related->message_srl;
    $output = executeQuery('communication.deleteMessage', $args);
    if (!$output->toBool())
    {
        return $output;
    }
    $args->srl = $related->message_srl;
    $output = executeQuery('ncenterlite.deleteNotifyBySrl', $args);
    if($output->toBool())
    {
        return $output;
    }
}

 

위와 같이 하면 알림센터에 가 있는 알림도 삭제돼서 발신자는 자신에게 쪽지가 전송됐었다는 사실을 전혀 알 수 없게 되는 거죠 :0

 

물론 좀 더 멋들어지게 한다면 '읽지않음' 상태일 때 '전송 취소' 버튼도 출력하고,

그걸 클릭하면 확인 경고창도 뜨고 그러면 좋을 것 같기는 한데,

코어 수정 팁을 깨작거린 마당에 다른 일까지 벌리기는 ... ;;;;

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile

    코어에 들어가면 좋은 기능이네요 :D

  • profile profile
    그러면 영광이죠!!
  • profile

    알림이 이미 FCM 푸시로 전송되어 버린 상태라면 다시 주워담을 수 없을 걸요? ㅎㅎ

    푸시를 쓰지 않는 사이트라도 화면 하단에는 이미 떴을 수도 있고요.

    알림이 떠서 클릭했더니 대상을 찾을 수 없다고 에러가 나온다면 썩 좋은 UX는 아닙니다.

     

    그래도 이 기능을 원하시는 분이 있다면 모듈로 구현해 보세요~ ㅋㅋㅋㅋㅋ

    트리거가 필요하다면 코어에서 제공할게요.^^

  • profile profile

    푸시 알림은 좀 크리티컬하네요 으으..
    그러면 "발신자 윤삼님의 요청으로 쪽지 전송이 중단되었습니다" 정도로 내용을 수정하면 어떨까요?
    게시판 모듈의 댓글 삭제 or 자리남김 옵션처럼, 쪽지 삭제 or 취소메시지 남기기 옵션을 제공해도 좋을 것 같구요.

     

    근데 이런 기능을 원하는 분들이 어느 정도나 있을지는 모르겠네요.
    있다면 애드온이나 모듈로 누군가 만들어볼 수도 있을 텐데요...

     

    트리거가 있어야 한다면, 위의 procCommunicationDeleteMessage함수와 더불어 바로 아래에 procCommunicationDeleteMessages에도 있으면 좋을 것 같습니다.
    관련해서, 문서나 댓글의 삭제 함수처럼 db쿼리를 담당하는 deleteMessage 같은 함수를 따로 둬서 두 함수에 모두 적용하면 트리거 사용이 좀 더 용이해서 좋을 것 같다는 생각도 들었습니다.

  • profile profile
    안드로이드 FCM 기준으로 푸시 알림 내용 수정은 notification.tag 를 참고하시면 될 것 같습니다.
    (https://firebase.google.com/docs/cloud-messaging/http-server-ref / 표.2b)

    이 부분은 코어단에서 지원되면 더 좋을것 같다는 생각도 드네요.
    notification.tag 에 알림센터 알림 SRL을 넣어주면 관리하기 편할 것 같아요.
    iOS는 지원하지 않는데, 이 부분에 대한 고민은 좀 더 해봐야겠지만요ㅠ
  • profile profile
    푸시 알림 쪽은 1도 모르는데 ㅎㅎ 역시 코어에서 지원해주는 게 상책일 것도 같네요.