From bbfb5e7b5bad20b0abc40f54b4a01606bf147275 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 8 Apr 2024 19:04:40 +0300 Subject: [PATCH] Improve login failure analytics --- provisioning.go | 3 ++- user.go | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/provisioning.go b/provisioning.go index daeac08..b983258 100644 --- a/provisioning.go +++ b/provisioning.go @@ -504,12 +504,13 @@ Loop: jsonResponse(w, http.StatusOK, LoginResponse{Status: "qr", Code: item.qr}) case item.err != nil: log.Err(item.err).Msg("Got error in QR channel") - Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "qr"}) var resp LoginResponse switch { case errors.Is(item.err, ErrLoginTimeout): + Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "qr", "error": "user timeout"}) resp = LoginResponse{ErrCode: "timeout", Error: "Scanning QR code timed out"} default: + Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "qr", "error": "unknown"}) resp = LoginResponse{ErrCode: "unknown", Error: "Login failed"} } resp.Status = "fail" diff --git a/user.go b/user.go index cd05a40..81d40aa 100644 --- a/user.go +++ b/user.go @@ -568,7 +568,9 @@ func (user *User) LoginGoogle(ctx context.Context, cookies map[string]string, em case errors.Is(err, libgm.ErrPairingCancelled): Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "google", "error": "cancelled"}) case errors.Is(err, libgm.ErrPairingTimeout): - Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "google", "error": "timeout"}) + Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "google", "error": "user timeout"}) + case errors.Is(err, libgm.ErrPairingInitTimeout): + Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "google", "error": "init timeout"}) default: Analytics.Track(user.MXID, "$login_failure", map[string]any{"mode": "google", "error": "unknown"}) }