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
useEffect(() => {
const audioCurrent = audioRef.current;
return () => {
const audioCurrent = audioRef.current;
if (audioCurrent && currentTrack && audioCurrent.currentTime > 10) {
localStorage.setItem(`navidrome-track-time-${currentTrack.id}`, audioCurrent.currentTime.toString());
}
};
}, [currentTrack?.id]);
}, [currentTrack]);
useEffect(() => {
const audioCurrent = audioRef.current;
@@ -62,7 +62,7 @@ export const AudioPlayer: React.FC = () => {
audioCurrent.play();
setIsPlaying(true);
}
}, [currentTrack?.id, currentTrack?.url]);
}, [currentTrack]);
useEffect(() => {
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));
}, []);
const playNextTrack = () => {
const playNextTrack = useCallback(() => {
if (queue.length > 0) {
const nextTrack = queue[0];
setQueue((prevQueue) => prevQueue.slice(1));
playTrack(nextTrack);
}
};
}, [queue, playTrack]);
const playPreviousTrack = () => {
const playPreviousTrack = useCallback(() => {
if (playedTracks.length > 0) {
const previousTrack = playedTracks[playedTracks.length - 1];
setPlayedTracks((prevPlayedTracks) => prevPlayedTracks.slice(0, -1));
@@ -136,9 +136,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
setCurrentTrack(previousTrack);
}
};
}, [playedTracks, currentTrack]);
const addAlbumToQueue = async (albumId: string) => {
const addAlbumToQueue = useCallback(async (albumId: string) => {
setIsLoading(true);
try {
const { album, songs } = await api.getAlbum(albumId);
@@ -159,9 +159,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally {
setIsLoading(false);
}
};
}, [api, songToTrack, toast]);
const addArtistToQueue = async (artistId: string) => {
const addArtistToQueue = useCallback(async (artistId: string) => {
setIsLoading(true);
try {
const { artist, albums } = await api.getArtist(artistId);
@@ -187,8 +187,8 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally {
setIsLoading(false);
}
};
const playAlbum = async (albumId: string) => {
}, [api, songToTrack, toast]);
const playAlbum = useCallback(async (albumId: string) => {
setIsLoading(true);
try {
const { album, songs } = await api.getAlbum(albumId);
@@ -216,9 +216,9 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally {
setIsLoading(false);
}
};
}, [api, playTrack, songToTrack, toast]);
const playAlbumFromTrack = async (albumId: string, startingSongId: string) => {
const playAlbumFromTrack = useCallback(async (albumId: string, startingSongId: string) => {
setIsLoading(true);
try {
const { album, songs } = await api.getAlbum(albumId);
@@ -251,7 +251,7 @@ export const AudioPlayerProvider: React.FC<{ children: React.ReactNode }> = ({ c
} finally {
setIsLoading(false);
}
};
}, [api, playTrack, songToTrack, toast]);
const skipToTrackInQueue = useCallback((index: number) => {
if (index >= 0 && index < queue.length) {

View File

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

View File

@@ -86,7 +86,7 @@ export default function PlaylistPage() {
<div className="h-full px-4 py-6 lg:px-8">
<div className="text-center">
<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>
);

View File

@@ -6,7 +6,7 @@ export interface NavidromeConfig {
password: string;
}
export interface SubsonicResponse<T = any> {
export interface SubsonicResponse<T = Record<string, unknown>> {
'subsonic-response': {
status: string;
version: string;
@@ -99,7 +99,7 @@ class NavidromeAPI {
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 token = this.generateToken(this.config.password, salt);
@@ -216,7 +216,7 @@ class NavidromeAPI {
}
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) {
songIds.forEach((id, index) => {
params[`songId[${index}]`] = id;
@@ -224,11 +224,11 @@ class NavidromeAPI {
}
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> {
const params: Record<string, any> = { playlistId };
const params: Record<string, string | number> = { playlistId };
if (name) params.name = name;
if (comment) params.comment = comment;
if (songIds) {