TF-3985 Prefer to use domain from platform rather than from email
This commit is contained in:
@@ -4,6 +4,7 @@ import 'package:tmail_ui_user/features/paywall/domain/model/paywall_url_pattern.
|
|||||||
import 'package:tmail_ui_user/features/paywall/domain/usecases/get_paywall_url_interactor.dart';
|
import 'package:tmail_ui_user/features/paywall/domain/usecases/get_paywall_url_interactor.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||||
|
|
||||||
extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
|
extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
|
||||||
@@ -43,6 +44,7 @@ extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
|
|||||||
|
|
||||||
final qualifiedPaywall = paywallUrlPattern!.getQualifiedUrl(
|
final qualifiedPaywall = paywallUrlPattern!.getQualifiedUrl(
|
||||||
ownerEmail: ownEmailAddress.value,
|
ownerEmail: ownEmailAddress.value,
|
||||||
|
domainName: RouteUtils.getRootDomain(),
|
||||||
);
|
);
|
||||||
|
|
||||||
AppUtils.launchLink(qualifiedPaywall);
|
AppUtils.launchLink(qualifiedPaywall);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class PaywallUrlPattern with EquatableMixin {
|
|||||||
return PaywallUtils.buildPaywallUrlFromTemplate(
|
return PaywallUtils.buildPaywallUrlFromTemplate(
|
||||||
template: pattern,
|
template: pattern,
|
||||||
localPart: mailAddress?.localPart,
|
localPart: mailAddress?.localPart,
|
||||||
domainName: mailAddress?.domain.domainName,
|
domainName: domainName ?? mailAddress?.domain.domainName,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -264,4 +264,20 @@ abstract class RouteUtils {
|
|||||||
static String generateMailtoLink(String mailAddress) {
|
static String generateMailtoLink(String mailAddress) {
|
||||||
return '$baseOriginUrl/$mailtoPrefix/?uri=$mailtoPrefix:$mailAddress';
|
return '$baseOriginUrl/$mailtoPrefix/?uri=$mailtoPrefix:$mailAddress';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String? getRootDomain({String? hostname}) {
|
||||||
|
final host = hostname ?? html.window.location.hostname;
|
||||||
|
|
||||||
|
if (host == null || host.isEmpty) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
final parts = host.split('.');
|
||||||
|
|
||||||
|
if (parts.length >= 2) {
|
||||||
|
return '${parts[parts.length - 2]}.${parts.last}';
|
||||||
|
}
|
||||||
|
|
||||||
|
return host;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -253,4 +253,34 @@ void main() {
|
|||||||
expect(result[RouteUtils.paramBody], equals(body));
|
expect(result[RouteUtils.paramBody], equals(body));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
group('getRootDomain', () {
|
||||||
|
test('should return null when hostname is empty', () {
|
||||||
|
expect(RouteUtils.getRootDomain(hostname: ''), isNull);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return null when hostname is empty', () {
|
||||||
|
expect(RouteUtils.getRootDomain(hostname: ''), isNull);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return root domain for simple domain', () {
|
||||||
|
expect(RouteUtils.getRootDomain(hostname: 'example.com'), 'example.com');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return root domain and remove subdomains', () {
|
||||||
|
expect(RouteUtils.getRootDomain(hostname: 'mail.dev.example.com'), 'example.com');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return root domain and remove www subdomain', () {
|
||||||
|
expect(RouteUtils.getRootDomain(hostname: 'www.google.com'), 'google.com');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return localhost as is', () {
|
||||||
|
expect(RouteUtils.getRootDomain(hostname: 'localhost'), 'localhost');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should handle multi-level tld like co.uk (not fully accurate)', () {
|
||||||
|
expect(RouteUtils.getRootDomain(hostname: 'service.example.co.uk'), 'co.uk');
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user