feat(folders): Improve folder management and parsing logic

This commit is contained in:
cogwheel0
2025-11-01 15:04:50 +05:30
parent a005c14a67
commit 073e0cf458
4 changed files with 131 additions and 39 deletions

View File

@@ -770,8 +770,10 @@ class _ChatsDrawerState extends ConsumerState<ChatsDrawer> {
try {
final api = ref.read(apiServiceProvider);
if (api == null) throw Exception('No API service');
await api.createFolder(name: name);
final created = await api.createFolder(name: name);
final folder = Folder.fromJson(Map<String, dynamic>.from(created));
HapticFeedback.lightImpact();
ref.read(foldersProvider.notifier).upsertFolder(folder);
refreshConversationsCache(ref, includeFolders: true);
} catch (e, stackTrace) {
if (!mounted) return;
@@ -1094,6 +1096,13 @@ class _ChatsDrawerState extends ConsumerState<ChatsDrawer> {
if (api == null) throw Exception('No API service');
await api.updateFolder(folderId, name: newName);
HapticFeedback.selectionClick();
ref
.read(foldersProvider.notifier)
.updateFolder(
folderId,
(folder) =>
folder.copyWith(name: newName, updatedAt: DateTime.now()),
);
refreshConversationsCache(ref, includeFolders: true);
} catch (e, stackTrace) {
if (!mounted) return;
@@ -1129,6 +1138,7 @@ class _ChatsDrawerState extends ConsumerState<ChatsDrawer> {
if (api == null) throw Exception('No API service');
await api.deleteFolder(folderId);
HapticFeedback.mediumImpact();
ref.read(foldersProvider.notifier).removeFolder(folderId);
refreshConversationsCache(ref, includeFolders: true);
} catch (e, stackTrace) {
if (!mounted) return;