Skip to content

Commit

Permalink
update chat thread usecase
Browse files Browse the repository at this point in the history
  • Loading branch information
Dat-TG committed Dec 15, 2023
1 parent cfb7a6b commit 0ed5c59
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 6 deletions.
9 changes: 3 additions & 6 deletions lib/data/local/datasources/message/message_datasource.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import 'package:boilerplate/core/data/local/sembast/sembast_client.dart';
import 'package:boilerplate/data/local/constants/db_constants.dart';
import 'package:boilerplate/domain/entity/message/chat_thread.dart';
import 'package:boilerplate/domain/entity/post/post.dart';
import 'package:boilerplate/domain/entity/post/post_list.dart';
import 'package:sembast/sembast.dart';

class MessageDataSource {
Expand Down Expand Up @@ -87,13 +86,11 @@ class MessageDataSource {
return chatThread;
}

Future<int> update(Post post) async {
// For filtering by key (ID), RegEx, greater than, and many other criteria,
// we use a Finder.
final finder = Finder(filter: Filter.byKey(post.id));
Future<int> updateChatThread(ChatThread chatThread) async {
final finder = Finder(filter: Filter.byKey(chatThread.id));
return await _messageStore.update(
_sembastClient.database,
post.toMap(),
chatThread.toMap(),
finder: finder,
);
}
Expand Down
6 changes: 6 additions & 0 deletions lib/data/repository/message/message_repository_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ class MessageRepositoryImpl extends MessageRepository {
.then((id) => id)
.catchError((error) => throw error);

@override
Future<int> updateChatThread(ChatThread chatThread) => _messageDataSource
.updateChatThread(chatThread)
.then((id) => id)
.catchError((error) => throw error);

@override
Future<List<ChatThread>> getAllChatThreads() => _messageDataSource
.getAllChatThreads()
Expand Down
5 changes: 5 additions & 0 deletions lib/domain/di/module/usecase_module.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:boilerplate/domain/usecase/message/get_all_chat_threads_usecase.
import 'package:boilerplate/domain/usecase/message/get_chat_thread_by_id_usecase.dart';
import 'package:boilerplate/domain/usecase/message/save_chat_thread_usecase.dart';
import 'package:boilerplate/domain/usecase/message/send_message_usecase.dart';
import 'package:boilerplate/domain/usecase/message/update_chat_thread_usecase.dart';
import 'package:boilerplate/domain/usecase/post/delete_post_usecase.dart';
import 'package:boilerplate/domain/usecase/post/find_post_by_id_usecase.dart';
import 'package:boilerplate/domain/usecase/post/get_post_usecase.dart';
Expand Down Expand Up @@ -55,6 +56,10 @@ mixin UseCaseModule {
SaveChatThreadUseCase(getIt<MessageRepository>()),
);

getIt.registerSingleton<UpdateChatThreadUseCase>(
UpdateChatThreadUseCase(getIt<MessageRepository>()),
);

getIt.registerSingleton<GetAllChatThreadsUseCase>(
GetAllChatThreadsUseCase(getIt<MessageRepository>()),
);
Expand Down
2 changes: 2 additions & 0 deletions lib/domain/repository/message/message_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ abstract class MessageRepository {
Future<int> saveChatThread(ChatThread chatThread);

Future<List<ChatThread>> getAllChatThreads();

Future<int> updateChatThread(ChatThread chatThread);
}
14 changes: 14 additions & 0 deletions lib/domain/usecase/message/update_chat_thread_usecase.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import 'package:boilerplate/core/domain/usecase/use_case.dart';
import 'package:boilerplate/domain/entity/message/chat_thread.dart';
import 'package:boilerplate/domain/repository/message/message_repository.dart';

class UpdateChatThreadUseCase extends UseCase<int, ChatThread> {
final MessageRepository _messageRepository;

UpdateChatThreadUseCase(this._messageRepository);

@override
Future<int> call({required ChatThread params}) {
return _messageRepository.updateChatThread(params);
}
}
4 changes: 4 additions & 0 deletions lib/presentation/chat_screen/store/chat_store.dart
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,10 @@ abstract class _ChatStore with Store {
.messages
.map((e) => e.message)
.toList();
chatThreads
.firstWhere((element) => element.id == id)
.messages
.add(MessageWithTime(message, time));
final future = _sendMessageUseCase.call(params: [...messages, message]);
sendMessageFuture = ObservableFuture(future);

Expand Down

0 comments on commit 0ed5c59

Please sign in to comment.