feat(folders): Preserve feature state on server-side errors

This commit is contained in:
cogwheel0
2025-12-06 10:16:44 +05:30
parent 951a568fc1
commit 4e105270b8
4 changed files with 101 additions and 21 deletions

View File

@@ -327,6 +327,7 @@ class _ChatsDrawerState extends ConsumerState<ChatsDrawer> {
final showPinned = ref.watch(_showPinnedProvider);
final showFolders = ref.watch(_showFoldersProvider);
final showRecent = ref.watch(_showRecentProvider);
final foldersEnabled = ref.watch(foldersFeatureEnabledProvider);
final slivers = <Widget>[
if (pinned.isNotEmpty) ...[
@@ -347,12 +348,14 @@ class _ChatsDrawerState extends ConsumerState<ChatsDrawer> {
const SliverToBoxAdapter(child: SizedBox(height: Spacing.md)),
],
// Folders section (shown even if empty)
SliverPadding(
padding: const EdgeInsets.symmetric(horizontal: Spacing.md),
sliver: SliverToBoxAdapter(child: _buildFoldersSectionHeader()),
),
if (showFolders) ...[
// Folders section (hidden when feature is disabled server-side)
if (foldersEnabled) ...[
SliverPadding(
padding: const EdgeInsets.symmetric(horizontal: Spacing.md),
sliver: SliverToBoxAdapter(child: _buildFoldersSectionHeader()),
),
],
if (showFolders && foldersEnabled) ...[
const SliverToBoxAdapter(child: SizedBox(height: Spacing.xs)),
if (_isDragging && _draggingHasFolder) ...[
SliverPadding(
@@ -586,14 +589,18 @@ class _ChatsDrawerState extends ConsumerState<ChatsDrawer> {
);
}
slivers.add(
SliverPadding(
padding: const EdgeInsets.symmetric(horizontal: Spacing.md),
sliver: SliverToBoxAdapter(child: _buildFoldersSectionHeader()),
),
);
// Folders section (hidden when feature is disabled server-side)
final foldersEnabled = ref.watch(foldersFeatureEnabledProvider);
if (foldersEnabled) {
slivers.add(
SliverPadding(
padding: const EdgeInsets.symmetric(horizontal: Spacing.md),
sliver: SliverToBoxAdapter(child: _buildFoldersSectionHeader()),
),
);
}
if (showFolders) {
if (showFolders && foldersEnabled) {
slivers.add(
const SliverToBoxAdapter(child: SizedBox(height: Spacing.xs)),
);