From 2d3310d04d5602b7e779dcfdd5d864b206ee2450 Mon Sep 17 00:00:00 2001 From: Lei Nelissen Date: Wed, 17 Jun 2020 15:09:19 +0200 Subject: [PATCH] Add RefreshControl to Album view --- src/screens/Albums/components/Album.tsx | 13 ++++++++++--- src/store/index.ts | 4 +++- src/utility/JellyfinApi.ts | 2 -- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/screens/Albums/components/Album.tsx b/src/screens/Albums/components/Album.tsx index 98ab8ae..bc3f8db 100644 --- a/src/screens/Albums/components/Album.tsx +++ b/src/screens/Albums/components/Album.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useEffect } from 'react'; import TrackPlayer from 'react-native-track-player'; import { StackParams } from '../types'; -import { Text, ScrollView, Dimensions, Button, TouchableOpacity } from 'react-native'; +import { Text, ScrollView, Dimensions, Button, TouchableOpacity, RefreshControl } from 'react-native'; import { generateTrack, useGetImage } from '../../../utility/JellyfinApi'; import styled from 'styled-components/native'; import { useRoute, RouteProp } from '@react-navigation/native'; @@ -51,6 +51,7 @@ const Album: React.FC = () => { const { params: { id } } = useRoute(); const tracks = useTypedSelector((state) => state.music.tracks.entities); const album = useTypedSelector((state) => state.music.albums.entities[id]); + const isLoading = useTypedSelector((state) => state.music.tracks.isLoading); const credentials = useTypedSelector((state) => state.settings.jellyfin); // Retrieve helpers @@ -72,12 +73,18 @@ const Album: React.FC = () => { await TrackPlayer.skip(album.Tracks[0]); TrackPlayer.play(); }, [tracks, credentials]); + const refresh = useCallback(() => { dispatch(fetchTracksByAlbum(id)); }, [id]); // Retrieve album tracks on load - useEffect(() => { dispatch(fetchTracksByAlbum(id)); }, []); + useEffect(refresh, []); return ( - + + } + > {album?.Name} {album?.AlbumArtist} diff --git a/src/store/index.ts b/src/store/index.ts index cd8750c..075707a 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -21,7 +21,9 @@ const persistedReducer = persistReducer(persistConfig, reducers); const store = configureStore({ reducer: persistedReducer, - middleware: getDefaultMiddleware({ serializableCheck: false }).concat(logger, ), + middleware: getDefaultMiddleware({ serializableCheck: false, immutableCheck: false }).concat( + logger + ), }); export type AppState = ReturnType; diff --git a/src/utility/JellyfinApi.ts b/src/utility/JellyfinApi.ts index 2eff767..7eddcad 100644 --- a/src/utility/JellyfinApi.ts +++ b/src/utility/JellyfinApi.ts @@ -51,9 +51,7 @@ export function generateTrack(track: AlbumTrack, credentials: Credentials): Trac title: track.Name, artist: track.Artists.join(', '), album: track.Album, - // genre: Array.isArray(track.Genres) ? track.Genres[0] : undefined, artwork: getImage(track.Id, credentials), - ...generateConfig(credentials), }; }