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/main/localizations/app_localizations.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';
|
||||
|
||||
extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
|
||||
@@ -43,6 +44,7 @@ extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
|
||||
|
||||
final qualifiedPaywall = paywallUrlPattern!.getQualifiedUrl(
|
||||
ownerEmail: ownEmailAddress.value,
|
||||
domainName: RouteUtils.getRootDomain(),
|
||||
);
|
||||
|
||||
AppUtils.launchLink(qualifiedPaywall);
|
||||
|
||||
@@ -14,7 +14,7 @@ class PaywallUrlPattern with EquatableMixin {
|
||||
return PaywallUtils.buildPaywallUrlFromTemplate(
|
||||
template: pattern,
|
||||
localPart: mailAddress?.localPart,
|
||||
domainName: mailAddress?.domain.domainName,
|
||||
domainName: domainName ?? mailAddress?.domain.domainName,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -264,4 +264,20 @@ abstract class RouteUtils {
|
||||
static String generateMailtoLink(String 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));
|
||||
});
|
||||
});
|
||||
|
||||
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