Fix ESLint errors

This commit is contained in:
2025-06-19 16:35:01 +00:00
committed by GitHub
parent c954348ad1
commit eba6c76a61
5 changed files with 30 additions and 30 deletions

View File

@@ -24,13 +24,13 @@ export const AudioPlayer: React.FC = () => {
// Save position when component unmounts or track changes // Save position when component unmounts or track changes
useEffect(() => { useEffect(() => {
return () => {
const audioCurrent = audioRef.current; const audioCurrent = audioRef.current;
return () => {
if (audioCurrent && currentTrack && audioCurrent.currentTime > 10) { if (audioCurrent && currentTrack && audioCurrent.currentTime > 10) {
localStorage.setItem(`navidrome-track-time-${currentTrack.id}`, audioCurrent.currentTime.toString()); localStorage.setItem(`navidrome-track-time-${currentTrack.id}`, audioCurrent.currentTime.toString());
} }
}; };
}, [currentTrack?.id]); }, [currentTrack]);
useEffect(() => { useEffect(() => {
const audioCurrent = audioRef.current; const audioCurrent = audioRef.current;
@@ -62,7 +62,7 @@ export const AudioPlayer: React.FC = () => {
audioCurrent.play(); audioCurrent.play();
setIsPlaying(true); setIsPlaying(true);
} }
}, [currentTrack?.id, currentTrack?.url]); }, [currentTrack]);
useEffect(() => { useEffect(() => {
const audioCurrent = audioRef.current; const audioCurrent = audioRef.current;

View File

@@ -116,15 +116,15 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
setQueue((prevQueue) => prevQueue.filter((_, i) => i !== index)); setQueue((prevQueue) => prevQueue.filter((_, i) => i !== index));
}, []); }, []);
const playNextTrack = () => { const playNextTrack = useCallback(() => {
if (queue.length > 0) { if (queue.length > 0) {
const nextTrack = queue[0]; const nextTrack = queue[0];
setQueue((prevQueue) => prevQueue.slice(1)); setQueue((prevQueue) => prevQueue.slice(1));
playTrack(nextTrack); playTrack(nextTrack);
} }
}; }, [queue, playTrack]);
const playPreviousTrack = () => { const playPreviousTrack = useCallback(() => {
if (playedTracks.length > 0) { if (playedTracks.length > 0) {
const previousTrack = playedTracks[playedTracks.length - 1]; const previousTrack = playedTracks[playedTracks.length - 1];
setPlayedTracks((prevPlayedTracks) => prevPlayedTracks.slice(0, -1)); setPlayedTracks((prevPlayedTracks) => prevPlayedTracks.slice(0, -1));
@@ -136,9 +136,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
setCurrentTrack(previousTrack); setCurrentTrack(previousTrack);
} }
}; }, [playedTracks, currentTrack]);
const addAlbumToQueue = async (albumId: string) => { const addAlbumToQueue = useCallback(async (albumId: string) => {
setIsLoading(true); setIsLoading(true);
try { try {
const { album, songs } = await api.getAlbum(albumId); const { album, songs } = await api.getAlbum(albumId);
@@ -159,9 +159,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally { } finally {
setIsLoading(false); setIsLoading(false);
} }
}; }, [api, songToTrack, toast]);
const addArtistToQueue = async (artistId: string) => { const addArtistToQueue = useCallback(async (artistId: string) => {
setIsLoading(true); setIsLoading(true);
try { try {
const { artist, albums } = await api.getArtist(artistId); const { artist, albums } = await api.getArtist(artistId);
@@ -187,8 +187,8 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally { } finally {
setIsLoading(false); setIsLoading(false);
} }
}; }, [api, songToTrack, toast]);
const playAlbum = async (albumId: string) => { const playAlbum = useCallback(async (albumId: string) => {
setIsLoading(true); setIsLoading(true);
try { try {
const { album, songs } = await api.getAlbum(albumId); const { album, songs } = await api.getAlbum(albumId);
@@ -216,9 +216,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally { } finally {
setIsLoading(false); setIsLoading(false);
} }
}; }, [api, playTrack, songToTrack, toast]);
const playAlbumFromTrack = async (albumId: string, startingSongId: string) => { const playAlbumFromTrack = useCallback(async (albumId: string, startingSongId: string) => {
setIsLoading(true); setIsLoading(true);
try { try {
const { album, songs } = await api.getAlbum(albumId); const { album, songs } = await api.getAlbum(albumId);
@@ -251,7 +251,7 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally { } finally {
setIsLoading(false); setIsLoading(false);
} }
}; }, [api, playTrack, songToTrack, toast]);
const skipToTrackInQueue = useCallback((index: number) => { const skipToTrackInQueue = useCallback((index: number) => {
if (index >= 0 && index < queue.length) { if (index >= 0 && index < queue.length) {

View File

@@ -53,7 +53,7 @@ export const NavidromeProvider: React.FC<NavidromeProviderProps> = ({ children }
const api = getNavidromeAPI(); const api = getNavidromeAPI();
const loadAlbums = async () => { const loadAlbums = useCallback(async () => {
setAlbumsLoading(true); setAlbumsLoading(true);
setError(null); setError(null);
try { try {
@@ -73,9 +73,9 @@ export const NavidromeProvider: React.FC<NavidromeProviderProps> = ({ children }
} finally { } finally {
setAlbumsLoading(false); setAlbumsLoading(false);
} }
}; }, [api]);
const loadArtists = async () => { const loadArtists = useCallback(async () => {
setArtistsLoading(true); setArtistsLoading(true);
setError(null); setError(null);
try { try {
@@ -87,9 +87,9 @@ export const NavidromeProvider: React.FC<NavidromeProviderProps> = ({ children }
} finally { } finally {
setArtistsLoading(false); setArtistsLoading(false);
} }
}; }, [api]);
const loadPlaylists = async () => { const loadPlaylists = useCallback(async () => {
setPlaylistsLoading(true); setPlaylistsLoading(true);
setError(null); setError(null);
try { try {
@@ -101,11 +101,11 @@ export const NavidromeProvider: React.FC<NavidromeProviderProps> = ({ children }
} finally { } finally {
setPlaylistsLoading(false); setPlaylistsLoading(false);
} }
}; }, [api]);
const refreshData = async () => { const refreshData = useCallback(async () => {
await Promise.all([loadAlbums(), loadArtists(), loadPlaylists()]); await Promise.all([loadAlbums(), loadArtists(), loadPlaylists()]);
}; }, [loadAlbums, loadArtists, loadPlaylists]);
const searchMusic = async (query: string) => { const searchMusic = async (query: string) => {
setError(null); setError(null);
@@ -247,7 +247,7 @@ export const NavidromeProvider: React.FC<NavidromeProviderProps> = ({ children }
}; };
initialize(); initialize();
}, []); }, [api, refreshData]);
const value: NavidromeContextType = { const value: NavidromeContextType = {
// Data // Data

View File

@@ -86,7 +86,7 @@ export default function PlaylistPage() {
<div className="h-full px-4 py-6 lg:px-8"> <div className="h-full px-4 py-6 lg:px-8">
<div className="text-center"> <div className="text-center">
<h2 className="text-2xl font-bold">Playlist not found</h2> <h2 className="text-2xl font-bold">Playlist not found</h2>
<p className="text-muted-foreground">The playlist you're looking for doesn't exist.</p> <p className="text-muted-foreground">The playlist you&apos;re looking for doesn&apos;t exist.</p>
</div> </div>
</div> </div>
); );

View File

@@ -6,7 +6,7 @@ export interface NavidromeConfig {
password: string; password: string;
} }
export interface SubsonicResponse<T = any> { export interface SubsonicResponse<T = Record<string, unknown>> {
'subsonic-response': { 'subsonic-response': {
status: string; status: string;
version: string; version: string;
@@ -99,7 +99,7 @@ class NavidromeAPI {
return crypto.createHash('md5').update(password + salt).digest('hex'); return crypto.createHash('md5').update(password + salt).digest('hex');
} }
private async makeRequest(endpoint: string, params: Record<string, any> = {}): Promise<any> { private async makeRequest(endpoint: string, params: Record<string, string | number> = {}): Promise<Record<string, unknown>> {
const salt = this.generateSalt(); const salt = this.generateSalt();
const token = this.generateToken(this.config.password, salt); const token = this.generateToken(this.config.password, salt);
@@ -216,7 +216,7 @@ class NavidromeAPI {
} }
async createPlaylist(name: string, songIds?: string[]): Promise<Playlist> { async createPlaylist(name: string, songIds?: string[]): Promise<Playlist> {
const params: Record<string, any> = { name }; const params: Record<string, string | number> = { name };
if (songIds && songIds.length > 0) { if (songIds && songIds.length > 0) {
songIds.forEach((id, index) => { songIds.forEach((id, index) => {
params[`songId[${index}]`] = id; params[`songId[${index}]`] = id;
@@ -224,11 +224,11 @@ class NavidromeAPI {
} }
const response = await this.makeRequest('createPlaylist', params); const response = await this.makeRequest('createPlaylist', params);
return response.playlist; return response.playlist as Playlist;
} }
async updatePlaylist(playlistId: string, name?: string, comment?: string, songIds?: string[]): Promise<void> { async updatePlaylist(playlistId: string, name?: string, comment?: string, songIds?: string[]): Promise<void> {
const params: Record<string, any> = { playlistId }; const params: Record<string, string | number> = { playlistId };
if (name) params.name = name; if (name) params.name = name;
if (comment) params.comment = comment; if (comment) params.comment = comment;
if (songIds) { if (songIds) {