Update all dependencies

This commit is contained in:
Lei Nelissen
2022-05-18 22:10:06 +02:00
parent 21eb1dca3b
commit f6835d0553
17 changed files with 2003 additions and 2296 deletions

View File

@@ -53,5 +53,10 @@ module.exports = {
'@typescript-eslint/no-unused-vars': [ '@typescript-eslint/no-unused-vars': [
'error' 'error'
] ]
},
settings: {
react: {
version: 'detect',
}
} }
}; };

4192
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -25,23 +25,23 @@
"@react-navigation/stack": "^6.2.1", "@react-navigation/stack": "^6.2.1",
"@reduxjs/toolkit": "^1.8.1", "@reduxjs/toolkit": "^1.8.1",
"@sentry/react-native": "^3.4.2", "@sentry/react-native": "^3.4.2",
"@shopify/react-native-skia": "^0.1.123", "@shopify/react-native-skia": "^0.1.124",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"date-fns": "^2.28.0", "date-fns": "^2.28.0",
"events": "^3.3.0", "events": "^3.3.0",
"fuse.js": "^6.6.0", "fuse.js": "^6.6.2",
"hermes-engine": "^0.11.0", "hermes-engine": "^0.11.0",
"i18n-js": "^3.9.2", "i18n-js": "^3.9.2",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"react": "^17.0.2", "react": "^17.0.2",
"react-airplay": "^1.2.0", "react-airplay": "^1.2.0",
"react-native": "^0.68.1", "react-native": "^0.68.2",
"react-native-collapsible": "^1.6.0", "react-native-collapsible": "^1.6.0",
"react-native-dotenv": "^3.3.1", "react-native-dotenv": "^3.3.1",
"react-native-fast-image": "^8.5.11", "react-native-fast-image": "^8.5.11",
"react-native-flipper": "^0.127.0", "react-native-flipper": "^0.146.0",
"react-native-fs": "^2.19.0", "react-native-fs": "^2.20.0",
"react-native-gesture-handler": "^2.4.1", "react-native-gesture-handler": "^2.4.2",
"react-native-localize": "^2.2.1", "react-native-localize": "^2.2.1",
"react-native-reanimated": "^2.8.0", "react-native-reanimated": "^2.8.0",
"react-native-safe-area-context": "^4.2.5", "react-native-safe-area-context": "^4.2.5",
@@ -51,7 +51,7 @@
"react-native-svg-transformer": "^1.0.0", "react-native-svg-transformer": "^1.0.0",
"react-native-track-player": "^2.1.3", "react-native-track-player": "^2.1.3",
"react-native-webview": "^11.18.2", "react-native-webview": "^11.18.2",
"react-redux": "^7.2.6", "react-redux": "^8.0.1",
"redux": "^4.2.0", "redux": "^4.2.0",
"redux-flipper": "^2.0.1", "redux-flipper": "^2.0.1",
"redux-logger": "^3.0.6", "redux-logger": "^3.0.6",
@@ -59,29 +59,28 @@
"styled-components": "^5.3.5" "styled-components": "^5.3.5"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.17.10", "@babel/core": "^7.17.12",
"@babel/runtime": "^7.17.9", "@babel/runtime": "^7.17.9",
"@react-native-community/eslint-config": "^3.0.1", "@react-native-community/eslint-config": "^3.0.2",
"@sentry/cli": "^2.0.4", "@sentry/cli": "^2.0.4",
"@types/i18n-js": "^3.8.2", "@types/i18n-js": "^3.8.2",
"@types/jest": "^27.5.0", "@types/jest": "^27.5.1",
"@types/react-native": "^0.67.6", "@types/react-native": "^0.67.7",
"@types/react-redux": "^7.1.24",
"@types/react-test-renderer": "^17.0.1", "@types/react-test-renderer": "^17.0.1",
"@types/redux-logger": "^3.0.9", "@types/redux-logger": "^3.0.9",
"@types/styled-components": "^5.1.25", "@types/styled-components": "^5.1.25",
"@types/styled-components-react-native": "^5.1.3", "@types/styled-components-react-native": "^5.1.3",
"@typescript-eslint/eslint-plugin": "^5.22.0", "@typescript-eslint/eslint-plugin": "^5.25.0",
"@typescript-eslint/parser": "^5.22.0", "@typescript-eslint/parser": "^5.25.0",
"babel-jest": "^28.0.3", "babel-jest": "^28.1.0",
"babel-plugin-module-resolver": "^4.1.0", "babel-plugin-module-resolver": "^4.1.0",
"eslint": "^8.14.0", "eslint": "^8.15.0",
"eslint-plugin-react-hooks": "^4.5.0", "eslint-plugin-react-hooks": "^4.5.0",
"jest": "^28.0.3", "jest": "^28.1.0",
"metro-config": "^0.70.2", "metro-config": "^0.70.3",
"metro-react-native-babel-preset": "^0.67.0", "metro-react-native-babel-preset": "^0.70.3",
"metro-react-native-babel-transformer": "^0.70.2", "metro-react-native-babel-transformer": "^0.70.3",
"react-native-codegen": "^0.0.16", "react-native-codegen": "^0.69.1",
"react-test-renderer": "^17.0.2", "react-test-renderer": "^17.0.2",
"typescript": "^4.6.4" "typescript": "^4.6.4"
}, },
@@ -97,6 +96,6 @@
] ]
}, },
"overrides": { "overrides": {
"@types/react-native": "^0.67.6" "@types/react-native": "^0.67.7"
} }
} }

