GroupsBloc constructor
GroupsBloc({
- GetGroupsUseCase? getGroupsUseCase,
- LoadMoreGroupsUseCase? loadMoreGroupsUseCase,
- GetLoggedInUserUseCase? getLoggedInUserUseCase,
- bool disableSDKListeners = false,
Creates a GroupsBloc.
All use cases are optional - if not provided, they will be automatically initialized from the default service locator. This makes it easy to extend the bloc without worrying about dependency injection.
Requirements: 1.1, 1.2
Implementation
GroupsBloc({
GetGroupsUseCase? getGroupsUseCase,
LoadMoreGroupsUseCase? loadMoreGroupsUseCase,
GetLoggedInUserUseCase? getLoggedInUserUseCase,
this.disableSDKListeners = false,
}) : getGroupsUseCase =
getGroupsUseCase ?? _getServiceLocator().getGroupsUseCase,
loadMoreGroupsUseCase =
loadMoreGroupsUseCase ?? _getServiceLocator().loadMoreGroupsUseCase,
getLoggedInUserUseCase =
getLoggedInUserUseCase ?? _getServiceLocator().getLoggedInUserUseCase,
super(const GroupsInitial()) {
// Register event handlers (Requirement 1.2)
on<LoadGroups>(_onLoadGroups);
on<LoadMoreGroups>(_onLoadMoreGroups);
on<RefreshGroups>(_onRefreshGroups);
on<SearchGroups>(_onSearchGroups);
on<ToggleGroupSelection>(_onToggleGroupSelection);
on<ClearGroupSelection>(_onClearGroupSelection);
on<UpdateGroup>(_onUpdateGroup);
on<AddGroup>(_onAddGroup);
on<RemoveGroup>(_onRemoveGroup);
// Internal events for SDK listeners (will be implemented in Task 5.6)
on<GroupCreated>(_onGroupCreated);
on<GroupMemberJoined>(_onGroupMemberJoined);
on<GroupMemberLeft>(_onGroupMemberLeft);
on<GroupMemberKicked>(_onGroupMemberKicked);
on<GroupMemberBanned>(_onGroupMemberBanned);
on<GroupMemberUnbanned>(_onGroupMemberUnbanned);
on<GroupMemberScopeChanged>(_onGroupMemberScopeChanged);
on<GroupOwnershipTransferred>(_onGroupOwnershipTransferred);
on<ConnectionRestored>(_onConnectionRestored);
on<InitializeLoggedInUser>(_onInitializeLoggedInUser);
// Internal event for list state changes
on<_ListStateChanged>(_onListStateChanged);
// Internal events for search functionality (Requirement 7.1, 7.2, 7.3)
on<_ExecuteSearch>(_onExecuteSearch);
on<_RestoreOriginalGroups>(_onRestoreOriginalGroups);
// Initialize and register SDK listeners
_initializeAndRegisterListeners();
}