Skip to content

Commit a2cda00

Browse files
author
Jeff Yanta
committed
Add missing result codes and update/comment on flush
1 parent 170ead3 commit a2cda00

File tree

3 files changed

+46
-16
lines changed

3 files changed

+46
-16
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
firebase.google.com/go/v4 v4.8.0
77
github.com/aws/aws-sdk-go-v2 v0.17.0
88
github.com/bits-and-blooms/bloom/v3 v3.1.0
9-
github.com/code-payments/code-protobuf-api v1.16.7-0.20240607133020-80fe3ddf808d
9+
github.com/code-payments/code-protobuf-api v1.16.7-0.20240611151313-ca7587f92a73
1010
github.com/emirpasic/gods v1.12.0
1111
github.com/envoyproxy/protoc-gen-validate v1.0.4
1212
github.com/golang-jwt/jwt/v5 v5.0.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH
121121
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
122122
github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=
123123
github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ=
124-
github.com/code-payments/code-protobuf-api v1.16.7-0.20240607133020-80fe3ddf808d h1:Xevf1deSLA4o+jMWpTD6LB0zqvsmRFlYhhexKGZPvpE=
125-
github.com/code-payments/code-protobuf-api v1.16.7-0.20240607133020-80fe3ddf808d/go.mod h1:pHQm75vydD6Cm2qHAzlimW6drysm489Z4tVxC2zHSsU=
124+
github.com/code-payments/code-protobuf-api v1.16.7-0.20240611151313-ca7587f92a73 h1:gdj/RvbLkcfxeWsrHJSu6Z8rkNtWvrIMZz/1WQlxVyg=
125+
github.com/code-payments/code-protobuf-api v1.16.7-0.20240611151313-ca7587f92a73/go.mod h1:pHQm75vydD6Cm2qHAzlimW6drysm489Z4tVxC2zHSsU=
126126
github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 h1:NmTXa/uVnDyp0TY5MKi197+3HWcnYWfnHGyaFthlnGw=
127127
github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
128128
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=

