Compare commits

...
5 changed files with 70 additions and 54 deletions
@@ -457,16 +457,17 @@ class SpaceManagementBloc extends Bloc<SpaceManagementEvent, SpaceManagementStat
emit(SpaceManagementLoading()); emit(SpaceManagementLoading());
try { try {
final spaceTreeState = event.context.read<SpaceTreeBloc>().state;
final updatedSpaces = final updatedSpaces =
await saveSpacesHierarchically(event.context, event.spaces, event.communityUuid); await saveSpacesHierarchically(event.context, event.spaces, event.communityUuid);
final allSpaces = await _fetchSpacesForCommunity(event.communityUuid); final allSpaces = await _fetchSpacesForCommunity(event.communityUuid);
emit(SpaceCreationSuccess(spaces: updatedSpaces)); emit(SpaceCreationSuccess(spaces: updatedSpaces));
if (previousState is SpaceManagementLoaded) { if (previousState is SpaceManagementLoaded) {
await _updateLoadedState( await _updateLoadedState(
event.context, spaceTreeState,
previousState, previousState,
allSpaces, allSpaces,
event.communityUuid, event.communityUuid,
@@ -483,35 +484,39 @@ class SpaceManagementBloc extends Bloc<SpaceManagementEvent, SpaceManagementStat
} }
Future<void> _updateLoadedState( Future<void> _updateLoadedState(
BuildContext context, SpaceTreeState spaceTreeState,
SpaceManagementLoaded previousState, SpaceManagementLoaded previousState,
List<SpaceModel> allSpaces, List<SpaceModel> allSpaces,
String communityUuid, String communityUuid,
Emitter<SpaceManagementState> emit, Emitter<SpaceManagementState> emit,
) async { ) async {
var prevSpaceModels = await fetchSpaceModels(); try {
await fetchTags(); var prevSpaceModels = await fetchSpaceModels();
final spaceTreeState = context.read<SpaceTreeBloc>().state;
final communities = spaceTreeState.searchQuery.isNotEmpty
? spaceTreeState.filteredCommunity
: spaceTreeState.communityList;
for (var community in communities) { await fetchTags();
if (community.uuid == communityUuid) {
community.spaces = allSpaces;
_spaceTreeBloc.add(InitialEvent());
emit(SpaceManagementLoaded( final communities = spaceTreeState.searchQuery.isNotEmpty
? spaceTreeState.filteredCommunity
: spaceTreeState.communityList;
for (var community in communities) {
if (community.uuid == communityUuid) {
community.spaces = allSpaces;
_spaceTreeBloc.add(InitialEvent());
emit(SpaceManagementLoaded(
communities: communities, communities: communities,
products: _cachedProducts ?? [], products: _cachedProducts ?? [],
selectedCommunity: community, selectedCommunity: community,
selectedSpace: null, selectedSpace: null,
spaceModels: prevSpaceModels, spaceModels: prevSpaceModels,
allTags: _cachedTags ?? [])); allTags: _cachedTags ?? [],
return; ));
} else { return;
print("Community not found"); }
} }
} catch (e, stackTrace) {
rethrow;
} }
} }
@@ -53,6 +53,9 @@ class SpaceManagementPageState extends State<SpaceManagementPage> {
builder: (context, state) { builder: (context, state) {
if (state is SpaceManagementLoading) { if (state is SpaceManagementLoading) {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
}
if (state is SpaceManagementInitial) {
return const Center(child: CircularProgressIndicator());
} else if (state is BlankState) { } else if (state is BlankState) {
return LoadedSpaceView( return LoadedSpaceView(
communities: state.communities, communities: state.communities,
@@ -526,6 +526,8 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
isNameFieldInvalid = true; isNameFieldInvalid = true;
}); });
return; return;
} else if (isNameFieldExist) {
return;
} else { } else {
String newName = enteredName.isNotEmpty ? enteredName : (widget.name ?? ''); String newName = enteredName.isNotEmpty ? enteredName : (widget.name ?? '');
if (newName.isNotEmpty) { if (newName.isNotEmpty) {
@@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_event.dart';
import 'package:syncrow_web/pages/space_tree/view/space_tree_view.dart'; import 'package:syncrow_web/pages/space_tree/view/space_tree_view.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_event.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_event.dart';
@@ -2,10 +2,10 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/common/widgets/empty_search_result_widget.dart';
import 'package:syncrow_web/common/widgets/search_bar.dart'; import 'package:syncrow_web/common/widgets/search_bar.dart';
import 'package:syncrow_web/common/widgets/sidebar_communities_list.dart'; import 'package:syncrow_web/common/widgets/sidebar_communities_list.dart';
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_state.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_event.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_event.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/community_model.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/community_model.dart';
@@ -114,41 +114,48 @@ class _SidebarWidgetState extends State<SidebarWidget> {
return Container( return Container(
width: _width, width: _width,
decoration: subSectionContainerDecoration, decoration: subSectionContainerDecoration,
child: Column( child: spaceTreeState is SpaceTreeLoadingState
mainAxisSize: MainAxisSize.min, ? const Center(child: CircularProgressIndicator())
crossAxisAlignment: CrossAxisAlignment.start, : Column(
children: [ mainAxisSize: MainAxisSize.min,
SidebarHeader(onAddCommunity: _onAddCommunity), crossAxisAlignment: CrossAxisAlignment.start,
CustomSearchBar( children: [
onSearchChanged: _onSearchChanged, SidebarHeader(onAddCommunity: _onAddCommunity),
), CustomSearchBar(
const SizedBox(height: 16), onSearchChanged: _onSearchChanged,
Expanded( ),
child: Visibility( const SizedBox(height: 16),
visible: filteredCommunities.isNotEmpty, Expanded(
replacement: const EmptySearchResultWidget(), child: Builder(
child: SidebarCommunitiesList( builder: (_) {
scrollController: _scrollController, return SidebarCommunitiesList(
onScrollToEnd: () {}, scrollController: _scrollController,
communities: filteredCommunities, onScrollToEnd: () {},
itemBuilder: (context, index) { communities: filteredCommunities,
if (index == filteredCommunities.length) { itemBuilder: (context, index) {
final spaceTreeState = context.read<SpaceTreeBloc>().state; if (index == filteredCommunities.length) {
if (spaceTreeState.paginationIsLoading) { final spaceTreeState = context.read<SpaceTreeBloc>().state;
return const Padding( if (spaceTreeState.paginationIsLoading) {
padding: EdgeInsets.all(8.0), return const Padding(
child: Center(child: CircularProgressIndicator()), padding: EdgeInsets.all(8.0),
); child: Center(child: CircularProgressIndicator()),
} else { );
return const SizedBox.shrink(); } else {
} return const SizedBox.shrink();
} }
return _buildCommunityTile(context, filteredCommunities[index]); }
}), return _buildCommunityTile(context, filteredCommunities[index]);
},
);
},
),
),
if (spaceTreeState.paginationIsLoading || spaceTreeState.isSearching)
Center(
child: CircularProgressIndicator(),
)
],
), ),
),
],
),
); );
} }