TF-3278 Handle open tmail app deep link but it was installed but signed in with the other account

This commit is contained in:
dab246
2024-12-10 15:21:48 +07:00
committed by Dat H. Pham
parent a4bb5b9ddf
commit c6ed9f7c2b
11 changed files with 453 additions and 54 deletions
+3 -3
View File
@@ -2,7 +2,7 @@ import 'package:equatable/equatable.dart';
import 'package:model/model.dart';
class DeepLinkData with EquatableMixin {
final String path;
final String action;
final String? accessToken;
final String? refreshToken;
final String? idToken;
@@ -10,7 +10,7 @@ class DeepLinkData with EquatableMixin {
final String? username;
DeepLinkData({
required this.path,
required this.action,
this.accessToken,
this.refreshToken,
this.idToken,
@@ -35,7 +35,7 @@ class DeepLinkData with EquatableMixin {
@override
List<Object?> get props => [
path,
action,
accessToken,
refreshToken,
idToken,
+16 -9
View File
@@ -8,6 +8,7 @@ import 'package:tmail_ui_user/main/deep_links/deep_link_data.dart';
class DeepLinksManager {
Future<DeepLinkData?> getDeepLinkData() async {
final uriLink = await AppLinks().getInitialLink();
log('DeepLinksManager::getDeepLinkData:uriLink = $uriLink');
if (uriLink == null) return null;
final deepLinkData = parseDeepLink(uriLink.toString());
@@ -16,18 +17,24 @@ class DeepLinksManager {
DeepLinkData? parseDeepLink(String url) {
try {
final uri = Uri.parse(url.replaceFirst(OIDCConstant.twakeWorkplaceUrlScheme, 'https'));
final updatedUrl = url.replaceFirst(
OIDCConstant.twakeWorkplaceUrlScheme,
'https',
);
final uri = Uri.parse(updatedUrl);
final action = uri.host;
final accessToken = uri.queryParameters['access_token'];
final refreshToken = uri.queryParameters['refresh_token'];
final idToken = uri.queryParameters['id_token'];
final expiresInStr = uri.queryParameters['expires_in'];
final username = uri.queryParameters['username'];
final accessToken = uri.queryParameters['access_token'] ?? '';
final refreshToken = uri.queryParameters['refresh_token'] ?? '';
final idToken = uri.queryParameters['id_token'] ?? '';
final expiresInStr = uri.queryParameters['expires_in'] ?? '';
final username = uri.queryParameters['username'] ?? '';
final expiresIn = int.tryParse(expiresInStr);
final expiresIn = expiresInStr != null
? int.tryParse(expiresInStr)
: null;
return DeepLinkData(
path: uri.path,
action: action,
accessToken: accessToken,
refreshToken: refreshToken,
idToken: idToken,
@@ -4315,6 +4315,13 @@ class AppLocalizations {
);
}
String get tokenInvalid {
return Intl.message(
'Token invalid',
name: 'tokenInvalid',
);
}
String get getHelpOrReportABug {
return Intl.message(
'Get help or report a bug',