From d9829ee4a7eb452d2f51e84e83d2b8049714cda5 Mon Sep 17 00:00:00 2001 From: cogwheel0 <172976095+cogwheel0@users.noreply.github.com> Date: Tue, 30 Sep 2025 14:42:27 +0530 Subject: [PATCH] =?UTF-8?q?refactor:=20migrate=20Phase=203=20family=20prov?= =?UTF-8?q?iders=20(2-4/4)=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migrated remaining family providers to @riverpod functions: - serverSearchProvider → serverSearch(query) - fileContentProvider → fileContent(fileId) - knowledgeBaseItemsProvider → knowledgeBaseItems(kbId) All provider names unchanged. Usage: ref.watch(providerName(parameter)) Phase 3 Complete! --- lib/core/providers/app_providers.dart | 63 +++++++++++++-------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/lib/core/providers/app_providers.dart b/lib/core/providers/app_providers.dart index 3c53a35..ebe9aef 100644 --- a/lib/core/providers/app_providers.dart +++ b/lib/core/providers/app_providers.dart @@ -1201,10 +1201,8 @@ class SearchQuery extends _$SearchQuery { } // Server-side search provider for chats -final serverSearchProvider = FutureProvider.family, String>(( - ref, - query, -) async { +@riverpod +Future> serverSearch(Ref ref, String query) async { if (query.trim().isEmpty) { // Return empty list for empty query instead of all conversations return []; @@ -1312,7 +1310,7 @@ final serverSearchProvider = FutureProvider.family, String>(( )); }).toList(); } -}); +} final filteredConversationsProvider = Provider>((ref) { final conversations = ref.watch(conversationsProvider); @@ -1566,10 +1564,8 @@ Future> userFiles(Ref ref) async { } // File content provider -final fileContentProvider = FutureProvider.family(( - ref, - fileId, -) async { +@riverpod +Future fileContent(Ref ref, String fileId) async { // Protected: require authentication if (!ref.read(isAuthenticatedProvider2)) { DebugLogger.log('skip-unauthed', scope: 'files/content'); @@ -1589,7 +1585,7 @@ final fileContentProvider = FutureProvider.family(( ); throw Exception('Failed to load file content: $e'); } -}); +} // Knowledge Base providers @riverpod @@ -1611,30 +1607,31 @@ Future> knowledgeBases(Ref ref) async { } } -final knowledgeBaseItemsProvider = - FutureProvider.family, String>((ref, kbId) async { - // Protected: require authentication - if (!ref.read(isAuthenticatedProvider2)) { - DebugLogger.log('skip-unauthed', scope: 'knowledge/items'); - return []; - } - final api = ref.watch(apiServiceProvider); - if (api == null) return []; +@riverpod +Future> knowledgeBaseItems( + Ref ref, + String kbId, +) async { + // Protected: require authentication + if (!ref.read(isAuthenticatedProvider2)) { + DebugLogger.log('skip-unauthed', scope: 'knowledge/items'); + return []; + } + final api = ref.watch(apiServiceProvider); + if (api == null) return []; - try { - final itemsData = await api.getKnowledgeBaseItems(kbId); - return itemsData - .map((data) => KnowledgeBaseItem.fromJson(data)) - .toList(); - } catch (e) { - DebugLogger.error( - 'knowledge-items-failed', - scope: 'knowledge', - error: e, - ); - return []; - } - }); + try { + final itemsData = await api.getKnowledgeBaseItems(kbId); + return itemsData.map((data) => KnowledgeBaseItem.fromJson(data)).toList(); + } catch (e) { + DebugLogger.error( + 'knowledge-items-failed', + scope: 'knowledge', + error: e, + ); + return []; + } +} // Audio providers @riverpod