diff --git a/go/chat/flipmanager.go b/go/chat/flipmanager.go index cac4d915e317..d520f29db5dd 100644 --- a/go/chat/flipmanager.go +++ b/go/chat/flipmanager.go @@ -671,7 +671,15 @@ func (m *FlipManager) handleUpdate(ctx context.Context, update flip.GameStateUpd GameID: gameID.FlipGameIDStr(), } } - status.ConvID = update.Metadata.ConversationID.ConvIDStr() + if len(status.ConvID) == 0 { + hmi, hmiErr := m.getHostMessageInfo(ctx, update.Metadata.ConversationID) + if hmiErr != nil { + m.Debug(ctx, "handleUpdate: failed to get host message info: %s", hmiErr) + status.ConvID = update.Metadata.ConversationID.ConvIDStr() + } else { + status.ConvID = hmi.ConvID.ConvIDStr() + } + } switch { case update.Err != nil: @@ -1374,10 +1382,10 @@ func (m *FlipManager) loadGame(ctx context.Context, job loadGameJob) (err error) } } m.Debug(ctx, "loadGame: game had no action after pausing, sending error") - job.resCh <- m.handleSummaryUpdate(ctx, job.gameID, summary, flipConvID, true) + job.resCh <- m.handleSummaryUpdate(ctx, job.gameID, summary, hmi.ConvID, true) }(globals.BackgroundChatCtx(ctx, m.G()), summary) } else { - job.resCh <- m.handleSummaryUpdate(ctx, job.gameID, summary, flipConvID, true) + job.resCh <- m.handleSummaryUpdate(ctx, job.gameID, summary, hmi.ConvID, true) } return nil } @@ -1409,7 +1417,9 @@ func (m *FlipManager) LoadFlip(ctx context.Context, uid gregor1.UID, hostConvID default: m.queueDirtyGameID(ctx, gameID, true) res = make(chan chat1.UICoinFlipStatus, 1) - res <- stored.(chat1.UICoinFlipStatus) + status := stored.(chat1.UICoinFlipStatus) + status.ConvID = hostConvID.ConvIDStr() + res <- status err = make(chan error, 1) return res, err } diff --git a/go/chat/flipmanager_test.go b/go/chat/flipmanager_test.go index 7ab4f5894de4..9e6f20c6ee57 100644 --- a/go/chat/flipmanager_test.go +++ b/go/chat/flipmanager_test.go @@ -437,6 +437,7 @@ func TestFlipManagerLoadFlip(t *testing.T) { case updates := <-ui0.CoinFlipUpdates: require.Equal(t, 1, len(updates)) require.Equal(t, chat1.UICoinFlipPhase_COMPLETE, updates[0].Phase) + require.Equal(t, conv.Id.ConvIDStr(), updates[0].ConvID) require.Equal(t, res, updates[0].ResultText) case <-time.After(timeout): require.Fail(t, "no updates")