From 51b906cd142a53d096d0fb53079cb593ac8b5358 Mon Sep 17 00:00:00 2001
From: Sumner Evans <sumner.evans@automattic.com>
Date: Thu, 27 Feb 2025 14:44:12 -0700
Subject: [PATCH] connector/client: only sync chats on first connection

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
---
 pkg/connector/client.go | 14 ++++++++++----
 pkg/connector/sync.go   |  1 -
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/pkg/connector/client.go b/pkg/connector/client.go
index 7351c9d..86348cf 100644
--- a/pkg/connector/client.go
+++ b/pkg/connector/client.go
@@ -42,6 +42,8 @@ type LinkedInClient struct {
 	userLogin *bridgev2.UserLogin
 	client    *linkedingo.Client
 
+	firstConnection bool
+
 	linkedinFmtParams linkedinfmt.FormatParams
 	matrixParser      *matrixfmt.HTMLParser
 }
@@ -65,9 +67,10 @@ var (
 func NewLinkedInClient(ctx context.Context, lc *LinkedInConnector, login *bridgev2.UserLogin) *LinkedInClient {
 	userID := networkid.UserID(login.ID)
 	client := &LinkedInClient{
-		main:      lc,
-		userID:    userID,
-		userLogin: login,
+		main:            lc,
+		userID:          userID,
+		userLogin:       login,
+		firstConnection: true,
 	}
 	client.client = linkedingo.NewClient(
 		ctx,
@@ -80,7 +83,10 @@ func NewLinkedInClient(ctx context.Context, lc *LinkedInConnector, login *bridge
 			ClientConnection: func(context.Context, *linkedingo.ClientConnection) {
 				login.BridgeState.Send(status.BridgeState{StateEvent: status.StateConnected})
 
-				go client.syncConversations(ctx)
+				if client.firstConnection {
+					go client.syncConversations(ctx)
+					client.firstConnection = false
+				}
 			},
 			TransientDisconnect: client.onTransientDisconnect,
 			BadCredentials:      client.onBadCredentials,
diff --git a/pkg/connector/sync.go b/pkg/connector/sync.go
index a8123cb..42f5ea3 100644
--- a/pkg/connector/sync.go
+++ b/pkg/connector/sync.go
@@ -10,7 +10,6 @@ import (
 	"maunium.net/go/mautrix/bridgev2/simplevent"
 )
 
-// TODO limits
 func (l *LinkedInClient) syncConversations(ctx context.Context) {
 	log := zerolog.Ctx(ctx).With().Str("action", "sync_conversations").Logger()
 	log.Info().Msg("starting conversation sync")
-- 
GitLab