fix: improve history import logic & m3u file picker issue at Android 7-9
This commit is contained in:
@@ -22,8 +22,8 @@ android {
|
||||
applicationId = "com.antoniegil.astronia"
|
||||
minSdk = 24
|
||||
targetSdk = 36
|
||||
versionCode = 1032
|
||||
versionName = "1.0.3"
|
||||
versionCode = 1040
|
||||
versionName = "1.0.4"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables { useSupportLibrary = true }
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.antoniegil.astronia.ui.page
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
@@ -228,7 +229,12 @@ fun HomePage(
|
||||
trailingIcon = {
|
||||
Row {
|
||||
IconButton(onClick = {
|
||||
filePickerLauncher.launch(arrayOf("audio/x-mpegurl", "application/vnd.apple.mpegurl", "audio/mpegurl"))
|
||||
val mimeTypes = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
|
||||
arrayOf("*/*")
|
||||
} else {
|
||||
arrayOf("audio/x-mpegurl", "application/vnd.apple.mpegurl", "audio/mpegurl")
|
||||
}
|
||||
filePickerLauncher.launch(mimeTypes)
|
||||
}) {
|
||||
Icon(Icons.Outlined.FolderOpen, stringResource(R.string.local_import))
|
||||
}
|
||||
|
||||
@@ -93,13 +93,31 @@ object DataManager {
|
||||
return Pair(false, 0)
|
||||
}
|
||||
|
||||
val prefManager = SettingsManager.getInstance(context)
|
||||
val historyItems = SettingsManager.parseHistoryJson(jsonString)
|
||||
|
||||
if (historyItems.isEmpty()) {
|
||||
return Pair(false, 0)
|
||||
}
|
||||
|
||||
val prefManager = SettingsManager.getInstance(context)
|
||||
val existingHistory = prefManager.getHistory()
|
||||
val existingUrls = existingHistory.map { it.url }.toSet()
|
||||
|
||||
prefManager.clearHistory()
|
||||
|
||||
var successCount = 0
|
||||
val mergedItems = mutableListOf<HistoryItem>()
|
||||
mergedItems.addAll(existingHistory)
|
||||
|
||||
historyItems.forEach { item ->
|
||||
if (!existingUrls.contains(item.url)) {
|
||||
mergedItems.add(item)
|
||||
}
|
||||
}
|
||||
|
||||
mergedItems.sortByDescending { it.timestamp }
|
||||
|
||||
var successCount = 0
|
||||
mergedItems.forEach { item ->
|
||||
prefManager.addOrUpdateHistory(
|
||||
item.url,
|
||||
item.name,
|
||||
|
||||
Reference in New Issue
Block a user