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 'package:just_audio/just_audio.dart';
import '../../../../core/supabase/supabase_providers.dart';
import '../../data/services/music_service.dart';
import '../../domain/models/track_model.dart';
final musicServiceProvider = Provider<MusicService>((ref) {
final client = ref.watch(supabaseProvider);
return MusicService(client);
});
final trackListProvider = FutureProvider<List<TrackModel>>((ref) {
return ref.watch(musicServiceProvider).fetchTracks();
});
final userTracksProvider = FutureProvider.family<List<TrackModel>, String>((ref, userId) {
return ref.watch(musicServiceProvider).fetchUserTracks(userId);
});
final musicControllerProvider = AutoDisposeAsyncNotifierProvider<MusicController, void>(
MusicController.new,
);
class MusicController extends AutoDisposeAsyncNotifier<void> {
@override
Future<void> build() async {}
Future<void> uploadTrack({
required Uint8List bytes,
required String title,
required String genreTag,
required String extension,
}) async {
state = const AsyncLoading();
state = await AsyncValue.guard(() async {
await ref.read(musicServiceProvider).uploadTrack(
bytes: bytes,
title: title,
genreTag: genreTag,
extension: extension,
);
ref.invalidate(trackListProvider);
});
}
Future<void> incrementPlays(String trackId) async {
await AsyncValue.guard(() => ref.read(musicServiceProvider).incrementPlays(trackId));
}
}
final audioPlayerProvider = Provider.autoDispose<AudioPlayer>((ref) {
final player = AudioPlayer();
ref.onDispose(player.dispose);
return player;
});
final currentTrackProvider = StateProvider<TrackModel?>((ref) => null);
final isPlayingProvider = StreamProvider<bool>((ref) {
final player = ref.watch(audioPlayerProvider);
return player.playingStream;
});