Files
workavia-mail-front/lib/features/paywall/domain/model/paywall_url_pattern.dart
T
2025-11-17 14:24:30 +07:00

41 lines
1.2 KiB
Dart

import 'package:core/utils/mail/domain.dart';
import 'package:core/utils/mail/mail_address.dart';
import 'package:equatable/equatable.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/paywall/presentation/paywall_utils.dart';
class PaywallUrlPattern with EquatableMixin {
final String pattern;
PaywallUrlPattern(this.pattern);
String getQualifiedUrl({required String ownerEmail, String? domainName}) {
final mailAddress = _getMailAddress(ownerEmail: ownerEmail);
return PaywallUtils.buildPaywallUrlFromTemplate(
template: pattern,
localPart: mailAddress?.localPart.replaceAll('.', ''),
domainName: domainName ?? mailAddress?.domain.domainName,
);
}
MailAddress? _getMailAddress({required String ownerEmail}) {
try {
return MailAddress.validateAddress(ownerEmail);
} catch (e) {
if (GetUtils.isEmail(ownerEmail)) {
final listPart = ownerEmail.split('@');
if (listPart.length == 2) {
return MailAddress(
localPart: listPart.first,
domain: Domain.of((listPart.last)),
);
}
}
return null;
}
}
@override
List<Object> get props => [pattern];
}