Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/presentation_local_email_draft.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/local_email_draft/local_email_draft_item_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/local_email_draft/local_email_draft_list_dialog_builder.dart';

class DialogBuilderManager {
static final _instance = DialogBuilderManager._();

factory DialogBuilderManager() => _instance;

DialogBuilderManager._();

final _isOpened = RxBool(false);

RxBool get isOpened => _isOpened;

Future<void> showLocalEmailDraftListDialog({
required List<PresentationLocalEmailDraft> emailDrafts,
required AccountId? accountId,
required Session? session,
required String ownEmailAddress,
OnEditLocalEmailDraftAction? onEditLocalEmailDraftAction,
OnRestoreAllLocalEmailDraftsAction? onRestoreAllLocalEmailDraftsAction,
}) {
_isOpened.value = true;
return Get.dialog(
LocalEmailDraftListDialogBuilder(
accountId: accountId,
session: session,
ownEmailAddress: ownEmailAddress,
presentationLocalEmailDrafts: emailDrafts,
onEditLocalEmailDraftAction: onEditLocalEmailDraftAction,
onRestoreAllLocalEmailDraftsAction: onRestoreAllLocalEmailDraftsAction,
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
).whenComplete(() => _isOpened.value = false);
}
}
12 changes: 6 additions & 6 deletions lib/features/base/widget/email_avatar_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,31 @@ import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:core/presentation/views/image/avatar_builder.dart';
import 'package:flutter/material.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/presentation_email_extension.dart';

class EmailAvatarBuilder extends StatelessWidget {

final PresentationEmail emailSelected;
final String avatarText;
final OnTapAvatarActionClick? onTapAvatarActionClick;
final double? size;
final List<Color>? avatarColors;

const EmailAvatarBuilder({
Key? key,
required this.emailSelected,
required this.avatarText,
this.onTapAvatarActionClick,
this.size,
this.avatarColors,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return (AvatarBuilder()
..text(emailSelected.getAvatarText())
..text(avatarText)
..size(size ?? 50)
..addTextStyle(ThemeUtils.textStyleHeadingH4(color: Colors.white))
..backgroundColor(AppColor.colorAvatar)
..addOnTapActionClick(onTapAvatarActionClick ?? () {})
..avatarColor(emailSelected.avatarColors))
..avatarColor(avatarColors))
.build();
}
}
9 changes: 9 additions & 0 deletions lib/features/caching/clients/local_email_draft_client.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:tmail_ui_user/features/caching/config/hive_cache_client.dart';
import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/local_email_draft.dart';

class LocalEmailDraftClient extends HiveCacheClient<LocalEmailDraft> {

@override
String get tableName => CachingConstants.localDraftEmailCacheBoxName;
}
5 changes: 5 additions & 0 deletions lib/features/caching/config/hive_cache_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_cache.dart';
import 'package:tmail_ui_user/features/mailbox/data/model/mailbox_rights_cache.dart';
import 'package:tmail_ui_user/features/mailbox/data/model/state_cache.dart';
import 'package:tmail_ui_user/features/mailbox/data/model/state_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/local_email_draft.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/data/model/recent_search_cache.dart';
import 'package:tmail_ui_user/features/offline_mode/model/attachment_hive_cache.dart';
import 'package:tmail_ui_user/features/offline_mode/model/detailed_email_hive_cache.dart';
Expand Down Expand Up @@ -239,6 +240,10 @@ class HiveCacheConfig {
CachingConstants.OIDC_CONFIGURATION_CACHE_ID,
isolated: isolated,
);
registerCacheAdapter<LocalEmailDraft>(
LocalEmailDraftAdapter(),
CachingConstants.LOCAL_EMAIL_DRAFT_CACHE_ID
);
}

void registerCacheAdapter<T>(
Expand Down
2 changes: 2 additions & 0 deletions lib/features/caching/utils/caching_constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class CachingConstants {
static const int SENDING_EMAIL_HIVE_CACHE_ID = 18;
static const int SESSION_HIVE_CACHE_ID = 19;
static const int OIDC_CONFIGURATION_CACHE_ID = 20;
static const int LOCAL_EMAIL_DRAFT_CACHE_ID = 21;

static const String fcmCacheBoxName = 'fcm_cache_box';
static const String newEmailCacheBoxName = 'new_email_cache_box';
Expand All @@ -28,6 +29,7 @@ class CachingConstants {
static const String sessionCacheBoxName = 'session_cache_box';
static const String firebaseRegistrationCacheBoxName = 'firebase_registration_cache_box';
static const String oidcConfigurationCacheBoxName = 'oidc_configuration_cache_box';
static const String localDraftEmailCacheBoxName = 'local_email_draft_cache_box';

static const String oidcConfigurationCacheKeyName = 'oidc_configuration_cache_key';

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';

class SaveLocalEmailDraftSuccess extends UIState {}

class SaveLocalEmailDraftFailure extends FeatureFailure {

SaveLocalEmailDraftFailure(dynamic exception) : super(exception: exception);
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ class CreateNewAndSaveEmailToDraftsInteractor {
try {
yield dartz.Right<Failure, Success>(GenerateEmailLoading());

final emailCreated = await _createEmailObject(createEmailRequest);
final emailCreated = createEmailRequest.emailCreated
?? await _createEmailObject(createEmailRequest);

if (emailCreated != null) {
if (createEmailRequest.draftsEmailId == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/html_transformer/transform_configuration.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/composer/domain/state/restore_email_inline_images_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/composer_cache_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/local_email_draft_repository.dart';

class RestoreEmailInlineImagesInteractor {
RestoreEmailInlineImagesInteractor(this._composerCacheRepository);
RestoreEmailInlineImagesInteractor(this._localEmailDraftRepository);

final ComposerCacheRepository _composerCacheRepository;
final LocalEmailDraftRepository _localEmailDraftRepository;

Stream<Either<Failure, Success>> execute({
required String htmlContent,
Expand All @@ -18,7 +18,7 @@ class RestoreEmailInlineImagesInteractor {
try {
yield Right(RestoringEmailInlineImages());

final emailContent = await _composerCacheRepository.restoreEmailInlineImages(
final emailContent = await _localEmailDraftRepository.restoreEmailInlineImages(
htmlContent,
transformConfiguration,
mapUrlDownloadCID);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:tmail_ui_user/features/composer/domain/repository/composer_repository.dart';
import 'package:tmail_ui_user/features/composer/domain/state/save_local_email_draft_state.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/create_email_request_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/create_email_request.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/local_email_draft_repository.dart';

class SaveLocalEmailDraftInteractor {
final LocalEmailDraftRepository _localEmailDraftRepository;
final ComposerRepository _composerRepository;

SaveLocalEmailDraftInteractor(
this._localEmailDraftRepository,
this._composerRepository,
);

Future<Either<Failure, Success>> execute(
CreateEmailRequest createEmailRequest,
AccountId accountId,
UserName userName,
) async {
try {
final emailCreated = await _composerRepository.generateEmail(
createEmailRequest,
withIdentityHeader: true,
isDraft: true,
);
await _localEmailDraftRepository.saveLocalEmailDraft(
createEmailRequest.generateLocalEmailDraftFromEmail(
email: emailCreated,
accountId: accountId,
userName: userName,
),
);
return Right(SaveLocalEmailDraftSuccess());
} catch (exception) {
return Left(SaveLocalEmailDraftFailure(exception));
}
}
}
Loading
Loading