import 'dart:typed_data'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/supabase/supabase_providers.dart'; import '../../data/services/post_service.dart'; import '../../domain/models/feed_post_model.dart'; final postServiceProvider = Provider((ref) { final client = ref.watch(supabaseProvider); return PostService(client); }); final feedPostsProvider = FutureProvider>((ref) { return ref.watch(postServiceProvider).fetchFeed(); }); final postControllerProvider = AutoDisposeAsyncNotifierProvider( PostController.new, ); class PostController 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(postServiceProvider).uploadPost( 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(postServiceProvider).toggleLike( postId: post.id, currentlyLiked: post.isLiked, currentLikesCount: post.likesCount, ); ref.invalidate(feedPostsProvider); }); } Future deletePost(String postId) async { state = const AsyncLoading(); state = await AsyncValue.guard(() async { await ref.read(postServiceProvider).deletePost(postId); ref.invalidate(feedPostsProvider); }); } }