import 'dart:typed_data'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/supabase/supabase_providers.dart'; import '../../data/services/feed_service.dart'; import '../../domain/models/feed_post_model.dart'; final feedServiceProvider = Provider((ref) { final client = ref.watch(supabaseProvider); return FeedService(client); }); final feedPostsProvider = FutureProvider>((ref) { return ref.watch(feedServiceProvider).fetchFeed(); }); final feedControllerProvider = AutoDisposeAsyncNotifierProvider( FeedController.new, ); class FeedController extends AutoDisposeAsyncNotifier { @override Future build() async {} Future createPost({ required String caption, required Uint8List imageBytes, required String extension, }) async { state = const AsyncLoading(); state = await AsyncValue.guard(() async { await ref.read(feedServiceProvider).createPost( caption: caption, imageBytes: imageBytes, extension: extension, ); ref.invalidate(feedPostsProvider); }); } Future toggleLike(FeedPostModel post) async { state = const AsyncLoading(); state = await AsyncValue.guard(() async { await ref.read(feedServiceProvider).toggleLike( postId: post.id, currentlyLiked: post.isLiked, currentLikesCount: post.likesCount, ); ref.invalidate(feedPostsProvider); }); } Future deleteOwnPost(String postId) async { state = const AsyncLoading(); state = await AsyncValue.guard(() async { await ref.read(feedServiceProvider).deleteOwnPost(postId); ref.invalidate(feedPostsProvider); }); } }