Skip to content

Commit 1cd8d74

Browse files
committed
all: update whatsmeow methods to use contexts
1 parent 1d320e9 commit 1cd8d74

File tree

14 files changed

+55
-53
lines changed

14 files changed

+55
-53
lines changed

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/rs/zerolog v1.34.0
1010
go.mau.fi/util v0.9.2
1111
go.mau.fi/webp v0.2.0
12-
go.mau.fi/whatsmeow v0.0.0-20251023183934-2ced35dd7e8c
12+
go.mau.fi/whatsmeow v0.0.0-20251027141726-3d82d3101dd1
1313
golang.org/x/image v0.32.0
1414
golang.org/x/net v0.46.0
1515
golang.org/x/sync v0.17.0
@@ -25,7 +25,6 @@ require (
2525
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
2626
github.com/elliotchance/orderedmap/v3 v3.1.0 // indirect
2727
github.com/google/uuid v1.6.0 // indirect
28-
github.com/gorilla/websocket v1.5.0 // indirect
2928
github.com/kr/pretty v0.3.1 // indirect
3029
github.com/mattn/go-colorable v0.1.14 // indirect
3130
github.com/mattn/go-isatty v0.0.20 // indirect

go.sum

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
2222
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
2323
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
2424
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
25-
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
26-
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
2725
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
2826
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
2927
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -81,8 +79,8 @@ go.mau.fi/util v0.9.2 h1:+S4Z03iCsGqU2WY8X2gySFsFjaLlUHFRDVCYvVwynKM=
8179
go.mau.fi/util v0.9.2/go.mod h1:055elBBCJSdhRsmub7ci9hXZPgGr1U6dYg44cSgRgoU=
8280
go.mau.fi/webp v0.2.0 h1:QVMenHw7JDb4vall5sV75JNBQj9Hw4u8AKbi1QetHvg=
8381
go.mau.fi/webp v0.2.0/go.mod h1:VSg9MyODn12Mb5pyG0NIyNFhujrmoFSsZBs8syOZD1Q=
84-
go.mau.fi/whatsmeow v0.0.0-20251023183934-2ced35dd7e8c h1:7QLq7oW+q8U5AU7uhGsVOB2qPD3306fr7oVSni77c+A=
85-
go.mau.fi/whatsmeow v0.0.0-20251023183934-2ced35dd7e8c/go.mod h1:VJq+D05Fe5EroZxs2StEYD/AsWJO2aQ7Niucz7lCvao=
82+
go.mau.fi/whatsmeow v0.0.0-20251027141726-3d82d3101dd1 h1:xjTxq7OfIV+oVJnsWrXX5lrIt8cSMV6yHppdp2+fVQE=
83+
go.mau.fi/whatsmeow v0.0.0-20251027141726-3d82d3101dd1/go.mod h1:RwBrMQAWCHGzMdDZ6EwjcY4Aj3g8Efx8c7GACTdiAME=
8684
go.mau.fi/zeroconfig v0.2.0 h1:e/OGEERqVRRKlgaro7E6bh8xXiKFSXB3eNNIud7FUjU=
8785
go.mau.fi/zeroconfig v0.2.0/go.mod h1:J0Vn0prHNOm493oZoQ84kq83ZaNCYZnq+noI1b1eN8w=
8886
golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=

pkg/connector/chatinfo.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@ func (wa *WhatsAppClient) getChatInfo(ctx context.Context, portalJID types.JID,
4040
return nil, fmt.Errorf("broadcast list bridging is currently not supported")
4141
}
4242
case types.GroupServer:
43-
info, err := wa.Client.GetGroupInfo(portalJID)
43+
info, err := wa.Client.GetGroupInfo(ctx, portalJID)
4444
if err != nil {
4545
return nil, err
4646
}
4747
wrapped = wa.wrapGroupInfo(ctx, info)
4848
wrapped.ExtraUpdates = bridgev2.MergeExtraUpdaters(wrapped.ExtraUpdates, updatePortalLastSyncAt)
4949
case types.NewsletterServer:
50-
info, err := wa.Client.GetNewsletterInfo(portalJID)
50+
info, err := wa.Client.GetNewsletterInfo(ctx, portalJID)
5151
if err != nil {
5252
return nil, err
5353
}
@@ -419,7 +419,7 @@ func (wa *WhatsAppClient) makePortalAvatarFetcher(avatarID string, sender types.
419419
existingID = ""
420420
}
421421
var wrappedAvatar *bridgev2.Avatar
422-
avatar, err := wa.Client.GetProfilePictureInfo(jid, &whatsmeow.GetProfilePictureParams{
422+
avatar, err := wa.Client.GetProfilePictureInfo(ctx, jid, &whatsmeow.GetProfilePictureParams{
423423
ExistingID: existingID,
424424
IsCommunity: portal.RoomType == database.RoomTypeSpace,
425425
})
@@ -492,7 +492,7 @@ func (wa *WhatsAppClient) wrapNewsletterInfo(ctx context.Context, info *types.Ne
492492
} else if info.ThreadMeta.Preview.ID != "" {
493493
avatar.ID = networkid.AvatarID(info.ThreadMeta.Preview.ID)
494494
avatar.Get = func(ctx context.Context) ([]byte, error) {
495-
meta, err := wa.Client.GetNewsletterInfo(info.ID)
495+
meta, err := wa.Client.GetNewsletterInfo(ctx, info.ID)
496496
if err != nil {
497497
return nil, fmt.Errorf("failed to fetch full res avatar info: %w", err)
498498
} else if meta.ThreadMeta.Picture == nil {

pkg/connector/client.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,12 @@ func (wa *WhatsAppClient) Connect(ctx context.Context) {
196196
if err := wa.Main.updateProxy(ctx, wa.Client, false); err != nil {
197197
zerolog.Ctx(ctx).Err(err).Msg("Failed to update proxy")
198198
}
199+
if ctx.Err() != nil {
200+
return
201+
}
199202
wa.startLoops()
200203
wa.Client.BackgroundEventCtx = wa.UserLogin.Log.WithContext(wa.Main.Bridge.BackgroundCtx)
201-
if err := wa.Client.Connect(); err != nil {
204+
if err := wa.Client.ConnectContext(ctx); err != nil {
202205
zerolog.Ctx(ctx).Err(err).Msg("Failed to connect to WhatsApp")
203206
state := status.BridgeState{
204207
StateEvent: status.StateUnknownError,
@@ -281,15 +284,14 @@ func (wa *WhatsAppClient) ConnectBackground(ctx context.Context, params *bridgev
281284

282285
func (wa *WhatsAppClient) sendPNData(ctx context.Context, pn string) error {
283286
//lint:ignore SA1019 this is supposed to be dangerous
284-
resp, err := wa.Client.DangerousInternals().SendIQ(whatsmeow.DangerousInfoQuery{
287+
resp, err := wa.Client.DangerousInternals().SendIQ(ctx, whatsmeow.DangerousInfoQuery{
285288
Namespace: "urn:xmpp:whatsapp:push",
286289
Type: "get",
287290
To: types.ServerJID,
288291
Content: []waBinary.Node{{
289292
Tag: "pn",
290293
Content: pn,
291294
}},
292-
Context: ctx,
293295
})
294296
if err != nil {
295297
return fmt.Errorf("failed to send pn: %w", err)
@@ -304,7 +306,7 @@ func (wa *WhatsAppClient) sendPNData(ctx context.Context, pn string) error {
304306
}
305307
zerolog.Ctx(ctx).Debug().Str("cat_data", string(catContentBytes)).Msg("Received cat response from sending pn data")
306308
//lint:ignore SA1019 this is supposed to be dangerous
307-
err = wa.Client.DangerousInternals().SendNode(waBinary.Node{
309+
err = wa.Client.DangerousInternals().SendNode(ctx, waBinary.Node{
308310
Tag: "ib",
309311
Content: []waBinary.Node{{
310312
Tag: "cat",
@@ -319,7 +321,7 @@ func (wa *WhatsAppClient) sendPNData(ctx context.Context, pn string) error {
319321
}
320322

321323
func (wa *WhatsAppClient) startLoops() {
322-
ctx, cancel := context.WithCancel(context.Background())
324+
ctx, cancel := context.WithCancel(wa.Main.Bridge.BackgroundCtx)
323325
oldStop := wa.stopLoops.Swap(&cancel)
324326
if oldStop != nil {
325327
(*oldStop)()
@@ -409,7 +411,7 @@ func (wa *WhatsAppClient) HandleMatrixViewingChat(ctx context.Context, msg *brid
409411
}
410412

411413
if wa.lastPresence != presence {
412-
err := wa.updatePresence(presence)
414+
err := wa.updatePresence(ctx, presence)
413415
if err != nil {
414416
zerolog.Ctx(ctx).Warn().Err(err).Msg("Failed to set presence when viewing chat")
415417
}
@@ -444,8 +446,8 @@ func (wa *WhatsAppClient) HandleMatrixViewingChat(ctx context.Context, msg *brid
444446
return nil
445447
}
446448

447-
func (wa *WhatsAppClient) updatePresence(presence types.Presence) error {
448-
err := wa.Client.SendPresence(presence)
449+
func (wa *WhatsAppClient) updatePresence(ctx context.Context, presence types.Presence) error {
450+
err := wa.Client.SendPresence(ctx, presence)
449451
if err == nil {
450452
wa.lastPresence = presence
451453
}

pkg/connector/commands.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func fnAccept(ce *commands.Event) {
6565
ce.Reply("Login not found")
6666
} else if !login.Client.IsLoggedIn() {
6767
ce.Reply("Not logged in")
68-
} else if err = login.Client.(*WhatsAppClient).Client.JoinGroupWithInvite(meta.JID, meta.Inviter, meta.Code, meta.Expiration); err != nil {
68+
} else if err = login.Client.(*WhatsAppClient).Client.JoinGroupWithInvite(ce.Ctx, meta.JID, meta.Inviter, meta.Code, meta.Expiration); err != nil {
6969
ce.Log.Err(err).Msg("Failed to accept group invite")
7070
ce.Reply("Failed to accept group invite: %v", err)
7171
} else {
@@ -189,7 +189,7 @@ func fnInviteLink(ce *commands.Event) {
189189
ce.Reply("Can't get invite link to private chat")
190190
} else if portalJID.IsBroadcastList() {
191191
ce.Reply("Can't get invite link to broadcast list")
192-
} else if link, err := wa.Client.GetGroupInviteLink(portalJID, reset); err != nil {
192+
} else if link, err := wa.Client.GetGroupInviteLink(ce.Ctx, portalJID, reset); err != nil {
193193
ce.Reply("Failed to get invite link: %v", err)
194194
} else {
195195
ce.Reply(link)
@@ -219,14 +219,14 @@ func fnResolveLink(ce *commands.Event) {
219219
}
220220
wa := login.Client.(*WhatsAppClient)
221221
if strings.HasPrefix(ce.Args[0], whatsmeow.InviteLinkPrefix) {
222-
group, err := wa.Client.GetGroupInfoFromLink(ce.Args[0])
222+
group, err := wa.Client.GetGroupInfoFromLink(ce.Ctx, ce.Args[0])
223223
if err != nil {
224224
ce.Reply("Failed to get group info: %v", err)
225225
return
226226
}
227227
ce.Reply("That invite link points at %s (`%s`)", group.Name, group.JID)
228228
} else if strings.HasPrefix(ce.Args[0], whatsmeow.BusinessMessageLinkPrefix) || strings.HasPrefix(ce.Args[0], whatsmeow.BusinessMessageLinkDirectPrefix) {
229-
target, err := wa.Client.ResolveBusinessMessageLink(ce.Args[0])
229+
target, err := wa.Client.ResolveBusinessMessageLink(ce.Ctx, ce.Args[0])
230230
if err != nil {
231231
ce.Reply("Failed to get business info: %v", err)
232232
return
@@ -241,7 +241,7 @@ func fnResolveLink(ce *commands.Event) {
241241
}
242242
ce.Reply("That link points at %s (+%s).%s", target.PushName, target.JID.User, message)
243243
} else if strings.HasPrefix(ce.Args[0], whatsmeow.ContactQRLinkPrefix) || strings.HasPrefix(ce.Args[0], whatsmeow.ContactQRLinkDirectPrefix) {
244-
target, err := wa.Client.ResolveContactQRLink(ce.Args[0])
244+
target, err := wa.Client.ResolveContactQRLink(ce.Ctx, ce.Args[0])
245245
if err != nil {
246246
ce.Reply("Failed to get contact info: %v", err)
247247
return
@@ -280,20 +280,20 @@ func fnJoin(ce *commands.Event) {
280280
wa := login.Client.(*WhatsAppClient)
281281

282282
if strings.HasPrefix(ce.Args[0], whatsmeow.InviteLinkPrefix) {
283-
jid, err := wa.Client.JoinGroupWithLink(ce.Args[0])
283+
jid, err := wa.Client.JoinGroupWithLink(ce.Ctx, ce.Args[0])
284284
if err != nil {
285285
ce.Reply("Failed to join group: %v", err)
286286
return
287287
}
288288
ce.Log.Debug().Stringer("group_jid", jid).Msg("User successfully joined WhatsApp group with link")
289289
ce.Reply("Successfully joined group `%s`, the portal should be created momentarily", jid)
290290
} else if strings.HasPrefix(ce.Args[0], whatsmeow.NewsletterLinkPrefix) {
291-
info, err := wa.Client.GetNewsletterInfoWithInvite(ce.Args[0])
291+
info, err := wa.Client.GetNewsletterInfoWithInvite(ce.Ctx, ce.Args[0])
292292
if err != nil {
293293
ce.Reply("Failed to get channel info: %v", err)
294294
return
295295
}
296-
err = wa.Client.FollowNewsletter(info.ID)
296+
err = wa.Client.FollowNewsletter(ce.Ctx, info.ID)
297297
if err != nil {
298298
ce.Reply("Failed to follow channel: %v", err)
299299
return

pkg/connector/directmedia.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func (wa *WhatsAppConnector) downloadAvatarDirectMedia(ctx context.Context, pars
9090
zerolog.Ctx(ctx).Debug().
9191
Str("avatar_id", parsedID.Avatar.AvatarID).
9292
Msg("Refreshing avatar URL from WhatsApp servers")
93-
avatar, err := waClient.Client.GetProfilePictureInfo(parsedID.Avatar.TargetJID, &whatsmeow.GetProfilePictureParams{
93+
avatar, err := waClient.Client.GetProfilePictureInfo(ctx, parsedID.Avatar.TargetJID, &whatsmeow.GetProfilePictureParams{
9494
IsCommunity: parsedID.Avatar.Community,
9595
})
9696
if errors.Is(err, whatsmeow.ErrProfilePictureNotSet) ||
@@ -262,7 +262,7 @@ func (wa *WhatsAppClient) requestDirectMedia(ctx context.Context, rawMsgID netwo
262262
defer state.Unlock()
263263
if !state.requested {
264264
zerolog.Ctx(ctx).Debug().Msg("Sending request for missing media in direct download")
265-
err := wa.sendMediaRequestDirect(rawMsgID, key)
265+
err := wa.sendMediaRequestDirect(ctx, rawMsgID, key)
266266
if err != nil {
267267
return nil, fmt.Errorf("failed to send media retry request: %w", err)
268268
}

pkg/connector/events.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ func (evt *WAMessageEvent) PreHandle(ctx context.Context, portal *bridgev2.Porta
139139
log := zerolog.Ctx(ctx).With().Str("action", "group lid migration").Logger()
140140
ctx = log.WithContext(ctx)
141141
meta.LIDMigrationAttempted = true
142-
info, err := evt.wa.Client.GetGroupInfo(portalJID)
142+
info, err := evt.wa.Client.GetGroupInfo(ctx, portalJID)
143143
if err != nil {
144144
log.Err(err).Msg("Failed to get group info for lid migration")
145145
return

pkg/connector/handlematrix.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ func (wa *WhatsAppClient) HandleMatrixReadReceipt(ctx context.Context, receipt *
322322
messagesToRead[key] = append(messagesToRead[key], parsed.ID)
323323
}
324324
for messageSender, ids := range messagesToRead {
325-
err = wa.Client.MarkRead(ids, receipt.Receipt.Timestamp, portalJID, messageSender)
325+
err = wa.Client.MarkRead(ctx, ids, receipt.Receipt.Timestamp, portalJID, messageSender)
326326
if err != nil {
327327
log.Err(err).Strs("ids", ids).Msg("Failed to mark messages as read")
328328
}
@@ -352,12 +352,12 @@ func (wa *WhatsAppClient) HandleMatrixTyping(ctx context.Context, msg *bridgev2.
352352
}
353353

354354
if wa.Main.Config.SendPresenceOnTyping {
355-
err = wa.updatePresence(types.PresenceAvailable)
355+
err = wa.updatePresence(ctx, types.PresenceAvailable)
356356
if err != nil {
357357
zerolog.Ctx(ctx).Warn().Err(err).Msg("Failed to set presence on typing")
358358
}
359359
}
360-
return wa.Client.SendChatPresence(portalJID, chatPresence, mediaPresence)
360+
return wa.Client.SendChatPresence(ctx, portalJID, chatPresence, mediaPresence)
361361
}
362362

363363
var errUnsupportedDisappearingTimer = bridgev2.WrapErrorInStatus(errors.New("invalid value for disappearing timer")).WithErrorAsMessage().WithIsCertain(true).WithSendNotice(true)
@@ -375,7 +375,7 @@ func (wa *WhatsAppClient) HandleMatrixDisappearingTimer(ctx context.Context, msg
375375
}
376376

377377
settingTS := time.UnixMilli(msg.Event.Timestamp)
378-
err = wa.Client.SetDisappearingTimer(portalJID, msg.Content.Timer.Duration, settingTS)
378+
err = wa.Client.SetDisappearingTimer(ctx, portalJID, msg.Content.Timer.Duration, settingTS)
379379
if err != nil {
380380
return false, err
381381
}
@@ -430,7 +430,7 @@ func (wa *WhatsAppClient) HandleMatrixMembership(ctx context.Context, msg *bridg
430430
return false, fmt.Errorf("cannot get target intent: unknown type: %T", target)
431431
}
432432

433-
_, err = wa.Client.UpdateGroupParticipants(portalJID, changes, action)
433+
_, err = wa.Client.UpdateGroupParticipants(ctx, portalJID, changes, action)
434434
if err != nil {
435435
return false, err
436436
}
@@ -448,7 +448,7 @@ func (wa *WhatsAppClient) HandleMatrixRoomName(ctx context.Context, msg *bridgev
448448
return false, fmt.Errorf("cannot set room name for DM")
449449
}
450450

451-
err = wa.Client.SetGroupName(portalJID, msg.Content.Name)
451+
err = wa.Client.SetGroupName(ctx, portalJID, msg.Content.Name)
452452
if err != nil {
453453
return false, err
454454
}
@@ -471,7 +471,7 @@ func (wa *WhatsAppClient) HandleMatrixRoomTopic(ctx context.Context, msg *bridge
471471

472472
newID := wa.Client.GenerateMessageID()
473473
oldID := msg.Portal.Metadata.(*waid.PortalMetadata).TopicID
474-
err = wa.Client.SetGroupTopic(portalJID, oldID, newID, msg.Content.Topic)
474+
err = wa.Client.SetGroupTopic(ctx, portalJID, oldID, newID, msg.Content.Topic)
475475
if err != nil {
476476
return false, err
477477
}
@@ -506,7 +506,7 @@ func (wa *WhatsAppClient) HandleMatrixRoomAvatar(ctx context.Context, msg *bridg
506506
}
507507
}
508508

509-
avatarID, err := wa.Client.SetGroupPhoto(portalJID, data)
509+
avatarID, err := wa.Client.SetGroupPhoto(ctx, portalJID, data)
510510
if err != nil {
511511
return false, err
512512
}

pkg/connector/handlewhatsapp.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func (wa *WhatsAppClient) handleWAEvent(rawEvt any) (success bool) {
129129

130130
case *events.AppStateSyncComplete:
131131
if len(wa.GetStore().PushName) > 0 && evt.Name == appstate.WAPatchCriticalBlock {
132-
err := wa.updatePresence(types.PresenceUnavailable)
132+
err := wa.updatePresence(ctx, types.PresenceUnavailable)
133133
if err != nil {
134134
log.Warn().Err(err).Msg("Failed to send presence after app state sync")
135135
}
@@ -142,7 +142,7 @@ func (wa *WhatsAppClient) handleWAEvent(rawEvt any) (success bool) {
142142
case *events.PushNameSetting:
143143
// Send presence available when connecting and when the pushname is changed.
144144
// This makes sure that outgoing messages always have the right pushname.
145-
err := wa.updatePresence(types.PresenceUnavailable)
145+
err := wa.updatePresence(ctx, types.PresenceUnavailable)
146146
if err != nil {
147147
log.Warn().Err(err).Msg("Failed to send presence after push name update")
148148
}
@@ -163,12 +163,12 @@ func (wa *WhatsAppClient) handleWAEvent(rawEvt any) (success bool) {
163163
wa.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateConnected})
164164
if len(wa.GetStore().PushName) > 0 {
165165
go func() {
166-
err := wa.updatePresence(types.PresenceUnavailable)
166+
err := wa.updatePresence(ctx, types.PresenceUnavailable)
167167
if err != nil {
168168
log.Warn().Err(err).Msg("Failed to send initial presence after connecting")
169169
}
170170
}()
171-
go wa.syncRemoteProfile(log.WithContext(context.Background()), nil)
171+
go wa.syncRemoteProfile(ctx, nil)
172172
}
173173
case *events.OfflineSyncPreview:
174174
log.Info().

pkg/connector/login.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ func (wl *WALogin) Wait(ctx context.Context) (*bridgev2.LoginStep, error) {
352352
}
353353

354354
ul.Client.(*WhatsAppClient).isNewLogin = true
355-
ul.Client.Connect(ul.Log.WithContext(context.Background()))
355+
ul.Client.Connect(ul.Log.WithContext(wl.Main.Bridge.BackgroundCtx))
356356

357357
return &bridgev2.LoginStep{
358358
Type: bridgev2.LoginStepTypeComplete,

0 commit comments

Comments
 (0)