first commit

This commit is contained in:
Lucas Saburido
2026-05-13 16:26:45 +01:00
commit cabf2025cd
252 changed files with 13524 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
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<FeedService>((ref) {
final client = ref.watch(supabaseProvider);
return FeedService(client);
});
final feedPostsProvider = FutureProvider<List<FeedPostModel>>((ref) {
return ref.watch(feedServiceProvider).fetchFeed();
});
final feedControllerProvider =
AutoDisposeAsyncNotifierProvider<FeedController, void>(
FeedController.new,
);
class FeedController extends AutoDisposeAsyncNotifier<void> {
@override
Future<void> build() async {}
Future<void> 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<void> 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<void> deleteOwnPost(String postId) async {
state = const AsyncLoading();
state = await AsyncValue.guard(() async {
await ref.read(feedServiceProvider).deleteOwnPost(postId);
ref.invalidate(feedPostsProvider);
});
}
}

View File

@@ -0,0 +1,59 @@
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<PostService>((ref) {
final client = ref.watch(supabaseProvider);
return PostService(client);
});
final feedPostsProvider = FutureProvider<List<FeedPostModel>>((ref) {
return ref.watch(postServiceProvider).fetchFeed();
});
final postControllerProvider = AutoDisposeAsyncNotifierProvider<PostController, void>(
PostController.new,
);
class PostController extends AutoDisposeAsyncNotifier<void> {
@override
Future<void> build() async {}
Future<void> 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<void> 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<void> deletePost(String postId) async {
state = const AsyncLoading();
state = await AsyncValue.guard(() async {
await ref.read(postServiceProvider).deletePost(postId);
ref.invalidate(feedPostsProvider);
});
}
}