From 17b69a6eac84bb1952354a56a73de532a95dc854 Mon Sep 17 00:00:00 2001 From: Conan Date: Mon, 8 Sep 2025 17:25:06 +0800 Subject: [PATCH] login: initiate data export immediately after login (#119) --- pkg/connector/login.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkg/connector/login.go b/pkg/connector/login.go index c475886c..d889fed4 100644 --- a/pkg/connector/login.go +++ b/pkg/connector/login.go @@ -21,6 +21,8 @@ import ( "fmt" "net/http" "strings" + "sync" + "time" "maunium.net/go/mautrix/bridgev2" "maunium.net/go/mautrix/bridgev2/database" @@ -114,6 +116,22 @@ func finalizeLogin(ctx context.Context, user *bridgev2.User, authorization *tg.A } }() + go func() { + log := ul.Log.With().Str("component", "login_takeout").Logger() + client.takeoutLock.Lock() + defer client.takeoutLock.Unlock() + _, err = client.getTakeoutID(ctx) + if err != nil { + log.Err(err).Msg("Failed to get takeout") + return + } + if client.stopTakeoutTimer == nil { + client.stopTakeoutTimer = time.AfterFunc(max(time.Hour, time.Duration(client.main.Bridge.Config.Backfill.Queue.BatchDelay*2)), sync.OnceFunc(func() { client.stopTakeout(ctx) })) + } else { + client.stopTakeoutTimer.Reset(max(time.Hour, time.Duration(client.main.Bridge.Config.Backfill.Queue.BatchDelay*2))) + } + }() + fullName := util.FormatFullName(me.FirstName, me.LastName, me.Deleted, me.ID) username := me.Username if username == "" && len(me.Usernames) > 0 {