content: import 'package:hooks_riverpod/hooks_riverpod.dart';
  import 'package:spotube/models/metadata/metadata.dart';
  import 'package:spotube/models/playback/track_sources.dart';
  import 'package:spotube/provider/audio_player/audio_player.dart';
  import 'package:spotube/provider/server/track_sources.dart';
  import 'package:spotube/services/sourced_track/sourced_track.dart';
  
  final activeTrackSourcesProvider = FutureProvider<
      ({
        SourcedTrack? source,
        TrackSourcesNotifier? notifier,
        SpotubeTrackObject track,
      })?>((ref) async {
    final audioPlayerState = ref.watch(audioPlayerProvider);
  
    if (audioPlayerState.activeTrack == null) {
      return null;
    }
  
    if (audioPlayerState.activeTrack is SpotubeLocalTrackObject) {
      return (
        source: null,
        notifier: null,
        track: audioPlayerState.activeTrack!,
      );
    }
  
    final trackQuery = TrackSourceQuery.fromTrack(
      audioPlayerState.activeTrack! as SpotubeFullTrackObject,
    );
  
    final sourcedTrack = await ref.watch(trackSourcesProvider(trackQuery).future);
    final sourcedTrackNotifier = ref.watch(
      trackSourcesProvider(trackQuery).notifier,
    );
  
    return (
      source: sourcedTrack,
      track: audioPlayerState.activeTrack!,
      notifier: sourcedTrackNotifier,
    );
  });
  