diff --git a/internal/store/postgres/channel_member_list.go b/internal/store/postgres/channel_member_list.go index 985b0fce..ced215d5 100644 --- a/internal/store/postgres/channel_member_list.go +++ b/internal/store/postgres/channel_member_list.go @@ -184,12 +184,7 @@ func (s *ChannelStore) GetParticipant(ctx context.Context, viewerUserID, channel if errors.Is(err, domain.ErrChannelPrivate) { return domain.ChannelMember{}, domain.ErrUserNotParticipant } - // A stale row for a former member (left/kicked) is not a current - // participant for any caller, not just a self-check: channels.getParticipant - // on someone who has left must surface USER_NOT_PARTICIPANT like a missing - // row does, or callers get a "successful" ChannelParticipantLeft result for - // what protocol-wise is an absent participant. - if err == nil && member.Status != domain.ChannelMemberActive { + if err == nil && participantUserID == viewerUserID && member.Status == domain.ChannelMemberLeft { return domain.ChannelMember{}, domain.ErrUserNotParticipant } return member, err