mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-19 11:43:32 +00:00
55 lines
1.2 KiB
Dart
55 lines
1.2 KiB
Dart
import 'package:result_monad/result_monad.dart';
|
|
|
|
import '../../models/exec_error.dart';
|
|
import '../../models/group_data.dart';
|
|
import '../interfaces/groups_repo.intf.dart';
|
|
|
|
class MemoryGroupsRepo implements IGroupsRepo {
|
|
final _groupsForConnection = <String, List<GroupData>>{};
|
|
final _myGroups = <GroupData>{};
|
|
|
|
@override
|
|
Result<List<GroupData>, ExecError> getGroupsForUser(String id) {
|
|
if (!_groupsForConnection.containsKey(id)) {
|
|
return Result.error(ExecError(
|
|
type: ErrorType.notFound,
|
|
message: '$id not a known user ID',
|
|
));
|
|
}
|
|
|
|
return Result.ok(_groupsForConnection[id]!);
|
|
}
|
|
|
|
@override
|
|
List<GroupData> getMyGroups() {
|
|
return _myGroups.toList();
|
|
}
|
|
|
|
@override
|
|
void clearMyGroups() {
|
|
_myGroups.clear();
|
|
}
|
|
|
|
@override
|
|
void addAllGroups(List<GroupData> groups) {
|
|
_myGroups.addAll(groups);
|
|
}
|
|
|
|
@override
|
|
bool updateConnectionGroupData(String id, List<GroupData> currentGroups) {
|
|
_groupsForConnection[id] = currentGroups;
|
|
return true;
|
|
}
|
|
|
|
@override
|
|
void upsertGroup(GroupData group) {
|
|
_myGroups.remove(group);
|
|
_myGroups.add(group);
|
|
}
|
|
|
|
@override
|
|
void deleteGroup(GroupData group) {
|
|
_groupsForConnection.remove(group.id);
|
|
_myGroups.remove(group);
|
|
}
|
|
}
|