From 1523fd5ade09c047a26b4e64b8e2af41f27adb06 Mon Sep 17 00:00:00 2001 From: Zohaib Iqbal Kambrani <> Date: Sun, 12 Jun 2022 16:26:05 +0300 Subject: [PATCH] Analytics for login registration --- lib/analytics/flows/login_registration.dart | 57 +++++++++++++------ lib/pages/login/confirm-login.dart | 15 +++-- lib/pages/login/login-type.dart | 2 + lib/pages/login/login.dart | 3 +- lib/pages/login/register.dart | 3 + .../webrtc/signaling.dart | 2 +- 6 files changed, 58 insertions(+), 24 deletions(-) diff --git a/lib/analytics/flows/login_registration.dart b/lib/analytics/flows/login_registration.dart index aee26a5e..4134e9fd 100644 --- a/lib/analytics/flows/login_registration.dart +++ b/lib/analytics/flows/login_registration.dart @@ -3,6 +3,8 @@ import 'package:flutter/cupertino.dart'; import '../google-analytics.dart'; class LoginRegistration{ + static int loginMethod; + static int verificationMethod; final GALogger logger; LoginRegistration(this.logger); @@ -66,20 +68,29 @@ class LoginRegistration{ } // R011:login_verify_otp | R009:registration_verification_option - verify_otp_method({@required int method, bool forRegistration = false}){ - var verification_method = ''; - if(method == 1) verification_method = 'sms'; - if(method == 2) verification_method = 'fingerprint'; - if(method == 3) verification_method = 'face id'; - if(method == 4) verification_method = 'whatsapp'; - + verify_otp_method({bool forRegistration = false}){ if(forRegistration == false) logger("login_verify_otp", parameters: { - 'login_method' : verification_method + 'login_method' : _getLoginMethod(), + 'verification_method' : _getVerificationMethod(), }); else logger("registration_verification_option", parameters: { - 'verification_method' : verification_method + 'verification_method' : _getVerificationMethod() + }); + } + + // R011:login_verify_otp | R009:registration_verification_option + login_verfication({bool forRegistration = false}){ + if(forRegistration == false) + logger("login_verfication", parameters: { + 'login_method' : _getLoginMethod(), + 'verification_method' : _getVerificationMethod(), + }); + else + logger("login_varification_register", parameters: { + 'login_method' : _getLoginMethod(), + 'verification_method' : _getVerificationMethod(), }); } @@ -94,14 +105,9 @@ class LoginRegistration{ } // R012.1, R014.1 - login_successful({@required int method}){ - var verification_method = ''; - if(method == 1) verification_method = 'sms'; - if(method == 2) verification_method = 'fingerprint'; - if(method == 3) verification_method = 'face id'; - if(method == 4) verification_method = 'whatsapp'; + login_successful(){ logger('login_successful', parameters: { - 'login_method' : verification_method + 'login_method' : _getVerificationMethod() }); } @@ -112,9 +118,9 @@ class LoginRegistration{ }); } - login_fail({@required String method, error}){ + login_fail({error}){ logger('login_unsuccessful', parameters: { - 'login_method' : method, + 'login_method' : loginMethod, 'error': error }); } @@ -128,4 +134,19 @@ class LoginRegistration{ login_with_other_account(){ logger('login_with_other_account'); } + + + _getLoginMethod(){ + if(loginMethod == 1) return 'national id'; + if(loginMethod == 2) return 'file number'; + return 'otp'; + } + + String _getVerificationMethod(){ + if(verificationMethod == 1) return 'sms'; + if(verificationMethod == 2) return 'fingerprint'; + if(verificationMethod == 3) return 'face id'; + if(verificationMethod == 4) return 'whatsapp'; + return "unknown"; + } } \ No newline at end of file diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index bde675ad..b4cd9659 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/analytics/flows/login_registration.dart'; import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; @@ -308,6 +309,9 @@ class _ConfirmLogin extends State { this.selectedOption = fingrePrintBefore != null ? fingrePrintBefore : type; login_method = type; + LoginRegistration.verificationMethod = type; + projectViewModel.analytics.loginRegistration.login_verfication(forRegistration: widget.fromRegistration); + switch (type) { case 1: this.loginWithSMS(type); @@ -579,11 +583,12 @@ class _ConfirmLogin extends State { else { // Navigator.of(context).pop(), - projectViewModel.analytics.errorTracking.log('otp_verification_at_confirm_login', error: result), GifLoaderDialogUtils.hideDialog(context), Future.delayed(Duration(seconds: 1), () { AppToast.showErrorToast(message: result); }), + projectViewModel.analytics.loginRegistration.login_fail(error: result), + projectViewModel.analytics.errorTracking.log('otp_verification_at_confirm_login', error: result), } }) .catchError((err) { @@ -609,7 +614,7 @@ class _ConfirmLogin extends State { } else { - projectViewModel.analytics.loginRegistration.login_successful(method: login_method), + projectViewModel.analytics.loginRegistration.login_successful(), sharedPref.remove(FAMILY_FILE), result.list.isFamily = false, userData = result.list, @@ -629,10 +634,12 @@ class _ConfirmLogin extends State { // Navigator.of(context).pop(), GifLoaderDialogUtils.hideDialog(context), Future.delayed(Duration(seconds: 1), () { - projectViewModel.analytics.errorTracking.log('otp_verification_at_confirm_login', error: result); AppToast.showErrorToast(message: result); startSMSService(tempType); }), + + projectViewModel.analytics.loginRegistration.login_fail(error: result), + projectViewModel.analytics.errorTracking.log('otp_verification_at_confirm_login', error: result) } }) .catchError((err) { @@ -728,8 +735,8 @@ class _ConfirmLogin extends State { isMoreOption = true; }); } else { - projectViewModel.analytics.loginRegistration.verify_otp_method(method: _flag, forRegistration: widget.fromRegistration); authenticateUser(_flag, isActive: _loginIndex); + projectViewModel.analytics.loginRegistration.verify_otp_method(forRegistration: widget.fromRegistration); } }, child: Container( diff --git a/lib/pages/login/login-type.dart b/lib/pages/login/login-type.dart index af461044..8c584f7b 100644 --- a/lib/pages/login/login-type.dart +++ b/lib/pages/login/login-type.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/analytics/flows/login_registration.dart'; import 'package:diplomaticquarterapp/analytics/google-analytics.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/locator.dart'; @@ -241,6 +242,7 @@ class LoginType extends StatelessWidget { onTap: () { LoginType.loginType = _flag; locator().loginRegistration.login_start(method: type); + LoginRegistration.loginMethod = _flag; Navigator.of(_context).push(FadePage(page: Login())); }, child: Container( diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index 4a6efc5a..b504c77d 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -30,6 +30,7 @@ import 'package:flutter/rendering.dart'; import 'package:provider/provider.dart'; class Login extends StatefulWidget { + @override _Login createState() => _Login(); } @@ -282,7 +283,7 @@ class _Login extends State { }, cancelFunction: () => {}); dialog.showAlertDialog(context); - projectViewModel.analytics.loginRegistration.login_fail(method: this.loginType == 1 ? "national id" : "file number", error: err.toString()); + projectViewModel.analytics.loginRegistration.login_fail(error: err.toString()); }); } diff --git a/lib/pages/login/register.dart b/lib/pages/login/register.dart index 9e771f14..688a9fb3 100644 --- a/lib/pages/login/register.dart +++ b/lib/pages/login/register.dart @@ -1,6 +1,8 @@ +import 'package:diplomaticquarterapp/analytics/flows/login_registration.dart'; import 'package:diplomaticquarterapp/analytics/google-analytics.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_user_status_reponse.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_user_status_req.dart'; @@ -341,6 +343,7 @@ class _Register extends State { okFunction: () { AlertDialogBox.closeAlertDialog(context); sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, nRequest); + LoginRegistration.loginMethod = 1; // 1=NationalID, by default from Registration Navigator.of(context).push(FadePage(page: Login())); }, cancelFunction: () {}) diff --git a/lib/pages/videocall-webrtc-rnd/webrtc/signaling.dart b/lib/pages/videocall-webrtc-rnd/webrtc/signaling.dart index 4ca87644..d6e0a071 100644 --- a/lib/pages/videocall-webrtc-rnd/webrtc/signaling.dart +++ b/lib/pages/videocall-webrtc-rnd/webrtc/signaling.dart @@ -404,7 +404,7 @@ class Signaling { 'to': session.remote_user?.id, 'from': session.local_user.id, 'candidate': { - 'sdpMLineIndex': candidate.sdpMLineIndex, + 'sdpMLineIndex': candidate.sdpMlineIndex, 'sdpMid': candidate.sdpMid, 'candidate': candidate.candidate, },