TF-1684 Add abstract TransformHtmlSignature method
(cherry picked from commit dfaa5187d1b6a6c1065c65699b6e3a287d1d0843)
This commit is contained in:
@@ -14,4 +14,6 @@ abstract class IdentityDataSource {
|
|||||||
Future<bool> deleteIdentity(Session session, AccountId accountId, IdentityId identityId);
|
Future<bool> deleteIdentity(Session session, AccountId accountId, IdentityId identityId);
|
||||||
|
|
||||||
Future<bool> editIdentity(Session session, AccountId accountId, EditIdentityRequest editIdentityRequest);
|
Future<bool> editIdentity(Session session, AccountId accountId, EditIdentityRequest editIdentityRequest);
|
||||||
|
|
||||||
|
Future<String> transformHtmlSignature(String signature);
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,12 @@
|
|||||||
|
import 'package:core/presentation/utils/html_transformer/dom/add_target_blank_in_tag_a_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/dom/add_tooltip_link_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/dom/blockcode_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/dom/blockquoted_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/dom/image_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/dom/script_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/dom/sigature_transformers.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/html_transform.dart';
|
||||||
|
import 'package:core/presentation/utils/html_transformer/transform_configuration.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
@@ -43,4 +52,21 @@ class IdentityDataSourceImpl extends IdentityDataSource {
|
|||||||
return await _identityAPI.editIdentity(session, accountId, editIdentityRequest);
|
return await _identityAPI.editIdentity(session, accountId, editIdentityRequest);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<String> transformHtmlSignature(String signature) {
|
||||||
|
return Future.sync(() async {
|
||||||
|
final signatureUnescape = await HtmlTransform(signature).transformToHtml(
|
||||||
|
transformConfiguration: TransformConfiguration.create(customDomTransformers: [
|
||||||
|
const RemoveScriptTransformer(),
|
||||||
|
const SignatureTransformer(),
|
||||||
|
const BlockQuotedTransformer(),
|
||||||
|
const BlockCodeTransformer(),
|
||||||
|
const AddTargetBlankInTagATransformer(),
|
||||||
|
const ImageTransformer(),
|
||||||
|
const AddTooltipLinkTransformer()
|
||||||
|
]));
|
||||||
|
return signatureUnescape;
|
||||||
|
}).catchError(_exceptionThrower.throwException);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -34,4 +34,9 @@ class IdentityRepositoryImpl extends IdentityRepository {
|
|||||||
Future<bool> editIdentity(Session session, AccountId accountId, EditIdentityRequest editIdentityRequest) {
|
Future<bool> editIdentity(Session session, AccountId accountId, EditIdentityRequest editIdentityRequest) {
|
||||||
return _dataSource.editIdentity(session, accountId, editIdentityRequest);
|
return _dataSource.editIdentity(session, accountId, editIdentityRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<String> transformHtmlSignature(String signature) {
|
||||||
|
return _dataSource.transformHtmlSignature(signature);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -14,4 +14,6 @@ abstract class IdentityRepository {
|
|||||||
Future<bool> deleteIdentity(Session session, AccountId accountId, IdentityId identityId);
|
Future<bool> deleteIdentity(Session session, AccountId accountId, IdentityId identityId);
|
||||||
|
|
||||||
Future<bool> editIdentity(Session session, AccountId accountId, EditIdentityRequest editIdentityRequest);
|
Future<bool> editIdentity(Session session, AccountId accountId, EditIdentityRequest editIdentityRequest);
|
||||||
|
|
||||||
|
Future<String> transformHtmlSignature(String signature);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
|
||||||
|
class TransformHtmlSignatureLoading extends UIState {
|
||||||
|
|
||||||
|
TransformHtmlSignatureLoading();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class TransformHtmlSignatureSuccess extends UIState {
|
||||||
|
final String signature;
|
||||||
|
|
||||||
|
TransformHtmlSignatureSuccess(this.signature);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [signature];
|
||||||
|
}
|
||||||
|
|
||||||
|
class TransformHtmlSignatureFailure extends FeatureFailure {
|
||||||
|
|
||||||
|
TransformHtmlSignatureFailure(exception) : super(exception: exception);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [exception];
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
import 'dart:core';
|
||||||
|
|
||||||
|
import 'package:core/presentation/state/failure.dart';
|
||||||
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
import 'package:dartz/dartz.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/repository/identity_repository.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/state/edit_identity_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/domain/state/transform_html_signature_state.dart';
|
||||||
|
|
||||||
|
class TransformHtmlSignatureInteractor {
|
||||||
|
final IdentityRepository _identityRepository;
|
||||||
|
|
||||||
|
TransformHtmlSignatureInteractor(this._identityRepository);
|
||||||
|
|
||||||
|
Stream<Either<Failure, Success>> execute(String signature) async* {
|
||||||
|
try {
|
||||||
|
yield Right<Failure, Success>(TransformHtmlSignatureLoading());
|
||||||
|
final signatureUnescape = await _identityRepository.transformHtmlSignature(signature);
|
||||||
|
yield Right<Failure, Success>(TransformHtmlSignatureSuccess(signatureUnescape));
|
||||||
|
} catch (exception) {
|
||||||
|
yield Left<Failure, Success>(EditIdentityFailure(exception));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user