4
2
Fork 0
frontend_flutter/lib/src/blocs/conversation_bloc.dart

47 lines
1.2 KiB
Dart
Raw Normal View History

2019-02-17 09:34:39 +08:00
import "package:rxdart/rxdart.dart";
import "../resources/conversation_api_provider.dart";
2019-02-17 09:34:39 +08:00
import "../models/user_model.dart";
import "../models/conversation_model.dart";
class ConversationsBloc {
final _provider = ConversationApiProvider();
2019-02-17 09:34:39 +08:00
final _conversationsFetcher = PublishSubject<List<Conversation>>();
Observable<List<Conversation>> get conversations =>
_conversationsFetcher.stream;
fetchConversations() async {
List<Conversation> conversationList = await _provider.fetchConversations();
print(conversationList);
2019-02-17 09:34:39 +08:00
_conversationsFetcher.sink.add(conversationList);
}
dispose() {
_conversationsFetcher.close();
}
}
2019-05-25 09:46:21 +08:00
// Should be a scoped widget
2019-02-17 09:34:39 +08:00
class ConversationMembersBloc {
final String conversationId;
final _provider = ConversationApiProvider();
2019-02-17 09:34:39 +08:00
final _membersFetcher = PublishSubject<List<User>>();
ConversationMembersBloc(this.conversationId);
Observable<List<User>> get members => _membersFetcher.stream;
fetchMembers() async {
List<User> memberList =
await _provider.fetchConversationMembers(conversationId);
2019-02-17 09:34:39 +08:00
_membersFetcher.sink.add(memberList);
}
dispose() {
_membersFetcher.close();
}
}
2019-05-25 09:46:21 +08:00
final conversationsBloc = ConversationsBloc();