pkg/code/server/grpc/chat/v2/server.go

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ func (s *server) GetMessages(ctx context.Context, req *chatpb.GetMessagesRequest
126126
switch err {
127127
case nil:
128128
case chat.ErrChatNotFound:
129-
return nil, status.Error(codes.Unimplemented, "todo: missing result code")
129+
return &chatpb.GetMessagesResponse{
130+
Result: chatpb.GetMessagesResponse_MESSAGE_NOT_FOUND,
131+
}, nil
130132
default:
131133
log.WithError(err).Warn("failure getting chat record")
132134
return nil, status.Error(codes.Internal, "")
@@ -137,7 +139,9 @@ func (s *server) GetMessages(ctx context.Context, req *chatpb.GetMessagesRequest
137139
log.WithError(err).Warn("failure determing chat member ownership")
138140
return nil, status.Error(codes.Internal, "")
139141
} else if !ownsChatMember {
140-
return nil, status.Error(codes.Unimplemented, "todo: missing result code")
142+
return &chatpb.GetMessagesResponse{
143+
Result: chatpb.GetMessagesResponse_DENIED,
144+
}, nil
141145
}
142146

143147
var limit uint64
@@ -175,6 +179,11 @@ func (s *server) GetMessages(ctx context.Context, req *chatpb.GetMessagesRequest
175179
return nil, status.Error(codes.Internal, "")
176180
}
177181

182+
if len(protoChatMessages) == 0 {
183+
return &chatpb.GetMessagesResponse{
184+
Result: chatpb.GetMessagesResponse_MESSAGE_NOT_FOUND,
185+
}, nil
186+
}
178187
return &chatpb.GetMessagesResponse{
179188
Result: chatpb.GetMessagesResponse_OK,
180189
Messages: protoChatMessages,
@@ -227,7 +236,11 @@ func (s *server) StreamChatEvents(streamer chatpb.Chat_StreamChatEventsServer) e
227236
switch err {
228237
case nil:
229238
case chat.ErrChatNotFound:
230-
return status.Error(codes.Unimplemented, "todo: missing result code")
239+
return streamer.Send(&chatpb.StreamChatEventsResponse{
240+
Type: &chatpb.StreamChatEventsResponse_Error{
241+
Error: &chatpb.ChatStreamEventError{Code: chatpb.ChatStreamEventError_CHAT_NOT_FOUND},
242+
},
243+
})
231244
default:
232245
log.WithError(err).Warn("failure getting chat record")
233246
return status.Error(codes.Internal, "")
@@ -238,7 +251,11 @@ func (s *server) StreamChatEvents(streamer chatpb.Chat_StreamChatEventsServer) e
238251
log.WithError(err).Warn("failure determing chat member ownership")
239252
return status.Error(codes.Internal, "")
240253
} else if !ownsChatMember {
241-
return status.Error(codes.Unimplemented, "todo: missing result code")
254+
return streamer.Send(&chatpb.StreamChatEventsResponse{
255+
Type: &chatpb.StreamChatEventsResponse_Error{
256+
Error: &chatpb.ChatStreamEventError{Code: chatpb.ChatStreamEventError_DENIED},
257+
},
258+
})
242259
}
243260

244261
streamKey := fmt.Sprintf("%s:%s", chatId.String(), memberId.String())
@@ -282,7 +299,8 @@ func (s *server) StreamChatEvents(streamer chatpb.Chat_StreamChatEventsServer) e
282299
sendPingCh := time.After(0)
283300
streamHealthCh := monitorChatEventStreamHealth(ctx, log, streamRef, streamer)
284301

285-
go s.flush(ctx, chatId, owner, stream)
302+
// todo: We should also "flush" pointers for each chat member
303+
go s.flushMessages(ctx, chatId, owner, stream)
286304

287305
for {
288306
select {
@@ -330,9 +348,9 @@ func (s *server) StreamChatEvents(streamer chatpb.Chat_StreamChatEventsServer) e
330348
}
331349
}
332350

333-
func (s *server) flush(ctx context.Context, chatId chat.ChatId, owner *common.Account, stream *chatEventStream) {
351+
func (s *server) flushMessages(ctx context.Context, chatId chat.ChatId, owner *common.Account, stream *chatEventStream) {
334352
log := s.log.WithFields(logrus.Fields{
335-
"method": "flush",
353+
"method": "flushMessages",
336354
"chat_id": chatId.String(),
337355
"owner_account": owner.PublicKey().ToBase58(),
338356
})
@@ -347,7 +365,9 @@ func (s *server) flush(ctx context.Context, chatId chat.ChatId, owner *common.Ac
347365
query.WithDirection(query.Descending),
348366
query.WithLimit(flushMessageCount),
349367
)
350-
if err != nil {
368+
if err == chat.ErrMessageNotFound {
369+
return
370+
} else if err != nil {
351371
log.WithError(err).Warn("failure getting chat messages")
352372
return
353373
}
@@ -429,7 +449,9 @@ func (s *server) SendMessage(ctx context.Context, req *chatpb.SendMessageRequest
429449
log.WithError(err).Warn("failure determing chat member ownership")
430450
return nil, status.Error(codes.Internal, "")
431451
} else if !ownsChatMember {
432-
return nil, status.Error(codes.Unimplemented, "todo: missing result code")
452+
return &chatpb.SendMessageResponse{
453+
Result: chatpb.SendMessageResponse_DENIED,
454+
}, nil
433455
}
434456

435457
chatLock := s.chatLocks.Get(chatId[:])
@@ -551,7 +573,9 @@ func (s *server) AdvancePointer(ctx context.Context, req *chatpb.AdvancePointerR
551573
switch pointerType {
552574
case chat.PointerTypeDelivered, chat.PointerTypeRead:
553575
default:
554-
return nil, status.Error(codes.Unimplemented, "todo: missing result code")
576+
return &chatpb.AdvancePointerResponse{
577+
Result: chatpb.AdvancePointerResponse_INVALID_POINTER_TYPE,
578+
}, nil
555579
}
556580

557581
pointerValue, err := chat.GetMessageIdFromProto(req.Pointer.Value)
@@ -584,7 +608,9 @@ func (s *server) AdvancePointer(ctx context.Context, req *chatpb.AdvancePointerR
584608
log.WithError(err).Warn("failure determing chat member ownership")
585609
return nil, status.Error(codes.Internal, "")
586610
} else if !ownsChatMember {
587-
return nil, status.Error(codes.Unimplemented, "todo: missing result code")
611+
return &chatpb.AdvancePointerResponse{
612+
Result: chatpb.AdvancePointerResponse_DENIED,
613+
}, nil
588614
}
589615

590616
_, err = s.data.GetChatMessageByIdV2(ctx, chatId, pointerValue)
@@ -669,7 +695,9 @@ func (s *server) SetMuteState(ctx context.Context, req *chatpb.SetMuteStateReque
669695
log.WithError(err).Warn("failure determing chat member ownership")
670696
return nil, status.Error(codes.Internal, "")
671697
} else if !isChatMember {
672-
return nil, status.Error(codes.Unimplemented, "todo: missing result code")
698+
return &chatpb.SetMuteStateResponse{
699+
Result: chatpb.SetMuteStateResponse_DENIED,
700+
}, nil
673701
}
674702

675703
err = s.data.SetChatMuteStateV2(ctx, chatId, memberId, req.IsMuted)
@@ -732,7 +760,9 @@ func (s *server) SetSubscriptionState(ctx context.Context, req *chatpb.SetSubscr
732760
log.WithError(err).Warn("failure determing chat member ownership")
733761
return nil, status.Error(codes.Internal, "")
734762
} else if !ownsChatMember {
735-
return nil, status.Error(codes.Unimplemented, "todo: missing result code")
763+
return &chatpb.SetSubscriptionStateResponse{
764+
Result: chatpb.SetSubscriptionStateResponse_DENIED,
765+
}, nil
736766
}
737767

738768
err = s.data.SetChatSubscriptionStateV2(ctx, chatId, memberId, req.IsSubscribed)

0 commit comments

Comments
 (0)