mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
refactor: rename providers
This commit is contained in:
parent
2781127da1
commit
57ccf16311
@ -92,7 +92,7 @@ class SeekIntent extends Intent {
|
|||||||
class SeekAction extends Action<SeekIntent> {
|
class SeekAction extends Action<SeekIntent> {
|
||||||
@override
|
@override
|
||||||
invoke(intent) async {
|
invoke(intent) async {
|
||||||
final playlist = intent.ref.read(ProxyPlaylistNotifier.provider);
|
final playlist = intent.ref.read(proxyPlaylistProvider);
|
||||||
if (playlist.isFetching) {
|
if (playlist.isFetching) {
|
||||||
DirectionalFocusAction().invoke(
|
DirectionalFocusAction().invoke(
|
||||||
DirectionalFocusIntent(
|
DirectionalFocusIntent(
|
||||||
|
@ -49,8 +49,7 @@ final routerProvider = Provider((ref) {
|
|||||||
GoRoute(
|
GoRoute(
|
||||||
path: "/",
|
path: "/",
|
||||||
redirect: (context, state) async {
|
redirect: (context, state) async {
|
||||||
final authNotifier =
|
final authNotifier = ref.read(authenticationProvider.notifier);
|
||||||
ref.read(AuthenticationNotifier.provider.notifier);
|
|
||||||
final json = await authNotifier.box.get(authNotifier.cacheKey);
|
final json = await authNotifier.box.get(authNotifier.cacheKey);
|
||||||
|
|
||||||
if (json?["cookie"] == null &&
|
if (json?["cookie"] == null &&
|
||||||
|
@ -28,10 +28,10 @@ class AlbumCard extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playing =
|
final playing =
|
||||||
useStream(audioPlayer.playingStream).data ?? audioPlayer.isPlaying;
|
useStream(audioPlayer.playingStream).data ?? audioPlayer.isPlaying;
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
bool isPlaylistPlaying = useMemoized(
|
bool isPlaylistPlaying = useMemoized(
|
||||||
() => playlist.containsCollection(album.id!),
|
() => playlist.containsCollection(album.id!),
|
||||||
|
@ -25,7 +25,7 @@ class ArtistCard extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
final isBlackListed = ref.watch(
|
final isBlackListed = ref.watch(
|
||||||
BlackListNotifier.provider.select(
|
blacklistProvider.select(
|
||||||
(blacklist) => blacklist.contains(
|
(blacklist) => blacklist.contains(
|
||||||
BlacklistedElement.artist(artist.id!, artist.name!),
|
BlacklistedElement.artist(artist.id!, artist.name!),
|
||||||
),
|
),
|
||||||
|
@ -14,8 +14,7 @@ class TokenLoginForm extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final authenticationNotifier =
|
final authenticationNotifier = ref.watch(authenticationProvider.notifier);
|
||||||
ref.watch(AuthenticationNotifier.provider.notifier);
|
|
||||||
final directCodeController = useTextEditingController();
|
final directCodeController = useTextEditingController();
|
||||||
final mounted = useIsMounted();
|
final mounted = useIsMounted();
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ class HomeNewReleasesSection extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
final newReleases = ref.watch(albumReleasesProvider);
|
final newReleases = ref.watch(albumReleasesProvider);
|
||||||
final newReleasesNotifier = ref.read(albumReleasesProvider.notifier);
|
final newReleasesNotifier = ref.read(albumReleasesProvider.notifier);
|
||||||
|
@ -22,7 +22,7 @@ class UserAlbums extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
final albumsQuery = ref.watch(favoriteAlbumsProvider);
|
final albumsQuery = ref.watch(favoriteAlbumsProvider);
|
||||||
final albumsQueryNotifier = ref.watch(favoriteAlbumsProvider.notifier);
|
final albumsQueryNotifier = ref.watch(favoriteAlbumsProvider.notifier);
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ class UserArtists extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
final artistQuery = ref.watch(followedArtistsProvider);
|
final artistQuery = ref.watch(followedArtistsProvider);
|
||||||
|
|
||||||
|
@ -138,8 +138,8 @@ class UserLocalTracks extends HookConsumerWidget {
|
|||||||
List<LocalTrack> tracks, {
|
List<LocalTrack> tracks, {
|
||||||
LocalTrack? currentTrack,
|
LocalTrack? currentTrack,
|
||||||
}) async {
|
}) async {
|
||||||
final playlist = ref.read(ProxyPlaylistNotifier.provider);
|
final playlist = ref.read(proxyPlaylistProvider);
|
||||||
final playback = ref.read(ProxyPlaylistNotifier.notifier);
|
final playback = ref.read(proxyPlaylistProvider.notifier);
|
||||||
currentTrack ??= tracks.first;
|
currentTrack ??= tracks.first;
|
||||||
final isPlaylistPlaying = playlist.containsTracks(tracks);
|
final isPlaylistPlaying = playlist.containsTracks(tracks);
|
||||||
if (!isPlaylistPlaying) {
|
if (!isPlaylistPlaying) {
|
||||||
@ -158,7 +158,7 @@ class UserLocalTracks extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final sortBy = useState<SortBy>(SortBy.none);
|
final sortBy = useState<SortBy>(SortBy.none);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final trackSnapshot = ref.watch(localTracksProvider);
|
final trackSnapshot = ref.watch(localTracksProvider);
|
||||||
final isPlaylistPlaying =
|
final isPlaylistPlaying =
|
||||||
playlist.containsTracks(trackSnapshot.asData?.value ?? []);
|
playlist.containsTracks(trackSnapshot.asData?.value ?? []);
|
||||||
|
@ -26,7 +26,7 @@ class UserPlaylists extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final searchText = useState('');
|
final searchText = useState('');
|
||||||
|
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
final playlistsQuery = ref.watch(favoritePlaylistsProvider);
|
final playlistsQuery = ref.watch(favoritePlaylistsProvider);
|
||||||
final playlistsQueryNotifier =
|
final playlistsQueryNotifier =
|
||||||
|
@ -43,8 +43,8 @@ class PlayerView extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
final currentTrack = ref.watch(ProxyPlaylistNotifier.provider.select(
|
final currentTrack = ref.watch(proxyPlaylistProvider.select(
|
||||||
(value) => value.activeTrack,
|
(value) => value.activeTrack,
|
||||||
));
|
));
|
||||||
final isLocalTrack = currentTrack is LocalTrack;
|
final isLocalTrack = currentTrack is LocalTrack;
|
||||||
@ -307,12 +307,11 @@ class PlayerView extends HookConsumerWidget {
|
|||||||
builder: (context) => Consumer(
|
builder: (context) => Consumer(
|
||||||
builder: (context, ref, _) {
|
builder: (context, ref, _) {
|
||||||
final playlist = ref.watch(
|
final playlist = ref.watch(
|
||||||
ProxyPlaylistNotifier
|
proxyPlaylistProvider,
|
||||||
.provider,
|
|
||||||
);
|
);
|
||||||
final playlistNotifier =
|
final playlistNotifier =
|
||||||
ref.read(
|
ref.read(
|
||||||
ProxyPlaylistNotifier
|
proxyPlaylistProvider
|
||||||
.notifier,
|
.notifier,
|
||||||
);
|
);
|
||||||
return PlayerQueue
|
return PlayerQueue
|
||||||
|
@ -33,7 +33,7 @@ class PlayerActions extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final isLocalTrack = playlist.activeTrack is LocalTrack;
|
final isLocalTrack = playlist.activeTrack is LocalTrack;
|
||||||
ref.watch(downloadManagerProvider);
|
ref.watch(downloadManagerProvider);
|
||||||
final downloader = ref.watch(downloadManagerProvider.notifier);
|
final downloader = ref.watch(downloadManagerProvider.notifier);
|
||||||
@ -46,9 +46,9 @@ class PlayerActions extends HookConsumerWidget {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
final localTracks = [] /* ref.watch(localTracksProvider).value */;
|
final localTracks = [] /* ref.watch(localTracksProvider).value */;
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
final sleepTimer = ref.watch(SleepTimerNotifier.provider);
|
final sleepTimer = ref.watch(sleepTimerProvider);
|
||||||
final sleepTimerNotifier = ref.watch(SleepTimerNotifier.notifier);
|
final sleepTimerNotifier = ref.watch(sleepTimerProvider.notifier);
|
||||||
|
|
||||||
final isDownloaded = useMemoized(() {
|
final isDownloaded = useMemoized(() {
|
||||||
return localTracks.any(
|
return localTracks.any(
|
||||||
|
@ -43,8 +43,8 @@ class PlayerControls extends HookConsumerWidget {
|
|||||||
SeekIntent: SeekAction(),
|
SeekIntent: SeekAction(),
|
||||||
},
|
},
|
||||||
[]);
|
[]);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
final playing =
|
final playing =
|
||||||
useStream(audioPlayer.playingStream).data ?? audioPlayer.isPlaying;
|
useStream(audioPlayer.playingStream).data ?? audioPlayer.isPlaying;
|
||||||
|
@ -24,8 +24,8 @@ class PlayerOverlay extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final canShow = playlist.activeTrack != null;
|
final canShow = playlist.activeTrack != null;
|
||||||
|
|
||||||
final playing =
|
final playing =
|
||||||
|
@ -21,7 +21,7 @@ class PlayerTrackDetails extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
final mediaQuery = MediaQuery.of(context);
|
final mediaQuery = MediaQuery.of(context);
|
||||||
final playback = ref.watch(ProxyPlaylistNotifier.provider);
|
final playback = ref.watch(proxyPlaylistProvider);
|
||||||
|
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
|
@ -52,7 +52,7 @@ class SiblingTracksSheet extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final preferences = ref.watch(userPreferencesProvider);
|
final preferences = ref.watch(userPreferencesProvider);
|
||||||
|
|
||||||
final isSearching = useState(false);
|
final isSearching = useState(false);
|
||||||
|
@ -20,8 +20,8 @@ class PlaylistCard extends HookConsumerWidget {
|
|||||||
});
|
});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlistQueue = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlistQueue = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final playing =
|
final playing =
|
||||||
useStream(audioPlayer.playingStream).data ?? audioPlayer.isPlaying;
|
useStream(audioPlayer.playingStream).data ?? audioPlayer.isPlaying;
|
||||||
bool isPlaylistPlaying = useMemoized(
|
bool isPlaylistPlaying = useMemoized(
|
||||||
|
@ -31,8 +31,8 @@ class BottomPlayer extends HookConsumerWidget {
|
|||||||
final logger = getLogger(BottomPlayer);
|
final logger = getLogger(BottomPlayer);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final layoutMode =
|
final layoutMode =
|
||||||
ref.watch(userPreferencesProvider.select((s) => s.layoutMode));
|
ref.watch(userPreferencesProvider.select((s) => s.layoutMode));
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@ class SidebarFooter extends HookConsumerWidget {
|
|||||||
placeholder: ImagePlaceholder.artist,
|
placeholder: ImagePlaceholder.artist,
|
||||||
);
|
);
|
||||||
|
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
if (mediaQuery.mdAndDown) {
|
if (mediaQuery.mdAndDown) {
|
||||||
return IconButton(
|
return IconButton(
|
||||||
|
@ -14,7 +14,7 @@ class AnonymousFallback extends ConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final isLoggedIn = ref.watch(AuthenticationNotifier.provider) != null;
|
final isLoggedIn = ref.watch(authenticationProvider) != null;
|
||||||
|
|
||||||
if (isLoggedIn && child != null) return child!;
|
if (isLoggedIn && child != null) return child!;
|
||||||
return Center(
|
return Center(
|
||||||
|
@ -25,7 +25,7 @@ class HeartButton extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
if (auth == null) return const SizedBox.shrink();
|
if (auth == null) return const SizedBox.shrink();
|
||||||
|
|
||||||
|
@ -95,8 +95,8 @@ class TrackOptions extends HookConsumerWidget {
|
|||||||
WidgetRef ref,
|
WidgetRef ref,
|
||||||
Track track,
|
Track track,
|
||||||
) async {
|
) async {
|
||||||
final playback = ref.read(ProxyPlaylistNotifier.notifier);
|
final playback = ref.read(proxyPlaylistProvider.notifier);
|
||||||
final playlist = ref.read(ProxyPlaylistNotifier.provider);
|
final playlist = ref.read(proxyPlaylistProvider);
|
||||||
final spotify = ref.read(spotifyProvider);
|
final spotify = ref.read(spotifyProvider);
|
||||||
final query = "${track.name} Radio";
|
final query = "${track.name} Radio";
|
||||||
final pages =
|
final pages =
|
||||||
@ -159,12 +159,12 @@ class TrackOptions extends HookConsumerWidget {
|
|||||||
final router = GoRouter.of(context);
|
final router = GoRouter.of(context);
|
||||||
final ThemeData(:colorScheme) = Theme.of(context);
|
final ThemeData(:colorScheme) = Theme.of(context);
|
||||||
|
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playback = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playback = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
ref.watch(downloadManagerProvider);
|
ref.watch(downloadManagerProvider);
|
||||||
final downloadManager = ref.watch(downloadManagerProvider.notifier);
|
final downloadManager = ref.watch(downloadManagerProvider.notifier);
|
||||||
final blacklist = ref.watch(BlackListNotifier.provider);
|
final blacklist = ref.watch(blacklistProvider);
|
||||||
final me = ref.watch(meProvider);
|
final me = ref.watch(meProvider);
|
||||||
|
|
||||||
final favorites = useTrackToggleLike(track, ref);
|
final favorites = useTrackToggleLike(track, ref);
|
||||||
@ -257,11 +257,11 @@ class TrackOptions extends HookConsumerWidget {
|
|||||||
break;
|
break;
|
||||||
case TrackOptionValue.blacklist:
|
case TrackOptionValue.blacklist:
|
||||||
if (isBlackListed) {
|
if (isBlackListed) {
|
||||||
ref.read(BlackListNotifier.provider.notifier).remove(
|
ref.read(blacklistProvider.notifier).remove(
|
||||||
BlacklistedElement.track(track.id!, track.name!),
|
BlacklistedElement.track(track.id!, track.name!),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
ref.read(BlackListNotifier.provider.notifier).add(
|
ref.read(blacklistProvider.notifier).add(
|
||||||
BlacklistedElement.track(track.id!, track.name!),
|
BlacklistedElement.track(track.id!, track.name!),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ class TrackTile extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
|
|
||||||
final blacklist = ref.watch(BlackListNotifier.provider);
|
final blacklist = ref.watch(blacklistProvider);
|
||||||
|
|
||||||
final isBlackListed = useMemoized(
|
final isBlackListed = useMemoized(
|
||||||
() => blacklist.contains(
|
() => blacklist.contains(
|
||||||
|
@ -26,8 +26,8 @@ class TrackViewBodySection extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final props = InheritedTrackView.of(context);
|
final props = InheritedTrackView.of(context);
|
||||||
final trackViewState = ref.watch(trackViewProvider(props.tracks));
|
final trackViewState = ref.watch(trackViewProvider(props.tracks));
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ class TrackViewBodyOptions extends HookConsumerWidget {
|
|||||||
|
|
||||||
ref.watch(downloadManagerProvider);
|
ref.watch(downloadManagerProvider);
|
||||||
final downloader = ref.watch(downloadManagerProvider.notifier);
|
final downloader = ref.watch(downloadManagerProvider.notifier);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final audioSource =
|
final audioSource =
|
||||||
ref.watch(userPreferencesProvider.select((s) => s.audioSource));
|
ref.watch(userPreferencesProvider.select((s) => s.audioSource));
|
||||||
|
|
||||||
|
@ -18,8 +18,8 @@ class TrackViewHeaderActions extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final props = InheritedTrackView.of(context);
|
final props = InheritedTrackView.of(context);
|
||||||
|
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
final isActive = playlist.collections.contains(props.collectionId);
|
final isActive = playlist.collections.contains(props.collectionId);
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ class TrackViewHeaderActions extends HookConsumerWidget {
|
|||||||
|
|
||||||
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
||||||
|
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
return Row(
|
return Row(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
@ -26,8 +26,8 @@ class TrackViewHeaderButtons extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final props = InheritedTrackView.of(context);
|
final props = InheritedTrackView.of(context);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
final isActive = playlist.collections.contains(props.collectionId);
|
final isActive = playlist.collections.contains(props.collectionId);
|
||||||
|
|
||||||
|
@ -9,21 +9,20 @@ import 'package:spotube/provider/user_preferences/user_preferences_provider.dart
|
|||||||
import 'package:spotube/services/audio_player/audio_player.dart';
|
import 'package:spotube/services/audio_player/audio_player.dart';
|
||||||
|
|
||||||
void useEndlessPlayback(WidgetRef ref) {
|
void useEndlessPlayback(WidgetRef ref) {
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
final playback = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playback = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final spotify = ref.watch(spotifyProvider);
|
final spotify = ref.watch(spotifyProvider);
|
||||||
final endlessPlayback =
|
final endlessPlayback =
|
||||||
ref.watch(userPreferencesProvider.select((s) => s.endlessPlayback));
|
ref.watch(userPreferencesProvider.select((s) => s.endlessPlayback));
|
||||||
|
|
||||||
|
|
||||||
useEffect(
|
useEffect(
|
||||||
() {
|
() {
|
||||||
if (!endlessPlayback || auth == null) return null;
|
if (!endlessPlayback || auth == null) return null;
|
||||||
|
|
||||||
void listener(int index) async {
|
void listener(int index) async {
|
||||||
try {
|
try {
|
||||||
final playlist = ref.read(ProxyPlaylistNotifier.provider);
|
final playlist = ref.read(proxyPlaylistProvider);
|
||||||
if (index != playlist.tracks.length - 1) return;
|
if (index != playlist.tracks.length - 1) return;
|
||||||
|
|
||||||
final track = playlist.tracks.last;
|
final track = playlist.tracks.last;
|
||||||
@ -57,7 +56,7 @@ void useEndlessPlayback(WidgetRef ref) {
|
|||||||
await playback.addTracks(
|
await playback.addTracks(
|
||||||
tracks.toList()
|
tracks.toList()
|
||||||
..removeWhere((e) {
|
..removeWhere((e) {
|
||||||
final playlist = ref.read(ProxyPlaylistNotifier.provider);
|
final playlist = ref.read(proxyPlaylistProvider);
|
||||||
final isDuplicate = playlist.tracks.any((t) => t.id == e.id);
|
final isDuplicate = playlist.tracks.any((t) => t.id == e.id);
|
||||||
return e.id == track.id || isDuplicate;
|
return e.id == track.id || isDuplicate;
|
||||||
}),
|
}),
|
||||||
|
@ -15,8 +15,8 @@ void useInitSysTray(WidgetRef ref) {
|
|||||||
|
|
||||||
final initializeMenu = useCallback(() async {
|
final initializeMenu = useCallback(() async {
|
||||||
systemTray.value?.destroy();
|
systemTray.value?.destroy();
|
||||||
final playlist = ref.read(ProxyPlaylistNotifier.provider);
|
final playlist = ref.read(proxyPlaylistProvider);
|
||||||
final playlistQueue = ref.read(ProxyPlaylistNotifier.notifier);
|
final playlistQueue = ref.read(proxyPlaylistProvider.notifier);
|
||||||
final preferences = ref.read(userPreferencesProvider);
|
final preferences = ref.read(userPreferencesProvider);
|
||||||
if (!preferences.showSystemTrayIcon) {
|
if (!preferences.showSystemTrayIcon) {
|
||||||
await systemTray.value?.destroy();
|
await systemTray.value?.destroy();
|
||||||
@ -105,7 +105,7 @@ void useInitSysTray(WidgetRef ref) {
|
|||||||
useReassemble(initializeMenu);
|
useReassemble(initializeMenu);
|
||||||
|
|
||||||
ref.listen<ProxyPlaylist?>(
|
ref.listen<ProxyPlaylist?>(
|
||||||
ProxyPlaylistNotifier.provider,
|
proxyPlaylistProvider,
|
||||||
(previous, next) {
|
(previous, next) {
|
||||||
initializeMenu();
|
initializeMenu();
|
||||||
},
|
},
|
||||||
|
@ -38,8 +38,8 @@ class ArtistPageHeader extends HookConsumerWidget {
|
|||||||
xxl: textTheme.titleMedium,
|
xxl: textTheme.titleMedium,
|
||||||
);
|
);
|
||||||
|
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
final blacklist = ref.watch(BlackListNotifier.provider);
|
final blacklist = ref.watch(blacklistProvider);
|
||||||
final isBlackListed = blacklist.contains(
|
final isBlackListed = blacklist.contains(
|
||||||
BlacklistedElement.artist(artistId, artist.name!),
|
BlacklistedElement.artist(artistId, artist.name!),
|
||||||
);
|
);
|
||||||
@ -187,14 +187,12 @@ class ArtistPageHeader extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
if (isBlackListed) {
|
if (isBlackListed) {
|
||||||
ref
|
ref.read(blacklistProvider.notifier).remove(
|
||||||
.read(BlackListNotifier.provider.notifier)
|
|
||||||
.remove(
|
|
||||||
BlacklistedElement.artist(
|
BlacklistedElement.artist(
|
||||||
artist.id!, artist.name!),
|
artist.id!, artist.name!),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
ref.read(BlackListNotifier.provider.notifier).add(
|
ref.read(blacklistProvider.notifier).add(
|
||||||
BlacklistedElement.artist(
|
BlacklistedElement.artist(
|
||||||
artist.id!, artist.name!),
|
artist.id!, artist.name!),
|
||||||
);
|
);
|
||||||
|
@ -21,8 +21,8 @@ class ArtistPageTopTracks extends HookConsumerWidget {
|
|||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
||||||
|
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final topTracksQuery = ref.watch(artistTopTracksProvider(artistId));
|
final topTracksQuery = ref.watch(artistTopTracksProvider(artistId));
|
||||||
|
|
||||||
final isPlaylistPlaying = playlist.containsTracks(
|
final isPlaylistPlaying = playlist.containsTracks(
|
||||||
|
@ -16,9 +16,8 @@ class LoginTutorial extends ConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
ref.watch(AuthenticationNotifier.provider);
|
ref.watch(authenticationProvider);
|
||||||
final authenticationNotifier =
|
final authenticationNotifier = ref.watch(authenticationProvider.notifier);
|
||||||
ref.watch(AuthenticationNotifier.provider.notifier);
|
|
||||||
final key = GlobalKey<State<IntroductionScreen>>();
|
final key = GlobalKey<State<IntroductionScreen>>();
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class PlaylistGenerateResultPage extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final router = GoRouter.of(context);
|
final router = GoRouter.of(context);
|
||||||
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
final generatedPlaylist = ref.watch(generatePlaylistProvider(state));
|
final generatedPlaylist = ref.watch(generatePlaylistProvider(state));
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ class LyricsPage extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
String albumArt = useMemoized(
|
String albumArt = useMemoized(
|
||||||
() => (playlist.activeTrack?.album?.images).asUrlString(
|
() => (playlist.activeTrack?.album?.images).asUrlString(
|
||||||
index: (playlist.activeTrack?.album?.images?.length ?? 1) - 1,
|
index: (playlist.activeTrack?.album?.images?.length ?? 1) - 1,
|
||||||
@ -60,7 +60,7 @@ class LyricsPage extends HookConsumerWidget {
|
|||||||
const Spacer(),
|
const Spacer(),
|
||||||
Consumer(
|
Consumer(
|
||||||
builder: (context, ref, child) {
|
builder: (context, ref, child) {
|
||||||
final playback = ref.watch(ProxyPlaylistNotifier.provider);
|
final playback = ref.watch(proxyPlaylistProvider);
|
||||||
final lyric =
|
final lyric =
|
||||||
ref.watch(syncedLyricsProvider(playback.activeTrack));
|
ref.watch(syncedLyricsProvider(playback.activeTrack));
|
||||||
final providerName = lyric.asData?.value.provider;
|
final providerName = lyric.asData?.value.provider;
|
||||||
@ -80,7 +80,7 @@ class LyricsPage extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
if (auth == null) {
|
if (auth == null) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
@ -29,7 +29,7 @@ class MiniLyricsPage extends HookConsumerWidget {
|
|||||||
final update = useForceUpdate();
|
final update = useForceUpdate();
|
||||||
final wasMaximized = useRef<bool>(false);
|
final wasMaximized = useRef<bool>(false);
|
||||||
|
|
||||||
final playlistQueue = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlistQueue = ref.watch(proxyPlaylistProvider);
|
||||||
|
|
||||||
final areaActive = useState(false);
|
final areaActive = useState(false);
|
||||||
final hoverMode = useState(true);
|
final hoverMode = useState(true);
|
||||||
@ -42,7 +42,7 @@ class MiniLyricsPage extends HookConsumerWidget {
|
|||||||
return null;
|
return null;
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
|
|
||||||
if (auth == null) {
|
if (auth == null) {
|
||||||
return const Scaffold(
|
return const Scaffold(
|
||||||
@ -222,15 +222,15 @@ class MiniLyricsPage extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return Consumer(builder: (context, ref, _) {
|
return Consumer(builder: (context, ref, _) {
|
||||||
final playlist = ref
|
final playlist =
|
||||||
.watch(ProxyPlaylistNotifier.provider);
|
ref.watch(proxyPlaylistProvider);
|
||||||
|
|
||||||
return PlayerQueue
|
return PlayerQueue
|
||||||
.fromProxyPlaylistNotifier(
|
.fromProxyPlaylistNotifier(
|
||||||
floating: true,
|
floating: true,
|
||||||
playlist: playlist,
|
playlist: playlist,
|
||||||
notifier: ref
|
notifier: ref
|
||||||
.read(ProxyPlaylistNotifier.notifier),
|
.read(proxyPlaylistProvider.notifier),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -27,7 +27,7 @@ class PlainLyrics extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final lyricsQuery = ref.watch(syncedLyricsProvider(playlist.activeTrack));
|
final lyricsQuery = ref.watch(syncedLyricsProvider(playlist.activeTrack));
|
||||||
final mediaQuery = MediaQuery.of(context);
|
final mediaQuery = MediaQuery.of(context);
|
||||||
final textTheme = Theme.of(context).textTheme;
|
final textTheme = Theme.of(context).textTheme;
|
||||||
|
@ -32,7 +32,7 @@ class SyncedLyrics extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
|
|
||||||
final mediaQuery = MediaQuery.of(context);
|
final mediaQuery = MediaQuery.of(context);
|
||||||
final controller = useAutoScrollController();
|
final controller = useAutoScrollController();
|
||||||
@ -54,7 +54,7 @@ class SyncedLyrics extends HookConsumerWidget {
|
|||||||
final textTheme = Theme.of(context).textTheme;
|
final textTheme = Theme.of(context).textTheme;
|
||||||
|
|
||||||
ref.listen(
|
ref.listen(
|
||||||
ProxyPlaylistNotifier.provider.select((s) => s.activeTrack),
|
proxyPlaylistProvider.select((s) => s.activeTrack),
|
||||||
(previous, next) {
|
(previous, next) {
|
||||||
controller.scrollToIndex(0);
|
controller.scrollToIndex(0);
|
||||||
ref.read(syncedLyricsDelayProvider.notifier).state = 0;
|
ref.read(syncedLyricsDelayProvider.notifier).state = 0;
|
||||||
|
@ -13,8 +13,7 @@ class WebViewLogin extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final mounted = useIsMounted();
|
final mounted = useIsMounted();
|
||||||
final authenticationNotifier =
|
final authenticationNotifier = ref.watch(authenticationProvider.notifier);
|
||||||
ref.watch(AuthenticationNotifier.provider.notifier);
|
|
||||||
|
|
||||||
if (kIsDesktop) {
|
if (kIsDesktop) {
|
||||||
const Scaffold(
|
const Scaffold(
|
||||||
|
@ -221,9 +221,9 @@ class RootApp extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
child: Consumer(
|
child: Consumer(
|
||||||
builder: (context, ref, _) {
|
builder: (context, ref, _) {
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier =
|
final playlistNotifier =
|
||||||
ref.read(ProxyPlaylistNotifier.notifier);
|
ref.read(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
return PlayerQueue.fromProxyPlaylistNotifier(
|
return PlayerQueue.fromProxyPlaylistNotifier(
|
||||||
floating: true,
|
floating: true,
|
||||||
|
@ -34,9 +34,8 @@ class SearchPage extends HookConsumerWidget {
|
|||||||
final searchTerm = ref.watch(searchTermStateProvider);
|
final searchTerm = ref.watch(searchTermStateProvider);
|
||||||
final controller = useSearchController();
|
final controller = useSearchController();
|
||||||
|
|
||||||
ref.watch(AuthenticationNotifier.provider);
|
ref.watch(authenticationProvider);
|
||||||
final authenticationNotifier =
|
final authenticationNotifier = ref.watch(authenticationProvider.notifier);
|
||||||
ref.watch(AuthenticationNotifier.provider.notifier);
|
|
||||||
final mediaQuery = MediaQuery.of(context);
|
final mediaQuery = MediaQuery.of(context);
|
||||||
|
|
||||||
final searchTrack = ref.watch(searchProvider(SearchType.track));
|
final searchTrack = ref.watch(searchProvider(SearchType.track));
|
||||||
|
@ -24,8 +24,8 @@ class SearchTracksSection extends HookConsumerWidget {
|
|||||||
ref.watch(searchProvider(SearchType.track).notifier);
|
ref.watch(searchProvider(SearchType.track).notifier);
|
||||||
|
|
||||||
final tracks = searchTrack.asData?.value.items.cast<Track>() ?? [];
|
final tracks = searchTrack.asData?.value.items.cast<Track>() ?? [];
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.provider.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
|
@ -16,7 +16,7 @@ class BlackListPage extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final controller = useScrollController();
|
final controller = useScrollController();
|
||||||
final blacklist = ref.watch(BlackListNotifier.provider);
|
final blacklist = ref.watch(blacklistProvider);
|
||||||
final searchText = useState("");
|
final searchText = useState("");
|
||||||
|
|
||||||
final filteredBlacklist = useMemoized(
|
final filteredBlacklist = useMemoized(
|
||||||
@ -74,7 +74,7 @@ class BlackListPage extends HookConsumerWidget {
|
|||||||
icon: Icon(SpotubeIcons.trash, color: Colors.red[400]),
|
icon: Icon(SpotubeIcons.trash, color: Colors.red[400]),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
ref
|
ref
|
||||||
.read(BlackListNotifier.provider.notifier)
|
.read(blacklistProvider.notifier)
|
||||||
.remove(filteredBlacklist.elementAt(index));
|
.remove(filteredBlacklist.elementAt(index));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -15,7 +15,7 @@ class SettingsAccountSection extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(context, ref) {
|
Widget build(context, ref) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
final scrobbler = ref.watch(scrobblerProvider);
|
final scrobbler = ref.watch(scrobblerProvider);
|
||||||
final router = GoRouter.of(context);
|
final router = GoRouter.of(context);
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ class SettingsAccountSection extends HookConsumerWidget {
|
|||||||
trailing: FilledButton(
|
trailing: FilledButton(
|
||||||
style: logoutBtnStyle,
|
style: logoutBtnStyle,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
ref.read(AuthenticationNotifier.provider.notifier).logout();
|
ref.read(authenticationProvider.notifier).logout();
|
||||||
GoRouter.of(context).pop();
|
GoRouter.of(context).pop();
|
||||||
},
|
},
|
||||||
child: Text(context.l10n.logout),
|
child: Text(context.l10n.logout),
|
||||||
|
@ -32,8 +32,8 @@ class TrackPage extends HookConsumerWidget {
|
|||||||
final ThemeData(:textTheme, :colorScheme) = Theme.of(context);
|
final ThemeData(:textTheme, :colorScheme) = Theme.of(context);
|
||||||
final mediaQuery = MediaQuery.of(context);
|
final mediaQuery = MediaQuery.of(context);
|
||||||
|
|
||||||
final playlist = ref.watch(ProxyPlaylistNotifier.provider);
|
final playlist = ref.watch(proxyPlaylistProvider);
|
||||||
final playlistNotifier = ref.watch(ProxyPlaylistNotifier.notifier);
|
final playlistNotifier = ref.watch(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
final isActive = playlist.activeTrack?.id == trackId;
|
final isActive = playlist.activeTrack?.id == trackId;
|
||||||
|
|
||||||
|
@ -95,11 +95,6 @@ class AuthenticationCredentials {
|
|||||||
|
|
||||||
class AuthenticationNotifier
|
class AuthenticationNotifier
|
||||||
extends PersistedStateNotifier<AuthenticationCredentials?> {
|
extends PersistedStateNotifier<AuthenticationCredentials?> {
|
||||||
static final provider =
|
|
||||||
StateNotifierProvider<AuthenticationNotifier, AuthenticationCredentials?>(
|
|
||||||
(ref) => AuthenticationNotifier(),
|
|
||||||
);
|
|
||||||
|
|
||||||
bool get isLoggedIn => state != null;
|
bool get isLoggedIn => state != null;
|
||||||
|
|
||||||
AuthenticationNotifier() : super(null, "authentication", encrypted: true);
|
AuthenticationNotifier() : super(null, "authentication", encrypted: true);
|
||||||
@ -154,3 +149,8 @@ class AuthenticationNotifier
|
|||||||
return state?.toJson() ?? {};
|
return state?.toJson() ?? {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final authenticationProvider =
|
||||||
|
StateNotifierProvider<AuthenticationNotifier, AuthenticationCredentials?>(
|
||||||
|
(ref) => AuthenticationNotifier(),
|
||||||
|
);
|
||||||
|
@ -43,11 +43,6 @@ class BlackListNotifier
|
|||||||
extends PersistedStateNotifier<Set<BlacklistedElement>> {
|
extends PersistedStateNotifier<Set<BlacklistedElement>> {
|
||||||
BlackListNotifier() : super({}, "blacklist");
|
BlackListNotifier() : super({}, "blacklist");
|
||||||
|
|
||||||
static final provider =
|
|
||||||
StateNotifierProvider<BlackListNotifier, Set<BlacklistedElement>>(
|
|
||||||
(ref) => BlackListNotifier(),
|
|
||||||
);
|
|
||||||
|
|
||||||
void add(BlacklistedElement element) {
|
void add(BlacklistedElement element) {
|
||||||
state = state.union({element});
|
state = state.union({element});
|
||||||
}
|
}
|
||||||
@ -106,3 +101,8 @@ class BlackListNotifier
|
|||||||
return {'blacklist': state.map((e) => e.toJson()).toList()};
|
return {'blacklist': state.map((e) => e.toJson()).toList()};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final blacklistProvider =
|
||||||
|
StateNotifierProvider<BlackListNotifier, Set<BlacklistedElement>>((ref) {
|
||||||
|
return BlackListNotifier();
|
||||||
|
});
|
||||||
|
@ -31,7 +31,7 @@ final connectServerProvider = FutureProvider((ref) async {
|
|||||||
ref.watch(userPreferencesProvider.select((s) => s.enableConnect));
|
ref.watch(userPreferencesProvider.select((s) => s.enableConnect));
|
||||||
final resolvedService = await ref
|
final resolvedService = await ref
|
||||||
.watch(connectClientsProvider.selectAsync((s) => s.resolvedService));
|
.watch(connectClientsProvider.selectAsync((s) => s.resolvedService));
|
||||||
final playbackNotifier = ref.read(ProxyPlaylistNotifier.notifier);
|
final playbackNotifier = ref.read(proxyPlaylistProvider.notifier);
|
||||||
|
|
||||||
if (!enabled || resolvedService != null) {
|
if (!enabled || resolvedService != null) {
|
||||||
return null;
|
return null;
|
||||||
@ -57,7 +57,7 @@ final connectServerProvider = FutureProvider((ref) async {
|
|||||||
_connectClientStreamController.add(origin);
|
_connectClientStreamController.add(origin);
|
||||||
|
|
||||||
ref.listen(
|
ref.listen(
|
||||||
ProxyPlaylistNotifier.provider,
|
proxyPlaylistProvider,
|
||||||
(previous, next) {
|
(previous, next) {
|
||||||
channel.sink.add(
|
channel.sink.add(
|
||||||
WebSocketQueueEvent(next).toJson(),
|
WebSocketQueueEvent(next).toJson(),
|
||||||
|
@ -5,6 +5,6 @@ import 'package:spotube/services/custom_spotify_endpoints/spotify_endpoints.dart
|
|||||||
|
|
||||||
final customSpotifyEndpointProvider = Provider<CustomSpotifyEndpoints>((ref) {
|
final customSpotifyEndpointProvider = Provider<CustomSpotifyEndpoints>((ref) {
|
||||||
ref.watch(spotifyProvider);
|
ref.watch(spotifyProvider);
|
||||||
final auth = ref.watch(AuthenticationNotifier.provider);
|
final auth = ref.watch(authenticationProvider);
|
||||||
return CustomSpotifyEndpoints(auth?.accessToken ?? "");
|
return CustomSpotifyEndpoints(auth?.accessToken ?? "");
|
||||||
});
|
});
|
||||||
|
@ -57,7 +57,7 @@ final discordProvider = ChangeNotifierProvider(
|
|||||||
(ref) {
|
(ref) {
|
||||||
final isEnabled =
|
final isEnabled =
|
||||||
ref.watch(userPreferencesProvider.select((s) => s.discordPresence));
|
ref.watch(userPreferencesProvider.select((s) => s.discordPresence));
|
||||||
final playback = ref.read(ProxyPlaylistNotifier.provider);
|
final playback = ref.read(proxyPlaylistProvider);
|
||||||
final discord = Discord(isEnabled);
|
final discord = Discord(isEnabled);
|
||||||
|
|
||||||
if (playback.activeTrack != null) {
|
if (playback.activeTrack != null) {
|
||||||
|
@ -28,18 +28,9 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist> {
|
|||||||
ScrobblerNotifier get scrobbler => ref.read(scrobblerProvider.notifier);
|
ScrobblerNotifier get scrobbler => ref.read(scrobblerProvider.notifier);
|
||||||
UserPreferences get preferences => ref.read(userPreferencesProvider);
|
UserPreferences get preferences => ref.read(userPreferencesProvider);
|
||||||
ProxyPlaylist get playlist => state;
|
ProxyPlaylist get playlist => state;
|
||||||
BlackListNotifier get blacklist =>
|
BlackListNotifier get blacklist => ref.read(blacklistProvider.notifier);
|
||||||
ref.read(BlackListNotifier.provider.notifier);
|
|
||||||
Discord get discord => ref.read(discordProvider);
|
Discord get discord => ref.read(discordProvider);
|
||||||
|
|
||||||
static final provider =
|
|
||||||
StateNotifierProvider<ProxyPlaylistNotifier, ProxyPlaylist>(
|
|
||||||
(ref) => ProxyPlaylistNotifier(ref),
|
|
||||||
);
|
|
||||||
|
|
||||||
static AlwaysAliveRefreshable<ProxyPlaylistNotifier> get notifier =>
|
|
||||||
provider.notifier;
|
|
||||||
|
|
||||||
List<StreamSubscription> _subscriptions = [];
|
List<StreamSubscription> _subscriptions = [];
|
||||||
|
|
||||||
ProxyPlaylistNotifier(this.ref) : super(ProxyPlaylist({}), "playlist") {
|
ProxyPlaylistNotifier(this.ref) : super(ProxyPlaylist({}), "playlist") {
|
||||||
@ -230,3 +221,8 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist> {
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final proxyPlaylistProvider =
|
||||||
|
StateNotifierProvider<ProxyPlaylistNotifier, ProxyPlaylist>(
|
||||||
|
(ref) => ProxyPlaylistNotifier(ref),
|
||||||
|
);
|
||||||
|
@ -28,7 +28,7 @@ class ActiveSourcedTrackNotifier extends Notifier<SourcedTrack?> {
|
|||||||
state = newTrack;
|
state = newTrack;
|
||||||
await audioPlayer.pause();
|
await audioPlayer.pause();
|
||||||
|
|
||||||
final playbackNotifier = ref.read(ProxyPlaylistNotifier.notifier);
|
final playbackNotifier = ref.read(proxyPlaylistProvider.notifier);
|
||||||
final oldActiveIndex = audioPlayer.currentIndex;
|
final oldActiveIndex = audioPlayer.currentIndex;
|
||||||
|
|
||||||
await playbackNotifier.addTracksAtFirst([newTrack]);
|
await playbackNotifier.addTracksAtFirst([newTrack]);
|
||||||
|
@ -20,7 +20,7 @@ import 'package:spotube/provider/user_preferences/user_preferences_state.dart';
|
|||||||
class PlaybackServer {
|
class PlaybackServer {
|
||||||
final Ref ref;
|
final Ref ref;
|
||||||
UserPreferences get userPreferences => ref.read(userPreferencesProvider);
|
UserPreferences get userPreferences => ref.read(userPreferencesProvider);
|
||||||
ProxyPlaylist get playlist => ref.read(ProxyPlaylistNotifier.provider);
|
ProxyPlaylist get playlist => ref.read(proxyPlaylistProvider);
|
||||||
final Logger logger;
|
final Logger logger;
|
||||||
final Dio dio;
|
final Dio dio;
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ final sourcedTrackProvider =
|
|||||||
}
|
}
|
||||||
|
|
||||||
ref.listen(
|
ref.listen(
|
||||||
ProxyPlaylistNotifier.provider,
|
proxyPlaylistProvider,
|
||||||
(old, next) {
|
(old, next) {
|
||||||
if (next.tracks.isEmpty ||
|
if (next.tracks.isEmpty ||
|
||||||
next.tracks.none((element) => element.id == track.id)) {
|
next.tracks.none((element) => element.id == track.id)) {
|
||||||
|
@ -8,13 +8,6 @@ class SleepTimerNotifier extends StateNotifier<Duration?> {
|
|||||||
|
|
||||||
Timer? _timer;
|
Timer? _timer;
|
||||||
|
|
||||||
static final provider = StateNotifierProvider<SleepTimerNotifier, Duration?>(
|
|
||||||
(ref) => SleepTimerNotifier(),
|
|
||||||
);
|
|
||||||
|
|
||||||
static AlwaysAliveRefreshable<SleepTimerNotifier> get notifier =>
|
|
||||||
provider.notifier;
|
|
||||||
|
|
||||||
void setSleepTimer(Duration duration) {
|
void setSleepTimer(Duration duration) {
|
||||||
state = duration;
|
state = duration;
|
||||||
|
|
||||||
@ -29,3 +22,7 @@ class SleepTimerNotifier extends StateNotifier<Duration?> {
|
|||||||
_timer?.cancel();
|
_timer?.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final sleepTimerProvider = StateNotifierProvider<SleepTimerNotifier, Duration?>(
|
||||||
|
(ref) => SleepTimerNotifier(),
|
||||||
|
);
|
||||||
|
@ -6,7 +6,7 @@ import 'package:spotube/provider/authentication_provider.dart';
|
|||||||
import 'package:spotube/utils/primitive_utils.dart';
|
import 'package:spotube/utils/primitive_utils.dart';
|
||||||
|
|
||||||
final spotifyProvider = Provider<SpotifyApi>((ref) {
|
final spotifyProvider = Provider<SpotifyApi>((ref) {
|
||||||
final authState = ref.watch(AuthenticationNotifier.provider);
|
final authState = ref.watch(authenticationProvider);
|
||||||
final anonCred = PrimitiveUtils.getRandomElement(Env.spotifySecrets);
|
final anonCred = PrimitiveUtils.getRandomElement(Env.spotifySecrets);
|
||||||
|
|
||||||
if (authState == null) {
|
if (authState == null) {
|
||||||
|
@ -52,7 +52,7 @@ class UserPreferencesNotifier extends PersistedStateNotifier<UserPreferences> {
|
|||||||
if (!sync) {
|
if (!sync) {
|
||||||
ref.read(paletteProvider.notifier).state = null;
|
ref.read(paletteProvider.notifier).state = null;
|
||||||
} else {
|
} else {
|
||||||
ref.read(ProxyPlaylistNotifier.notifier).updatePalette();
|
ref.read(proxyPlaylistProvider.notifier).updatePalette();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user