View File

@@ -2,8 +2,7 @@ import { EntityId } from '@reduxjs/toolkit';
import { xor } from 'lodash'; import { xor } from 'lodash';
import { useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
import { DocumentDirectoryPath, readDir } from 'react-native-fs'; import { DocumentDirectoryPath, readDir } from 'react-native-fs';
import { useDispatch } from 'react-redux'; import { useAppDispatch, useTypedSelector } from 'store';
import { useTypedSelector } from 'store';
import { completeDownload, downloadTrack } from 'store/downloads/actions'; import { completeDownload, downloadTrack } from 'store/downloads/actions';
/** /**
@@ -20,7 +19,7 @@ function DownloadManager () {
// Retrieve store helpers // Retrieve store helpers
const { queued, ids } = useTypedSelector((state) => state.downloads); const { queued, ids } = useTypedSelector((state) => state.downloads);
const rehydrated = useTypedSelector((state) => state._persist.rehydrated); const rehydrated = useTypedSelector((state) => state._persist.rehydrated);
const dispatch = useDispatch(); const dispatch = useAppDispatch();
// Keep state for the currently active downloads (i.e. the downloads that // Keep state for the currently active downloads (i.e. the downloads that
// have actually been pushed out to react-native-fs). // have actually been pushed out to react-native-fs).

View File

@@ -3,11 +3,10 @@ import React, { useCallback, useMemo } from 'react';
import { FlatListProps, View } from 'react-native'; import { FlatListProps, View } from 'react-native';
import { FlatList } from 'react-native-gesture-handler'; import { FlatList } from 'react-native-gesture-handler';
import { SafeAreaView } from 'react-native-safe-area-context'; import { SafeAreaView } from 'react-native-safe-area-context';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import formatBytes from 'utility/formatBytes'; import formatBytes from 'utility/formatBytes';
import TrashIcon from 'assets/icons/trash.svg'; import TrashIcon from 'assets/icons/trash.svg';
import ArrowClockwise from 'assets/icons/arrow-clockwise.svg'; import ArrowClockwise from 'assets/icons/arrow-clockwise.svg';
import { useDispatch } from 'react-redux';
import { EntityId } from '@reduxjs/toolkit'; import { EntityId } from '@reduxjs/toolkit';
import { queueTrackForDownload, removeDownloadedTrack } from 'store/downloads/actions'; import { queueTrackForDownload, removeDownloadedTrack } from 'store/downloads/actions';
import Button from 'components/Button'; import Button from 'components/Button';
@@ -35,7 +34,7 @@ const AlbumImage = styled(FastImage)`
function Downloads() { function Downloads() {
const defaultStyles = useDefaultStyles(); const defaultStyles = useDefaultStyles();
const dispatch = useDispatch(); const dispatch = useAppDispatch();
const getImage = useGetImage(); const getImage = useGetImage();
const { entities, ids } = useTypedSelector((state) => state.downloads); const { entities, ids } = useTypedSelector((state) => state.downloads);

View File

@@ -1,19 +1,18 @@
import React, { useCallback, useEffect } from 'react'; import React, { useCallback, useEffect } from 'react';
import { MusicStackParams } from '../types'; import { MusicStackParams } from '../types';
import { useRoute, RouteProp } from '@react-navigation/native'; import { useRoute, RouteProp } from '@react-navigation/native';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import TrackListView from './components/TrackListView'; import TrackListView from './components/TrackListView';
import { fetchTracksByAlbum } from 'store/music/actions'; import { fetchTracksByAlbum } from 'store/music/actions';
import { differenceInDays } from 'date-fns'; import { differenceInDays } from 'date-fns';
import { ALBUM_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS'; import { ALBUM_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS';
import { t } from '@localisation'; import { t } from '@localisation';
import { useDispatch } from 'react-redux';
type Route = RouteProp<MusicStackParams, 'Album'>; type Route = RouteProp<MusicStackParams, 'Album'>;
const Album: React.FC = () => { const Album: React.FC = () => {
const { params: { id } } = useRoute<Route>(); const { params: { id } } = useRoute<Route>();
const dispatch = useDispatch(); const dispatch = useAppDispatch();
// Retrieve the album data from the store // Retrieve the album data from the store
const album = useTypedSelector((state) => state.music.albums.entities[id]); const album = useTypedSelector((state) => state.music.albums.entities[id]);

View File

@@ -2,10 +2,9 @@ import React, { useCallback, useEffect, useRef, ReactText } from 'react';
import { useGetImage } from 'utility/JellyfinApi'; import { useGetImage } from 'utility/JellyfinApi';
import { MusicNavigationProp } from '../types'; import { MusicNavigationProp } from '../types';
import { SafeAreaView, SectionList, View } from 'react-native'; import { SafeAreaView, SectionList, View } from 'react-native';
import { useDispatch } from 'react-redux';
import { useNavigation } from '@react-navigation/native'; import { useNavigation } from '@react-navigation/native';
import { differenceInDays } from 'date-fns'; import { differenceInDays } from 'date-fns';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import { fetchAllAlbums } from 'store/music/actions'; import { fetchAllAlbums } from 'store/music/actions';
import { ALBUM_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS'; import { ALBUM_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS';
import TouchableHandler from 'components/TouchableHandler'; import TouchableHandler from 'components/TouchableHandler';
@@ -103,7 +102,7 @@ const Albums: React.FC = () => {
const sections = useTypedSelector(selectAlbumsByAlphabet); const sections = useTypedSelector(selectAlbumsByAlphabet);
// Initialise helpers // Initialise helpers
const dispatch = useDispatch(); const dispatch = useAppDispatch();
const navigation = useNavigation<MusicNavigationProp>(); const navigation = useNavigation<MusicNavigationProp>();
const getImage = useGetImage(); const getImage = useGetImage();
const listRef = useRef<SectionList<EntityId>>(null); const listRef = useRef<SectionList<EntityId>>(null);

View File

@@ -1,19 +1,18 @@
import React, { useCallback, useEffect } from 'react'; import React, { useCallback, useEffect } from 'react';
import { MusicStackParams } from '../types'; import { MusicStackParams } from '../types';
import { useRoute, RouteProp } from '@react-navigation/native'; import { useRoute, RouteProp } from '@react-navigation/native';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import TrackListView from './components/TrackListView'; import TrackListView from './components/TrackListView';
import { fetchTracksByPlaylist } from 'store/music/actions'; import { fetchTracksByPlaylist } from 'store/music/actions';
import { differenceInDays } from 'date-fns'; import { differenceInDays } from 'date-fns';
import { ALBUM_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS'; import { ALBUM_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS';
import { t } from '@localisation'; import { t } from '@localisation';
import { useDispatch } from 'react-redux';
type Route = RouteProp<MusicStackParams, 'Album'>; type Route = RouteProp<MusicStackParams, 'Album'>;
const Playlist: React.FC = () => { const Playlist: React.FC = () => {
const { params: { id } } = useRoute<Route>(); const { params: { id } } = useRoute<Route>();
const dispatch = useDispatch(); const dispatch = useAppDispatch();
// Retrieve the album data from the store // Retrieve the album data from the store
const playlist = useTypedSelector((state) => state.music.playlists.entities[id]); const playlist = useTypedSelector((state) => state.music.playlists.entities[id]);

View File

@@ -2,10 +2,9 @@ import React, { useCallback, useEffect, useRef, ReactText } from 'react';
import { useGetImage } from 'utility/JellyfinApi'; import { useGetImage } from 'utility/JellyfinApi';
import { MusicNavigationProp } from '../types'; import { MusicNavigationProp } from '../types';
import { Text, View, FlatList, ListRenderItem } from 'react-native'; import { Text, View, FlatList, ListRenderItem } from 'react-native';
import { useDispatch } from 'react-redux';
import { useNavigation } from '@react-navigation/native'; import { useNavigation } from '@react-navigation/native';
import { differenceInDays } from 'date-fns'; import { differenceInDays } from 'date-fns';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import { fetchAllPlaylists } from 'store/music/actions'; import { fetchAllPlaylists } from 'store/music/actions';
import { PLAYLIST_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS'; import { PLAYLIST_CACHE_AMOUNT_OF_DAYS } from 'CONSTANTS';
import TouchableHandler from 'components/TouchableHandler'; import TouchableHandler from 'components/TouchableHandler';
@@ -41,7 +40,7 @@ const Playlists: React.FC = () => {
const lastRefreshed = useTypedSelector((state) => state.music.playlists.lastRefreshed); const lastRefreshed = useTypedSelector((state) => state.music.playlists.lastRefreshed);
// Initialise helpers // Initialise helpers
const dispatch = useDispatch(); const dispatch = useAppDispatch();
const navigation = useNavigation<MusicNavigationProp>(); const navigation = useNavigation<MusicNavigationProp>();
const getImage = useGetImage(); const getImage = useGetImage();
const listRef = useRef<FlatList<EntityId>>(null); const listRef = useRef<FlatList<EntityId>>(null);

View File

@@ -2,9 +2,8 @@ import React, { useCallback, useEffect } from 'react';
import { useGetImage } from 'utility/JellyfinApi'; import { useGetImage } from 'utility/JellyfinApi';
import { MusicNavigationProp } from '../types'; import { MusicNavigationProp } from '../types';
import { Text, SafeAreaView, FlatList, StyleSheet } from 'react-native'; import { Text, SafeAreaView, FlatList, StyleSheet } from 'react-native';
import { useDispatch } from 'react-redux';
import { useNavigation } from '@react-navigation/native'; import { useNavigation } from '@react-navigation/native';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import { fetchRecentAlbums } from 'store/music/actions'; import { fetchRecentAlbums } from 'store/music/actions';
import TouchableHandler from 'components/TouchableHandler'; import TouchableHandler from 'components/TouchableHandler';
import ListContainer from './components/ListContainer'; import ListContainer from './components/ListContainer';
@@ -59,7 +58,7 @@ const RecentAlbums: React.FC = () => {
const isLoading = useTypedSelector((state) => state.music.albums.isLoading); const isLoading = useTypedSelector((state) => state.music.albums.isLoading);
// Initialise helpers // Initialise helpers
const dispatch = useDispatch(); const dispatch = useAppDispatch();
const navigation = useNavigation<MusicNavigationProp>(); const navigation = useNavigation<MusicNavigationProp>();
const getImage = useGetImage(); const getImage = useGetImage();

View File

@@ -3,7 +3,7 @@ import { ScrollView, RefreshControl, StyleSheet, View } from 'react-native';
import { useGetImage } from 'utility/JellyfinApi'; import { useGetImage } from 'utility/JellyfinApi';
import styled, { css } from 'styled-components/native'; import styled, { css } from 'styled-components/native';
import { useNavigation } from '@react-navigation/native'; import { useNavigation } from '@react-navigation/native';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import { THEME_COLOR } from 'CONSTANTS'; import { THEME_COLOR } from 'CONSTANTS';
import TouchableHandler from 'components/TouchableHandler'; import TouchableHandler from 'components/TouchableHandler';
import useCurrentTrack from 'utility/useCurrentTrack'; import useCurrentTrack from 'utility/useCurrentTrack';
@@ -18,7 +18,6 @@ import { MusicNavigationProp } from 'screens/Music/types';
import DownloadIcon from 'components/DownloadIcon'; import DownloadIcon from 'components/DownloadIcon';
import CloudDownArrow from 'assets/icons/cloud-down-arrow.svg'; import CloudDownArrow from 'assets/icons/cloud-down-arrow.svg';
import Trash from 'assets/icons/trash.svg'; import Trash from 'assets/icons/trash.svg';
import { useDispatch } from 'react-redux';
import { queueTrackForDownload, removeDownloadedTrack } from 'store/downloads/actions'; import { queueTrackForDownload, removeDownloadedTrack } from 'store/downloads/actions';
import { selectDownloadedTracks } from 'store/downloads/selectors'; import { selectDownloadedTracks } from 'store/downloads/selectors';
import { Header, SubHeader } from 'components/Typography'; import { Header, SubHeader } from 'components/Typography';
@@ -92,7 +91,7 @@ const TrackListView: React.FC<TrackListViewProps> = ({
const playTracks = usePlayTracks(); const playTracks = usePlayTracks();
const { track: currentTrack } = useCurrentTrack(); const { track: currentTrack } = useCurrentTrack();
const navigation = useNavigation<MusicNavigationProp>(); const navigation = useNavigation<MusicNavigationProp>();
const dispatch = useDispatch(); const dispatch = useAppDispatch();
// Setup callbacks // Setup callbacks
const playEntity = useCallback(() => { playTracks(trackIds); }, [playTracks, trackIds]); const playEntity = useCallback(() => { playTracks(trackIds); }, [playTracks, trackIds]);

View File

@@ -2,8 +2,7 @@ import React, { useCallback, useEffect } from 'react';
import styled from 'styled-components/native'; import styled from 'styled-components/native';
import { useNavigation } from '@react-navigation/native'; import { useNavigation } from '@react-navigation/native';
import { NavigationProp } from 'screens'; import { NavigationProp } from 'screens';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import { useDispatch } from 'react-redux';
import { setOnboardingStatus } from 'store/settings/actions'; import { setOnboardingStatus } from 'store/settings/actions';
import { t } from '@localisation'; import { t } from '@localisation';
import Button from 'components/Button'; import Button from 'components/Button';
@@ -39,7 +38,7 @@ const Logo = styled.Image`
function Onboarding() { function Onboarding() {
// Get account from Redux and dispatcher // Get account from Redux and dispatcher
const account = useTypedSelector(state => state.settings.jellyfin); const account = useTypedSelector(state => state.settings.jellyfin);
const dispatch = useDispatch(); const dispatch = useAppDispatch();
// Also retrieve the navigation handler so that we can open the modal in // Also retrieve the navigation handler so that we can open the modal in
// which the Jellyfin server is set // which the Jellyfin server is set

View File

@@ -2,7 +2,7 @@ import React, { useState, useEffect, useRef, useCallback } from 'react';
import Input from 'components/Input'; import Input from 'components/Input';
import { ActivityIndicator, Animated, SafeAreaView, View } from 'react-native'; import { ActivityIndicator, Animated, SafeAreaView, View } from 'react-native';
import styled from 'styled-components/native'; import styled from 'styled-components/native';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import Fuse from 'fuse.js'; import Fuse from 'fuse.js';
import { Album, AlbumTrack } from 'store/music/types'; import { Album, AlbumTrack } from 'store/music/types';
import { FlatList } from 'react-native-gesture-handler'; import { FlatList } from 'react-native-gesture-handler';
@@ -14,7 +14,6 @@ import { t } from '@localisation';
import useDefaultStyles from 'components/Colors'; import useDefaultStyles from 'components/Colors';
import { searchAndFetchAlbums } from 'store/music/actions'; import { searchAndFetchAlbums } from 'store/music/actions';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import { useDispatch } from 'react-redux';
import { Text } from 'components/Typography'; import { Text } from 'components/Typography';
import { MusicNavigationProp } from 'screens/Music/types'; import { MusicNavigationProp } from 'screens/Music/types';
import DownloadIcon from 'components/DownloadIcon'; import DownloadIcon from 'components/DownloadIcon';
@@ -117,7 +116,7 @@ export default function Search() {
const navigation = useNavigation<MusicNavigationProp>(); const navigation = useNavigation<MusicNavigationProp>();
const keyboardHeight = useKeyboardHeight(); const keyboardHeight = useKeyboardHeight();
const getImage = useGetImage(); const getImage = useGetImage();
const dispatch = useDispatch(); const dispatch = useAppDispatch();
/** /**
* Since it is impractical to have a global fuse variable, we need to * Since it is impractical to have a global fuse variable, we need to
@@ -139,7 +138,6 @@ export default function Search() {
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
const fetchJellyfinResults = useCallback(debounce(async (searchTerm: string, currentResults: CombinedResults) => { const fetchJellyfinResults = useCallback(debounce(async (searchTerm: string, currentResults: CombinedResults) => {
// First, query the Jellyfin API // First, query the Jellyfin API
// @ts-expect-error need to fix this with AppDispatch
const { payload } = await dispatch(searchAndFetchAlbums({ term: searchTerm })); const { payload } = await dispatch(searchAndFetchAlbums({ term: searchTerm }));
// Convert the current results to album ids // Convert the current results to album ids

View File

@@ -1,11 +1,11 @@
import React, { useCallback } from 'react'; import React, { useCallback } from 'react';
import TrackPlayer from 'react-native-track-player'; import TrackPlayer from 'react-native-track-player';
import { useDispatch } from 'react-redux';
import music from 'store/music'; import music from 'store/music';
import { t } from '@localisation'; import { t } from '@localisation';
import Button from 'components/Button'; import Button from 'components/Button';
import styled from 'styled-components/native'; import styled from 'styled-components/native';
import { Text } from 'components/Typography'; import { Text } from 'components/Typography';
import { useAppDispatch } from 'store';
const ClearCache = styled(Button)` const ClearCache = styled(Button)`
@@ -17,7 +17,7 @@ const Container = styled.ScrollView`
`; `;
export default function CacheSettings() { export default function CacheSettings() {
const dispatch = useDispatch(); const dispatch = useAppDispatch();
const handleClearCache = useCallback(() => { const handleClearCache = useCallback(() => {
// Dispatch an action to reset the music subreducer state // Dispatch an action to reset the music subreducer state
dispatch(music.actions.reset()); dispatch(music.actions.reset());

View File

@@ -3,13 +3,13 @@ import { Button, View } from 'react-native';
import Modal from 'components/Modal'; import Modal from 'components/Modal';
import Input from 'components/Input'; import Input from 'components/Input';
import { setJellyfinCredentials } from 'store/settings/actions'; import { setJellyfinCredentials } from 'store/settings/actions';
import { useDispatch } from 'react-redux';
import { useNavigation, StackActions } from '@react-navigation/native'; import { useNavigation, StackActions } from '@react-navigation/native';
import CredentialGenerator from './components/CredentialGenerator'; import CredentialGenerator from './components/CredentialGenerator';
import { THEME_COLOR } from 'CONSTANTS'; import { THEME_COLOR } from 'CONSTANTS';
import { t } from '@localisation'; import { t } from '@localisation';
import useDefaultStyles from 'components/Colors'; import useDefaultStyles from 'components/Colors';
import { Text } from 'components/Typography'; import { Text } from 'components/Typography';
import { useAppDispatch } from 'store';
export default function SetJellyfinServer() { export default function SetJellyfinServer() {
@@ -19,7 +19,7 @@ export default function SetJellyfinServer() {
const [isLogginIn, setIsLogginIn] = useState<boolean>(false); const [isLogginIn, setIsLogginIn] = useState<boolean>(false);
// Handlers needed for dispatching stuff // Handlers needed for dispatching stuff
const dispatch = useDispatch(); const dispatch = useAppDispatch();
const navigation = useNavigation(); const navigation = useNavigation();
// Save creedentials to store and close the modal // Save creedentials to store and close the modal

View File

@@ -1,7 +1,7 @@
import React, { useCallback } from 'react'; import React, { useCallback } from 'react';
import { useNavigation, StackActions, useRoute, RouteProp } from '@react-navigation/native'; import { useNavigation, StackActions, useRoute, RouteProp } from '@react-navigation/native';
import { ModalStackParams } from 'screens/types'; import { ModalStackParams } from 'screens/types';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import { Header, SubHeader } from 'components/Typography'; import { Header, SubHeader } from 'components/Typography';
import styled from 'styled-components/native'; import styled from 'styled-components/native';
import { t } from '@localisation'; import { t } from '@localisation';
@@ -12,7 +12,6 @@ import TrashIcon from 'assets/icons/trash.svg';
import { WrappableButton, WrappableButtonRow } from 'components/WrappableButtonRow'; import { WrappableButton, WrappableButtonRow } from 'components/WrappableButtonRow';
import CoverImage from 'components/CoverImage'; import CoverImage from 'components/CoverImage';
import { useDispatch } from 'react-redux';
import { queueTrackForDownload, removeDownloadedTrack } from 'store/downloads/actions'; import { queueTrackForDownload, removeDownloadedTrack } from 'store/downloads/actions';
import usePlayTracks from 'utility/usePlayTracks'; import usePlayTracks from 'utility/usePlayTracks';
import { selectIsDownloaded } from 'store/downloads/selectors'; import { selectIsDownloaded } from 'store/downloads/selectors';
@@ -37,7 +36,7 @@ function TrackPopupMenu() {
// Retrieve helpers // Retrieve helpers
const navigation = useNavigation(); const navigation = useNavigation();
const dispatch = useDispatch(); const dispatch = useAppDispatch();
const playTracks = usePlayTracks(); const playTracks = usePlayTracks();
const getImage = useGetImage(); const getImage = useGetImage();

View File

@@ -1,11 +1,10 @@
import { useEffect } from 'react'; import { useEffect } from 'react';
import { Alert } from 'react-native'; import { Alert } from 'react-native';
import { useTypedSelector } from 'store'; import { useAppDispatch, useTypedSelector } from 'store';
import { t } from '@localisation'; import { t } from '@localisation';
import { setReceivedErrorReportingAlert } from 'store/settings/actions'; import { setReceivedErrorReportingAlert } from 'store/settings/actions';
import { setSentryStatus } from './Sentry'; import { setSentryStatus } from './Sentry';
import { useNavigation } from '@react-navigation/native'; import { useNavigation } from '@react-navigation/native';
import { useDispatch } from 'react-redux';
import { ModalNavigationProp } from 'screens/types'; import { ModalNavigationProp } from 'screens/types';
/** /**
@@ -15,7 +14,7 @@ import { ModalNavigationProp } from 'screens/types';
export default function ErrorReportingAlert() { export default function ErrorReportingAlert() {
const { hasReceivedErrorReportingAlert } = useTypedSelector(state => state.settings); const { hasReceivedErrorReportingAlert } = useTypedSelector(state => state.settings);
const navigation = useNavigation<ModalNavigationProp>(); const navigation = useNavigation<ModalNavigationProp>();
const dispatch = useDispatch(); const dispatch = useAppDispatch();
useEffect(() => { useEffect(() => {
// Only send out alert if we haven't done so ever // Only send out alert if we haven't done so ever