fix(download): suffix only colliding quality variants

This commit is contained in:
zarzet
2026-07-29 02:43:35 +07:00
parent 1f55523b64
commit e7fbaf7b75
41 changed files with 629 additions and 110 deletions
@@ -50,6 +50,7 @@ class DownloadRequestPayload {
final bool requiresContainerConversion;
final bool allowQualityVariant;
final String qualityVariant;
final bool qualityVariantCollisionOnly;
final String songLinkRegion;
const DownloadRequestPayload({
@@ -102,6 +103,7 @@ class DownloadRequestPayload {
this.requiresContainerConversion = false,
this.allowQualityVariant = false,
this.qualityVariant = '',
this.qualityVariantCollisionOnly = false,
this.songLinkRegion = 'US',
});
@@ -156,6 +158,7 @@ class DownloadRequestPayload {
'requires_container_conversion': requiresContainerConversion,
'allow_quality_variant': allowQualityVariant,
'quality_variant': qualityVariant,
'quality_variant_collision_only': qualityVariantCollisionOnly,
'songlink_region': songLinkRegion,
};
}
@@ -214,6 +217,7 @@ class DownloadRequestPayload {
requiresContainerConversion: requiresContainerConversion,
allowQualityVariant: allowQualityVariant,
qualityVariant: qualityVariant,
qualityVariantCollisionOnly: qualityVariantCollisionOnly,
songLinkRegion: songLinkRegion,
);
}
+28 -15
View File
@@ -678,6 +678,26 @@ class PlatformBridge {
});
}
static Future<Map<String, dynamic>> createCollisionAwareSafFileFromPath({
required String treeUri,
required String relativeDir,
required String cleanFileName,
required String variantFileName,
required String mimeType,
required String srcPath,
String preservedSuffix = '',
}) {
return _invokeMap('safCreateCollisionAwareFromPath', {
'tree_uri': treeUri,
'relative_dir': relativeDir,
'clean_file_name': cleanFileName,
'variant_file_name': variantFileName,
'mime_type': mimeType,
'src_path': srcPath,
'preserved_suffix': preservedSuffix,
});
}
static Future<void> openContentUri(String uri, {String mimeType = ''}) async {
await _channel.invokeMethod('openContentUri', {
'uri': uri,
@@ -1069,9 +1089,10 @@ class PlatformBridge {
static Future<Map<String, dynamic>> getNativeDownloadWorkerSnapshot({
int sinceStateSerial = 0,
}) async {
final result = await _channel.invokeMethod('getNativeDownloadWorkerSnapshot', {
'since_state_serial': sinceStateSerial,
});
final result = await _channel.invokeMethod(
'getNativeDownloadWorkerSnapshot',
{'since_state_serial': sinceStateSerial},
);
return _decodeMapResult(result);
}
@@ -1212,9 +1233,7 @@ class PlatformBridge {
});
}
static Future<Map<String, dynamic>> loadExtensionsFromDir(
String dirPath,
) {
static Future<Map<String, dynamic>> loadExtensionsFromDir(String dirPath) {
_log.d('loadExtensionsFromDir: $dirPath');
return _invokeMap('loadExtensionsFromDir', {'dir_path': dirPath});
}
@@ -1249,9 +1268,7 @@ class PlatformBridge {
return _invokeMap('upgradeExtension', {'file_path': filePath});
}
static Future<Map<String, dynamic>> checkExtensionUpgrade(
String filePath,
) {
static Future<Map<String, dynamic>> checkExtensionUpgrade(String filePath) {
_log.d('checkExtensionUpgrade: $filePath');
return _invokeMap('checkExtensionUpgrade', {'file_path': filePath});
}
@@ -1311,15 +1328,11 @@ class PlatformBridge {
return _decodeStringListResult(result, 'getMetadataProviderPriority');
}
static Future<Map<String, dynamic>> getExtensionSettings(
String extensionId,
) {
static Future<Map<String, dynamic>> getExtensionSettings(String extensionId) {
return _invokeMap('getExtensionSettings', {'extension_id': extensionId});
}
static Future<Map<String, dynamic>> checkExtensionHealth(
String extensionId,
) {
static Future<Map<String, dynamic>> checkExtensionHealth(String extensionId) {
return _invokeMap('checkExtensionHealth', {'extension_id': extensionId});
}