GroupsBloc constructor

GroupsBloc({
  1. GetGroupsUseCase? getGroupsUseCase,
  2. LoadMoreGroupsUseCase? loadMoreGroupsUseCase,
  3. GetLoggedInUserUseCase? getLoggedInUserUseCase,
  4. 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();
}