mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-07-07 05:07:59 +02:00
refactor: abstract built-in providers into generic registry and unify platform bridge API
Replace hardcoded Tidal/Qobuz switch/case with builtInProviderSpec registry pattern. Unify searchTidalAll/searchQobuzAll into searchProviderAll, getDeezerMetadata/getTidalMetadata/getQobuzMetadata into getProviderMetadata, and parseDeezerUrl/parseQobuzUrl/parseTidalUrl into parseProviderUrl. Remove extension-specific getAlbum/Playlist/ArtistWithExtension in favor of generic getProviderMetadata routing. Extract provider UI helpers into provider_ui_utils.dart. Preserve track_number fallback for zero-value TrackNumber in album/playlist track lists.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:spotiflac_android/services/platform_bridge.dart';
|
||||
import 'package:spotiflac_android/providers/extension_provider.dart';
|
||||
import 'package:spotiflac_android/screens/artist_screen.dart';
|
||||
import 'package:spotiflac_android/screens/album_screen.dart';
|
||||
import 'package:spotiflac_android/screens/home_tab.dart'
|
||||
@@ -216,9 +217,8 @@ void _pushAlbumScreen(
|
||||
String? coverUrl,
|
||||
String? extensionId,
|
||||
}) {
|
||||
const builtInProviders = {'tidal', 'qobuz'};
|
||||
final isExtension =
|
||||
extensionId != null && !builtInProviders.contains(extensionId);
|
||||
extensionId != null && !isBuiltInMetadataProvider(extensionId);
|
||||
final resolvedExtensionId = extensionId;
|
||||
|
||||
_pushViaPreferredNavigator(
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:spotiflac_android/providers/extension_provider.dart';
|
||||
|
||||
IconData resolveProviderIcon(
|
||||
String providerId, {
|
||||
IconData tidalIcon = Icons.music_note,
|
||||
IconData builtInDefaultIcon = Icons.album,
|
||||
IconData deezerIcon = Icons.graphic_eq,
|
||||
IconData fallbackIcon = Icons.extension,
|
||||
}) {
|
||||
final builtIn = builtInProviderSpecForId(providerId);
|
||||
if (builtIn != null) {
|
||||
if (providerId == 'tidal') {
|
||||
return tidalIcon;
|
||||
}
|
||||
return builtInDefaultIcon;
|
||||
}
|
||||
|
||||
if (providerId == 'deezer') {
|
||||
return deezerIcon;
|
||||
}
|
||||
|
||||
return fallbackIcon;
|
||||
}
|
||||
Reference in New Issue
Block a user