TF-3769 Enable toggle thread detail feature in setting

TF-3769 Thread Detail fallback to single email when get thread fails

TF-3769 Thread Detail fix font height thread

TF-3769 Thread Detail init with get status

TF-3769 Thread Detail fix font height email receiver and sender

TF-3769 Thread Detail refactor reset thread detail ui action UpdatedThreadDetailSettingAction

TF-3769 Thread Detail refresh settings on app lifecycle changed

TF-3769 Thread Detail fix font height email receiver and sender

TF-3769 Thread Detail fix scroll view exception of single email

TF-3769 Thread Detail refactor local setting

TF-3769 Thread Detail optimize get cache setting

TF-3769 Thread Detail fix font height email receiver

TF-3769 Thread Detail refactor local setting cache

TF-3769 Thread Detail fix font height email receiver and sender

TF-3769 Thread Detail use CacheExceptionThrower for ManageAccountDataSourceImpl

TF-3769 Thread Detail fix changing email in tablet view

TF-3769 Thread Detail refresh on setting changed

TF-3769 Thread Detail fix receiver alignments

TF-3769 Thread Detail fix receiver alignments

TF-3769 Thread Detail default setting enabled

TF-3769 Thread Detail fix font style email receiver and sender

TF-3769 Thread Detail fix toggle setting when responsive

TF-3769 Thread Detail adjust receive time position when single email

TF-3769 Thread Detail revert initializeThreadDetailEmails to void

TF-3769 Thread Detail fix CI on initializeThreadDetailEmails test

TF-3769 Thread Detail fix spacing email sender

TF-3769 Thread Detail update receiver color mobile

TF-3769 Thread Detail update collapsed preview letter spacing

TF-3769 Thread Detail update receiver color mobile

TF-3769 Thread Detail fix receive time position

TF-3769 Thread Detail add mark read button mobile collapsed email

TF-3769 Thread Detail fix font style email receiver and sender

TF-3769 Thread Detail update collapsed preview font weight

TF-3769 Thread Detail fix position email receiver and sender
This commit is contained in:
DatDang
2025-05-29 17:07:44 +07:00
committed by Dat H. Pham
parent c9ca3925cb
commit 1bc45e35f3
57 changed files with 830 additions and 165 deletions
@@ -15,4 +15,6 @@ abstract class ThreadDetailDataSource {
List<EmailId> emailIds, {
Properties? properties,
});
Future<bool> getThreadDetailStatus();
}
@@ -0,0 +1,39 @@
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/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/local_setting_cache_manager.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/local_setting_detail/thread_detail_local_setting_detail.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/local_setting_options.dart';
import 'package:tmail_ui_user/features/thread_detail/data/data_source/thread_detail_data_source.dart';
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
class ThreadDetailLocalDataSourceImpl implements ThreadDetailDataSource {
const ThreadDetailLocalDataSourceImpl(
this._localSettingCacheManager,
this._exceptionThrower,
);
final LocalSettingCacheManager _localSettingCacheManager;
final ExceptionThrower _exceptionThrower;
@override
Future<List<EmailId>> getThreadById(ThreadId threadId, AccountId accountId) {
throw UnimplementedError();
}
@override
Future<List<Email>> getEmailsByIds(Session session, AccountId accountId, List<EmailId> emailIds, {Properties? properties}) {
throw UnimplementedError();
}
@override
Future<bool> getThreadDetailStatus() {
return Future.sync(() async {
final localSetting = await _localSettingCacheManager.get([
SupportedLocalSetting.threadDetail,
]);
return (localSetting[SupportedLocalSetting.threadDetail]?.setting as ThreadDetailLocalSettingDetail?)?.value ?? true;
}).catchError(_exceptionThrower.throwException);
}
}
@@ -41,4 +41,9 @@ class ThreadDetailRemoteDataSourceImpl implements ThreadDetailDataSource {
);
}).catchError(exceptionThrower.throwException);
}
@override
Future<bool> getThreadDetailStatus() {
throw UnimplementedError();
}
}