mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-02 13:44:54 +00:00
feat: fix meta retry logic
This commit is contained in:
parent
81cd7933eb
commit
3dad199b6f
2 changed files with 19 additions and 8 deletions
|
|
@ -217,12 +217,13 @@ object MetaDetailsRepository {
|
|||
id: String,
|
||||
includeMdbList: Boolean,
|
||||
): MetaDetails? {
|
||||
val baseUrl = manifest.transportUrl
|
||||
.substringBefore("?")
|
||||
.removeSuffix("/manifest.json")
|
||||
val url = "$baseUrl/meta/$type/$id.json"
|
||||
|
||||
return try {
|
||||
TmdbSettingsRepository.ensureLoaded()
|
||||
val baseUrl = manifest.transportUrl
|
||||
.substringBefore("?")
|
||||
.removeSuffix("/manifest.json")
|
||||
val url = "$baseUrl/meta/$type/$id.json"
|
||||
log.d { "Fetching meta from: $url" }
|
||||
val payload = httpGetText(url)
|
||||
log.d { "Raw payload length=${payload.length}, first 500 chars: ${payload.take(500)}" }
|
||||
|
|
@ -254,7 +255,7 @@ object MetaDetailsRepository {
|
|||
enriched
|
||||
} catch (e: Throwable) {
|
||||
if (e is CancellationException) throw e
|
||||
log.e(e) { "Failed to fetch/parse meta from ${manifest.transportUrl}" }
|
||||
log.e(e) { "Failed to fetch/parse meta from $url (manifest=${manifest.transportUrl})" }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import androidx.compose.foundation.layout.widthIn
|
|||
import androidx.compose.foundation.layout.statusBars
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
|
|
@ -140,7 +141,7 @@ fun MetaDetailsScreen(
|
|||
PlayerSettingsRepository.ensureLoaded()
|
||||
PlayerSettingsRepository.uiState
|
||||
}.collectAsStateWithLifecycle()
|
||||
val needsFreshLoad = displayedMeta == null && !uiState.isLoading
|
||||
var autoLoadAttempted by remember(type, id) { mutableStateOf(false) }
|
||||
var selectedEpisodeForActions by remember(type, id) { mutableStateOf<MetaVideo?>(null) }
|
||||
val commentsEnabled by remember {
|
||||
TraktCommentsSettings.ensureLoaded()
|
||||
|
|
@ -186,8 +187,11 @@ fun MetaDetailsScreen(
|
|||
isCommentsLoading = false
|
||||
}
|
||||
|
||||
LaunchedEffect(type, id, needsFreshLoad) {
|
||||
if (needsFreshLoad) MetaDetailsRepository.load(type, id)
|
||||
LaunchedEffect(type, id, displayedMeta, uiState.isLoading, autoLoadAttempted) {
|
||||
if (!autoLoadAttempted && displayedMeta == null && !uiState.isLoading) {
|
||||
autoLoadAttempted = true
|
||||
MetaDetailsRepository.load(type, id)
|
||||
}
|
||||
}
|
||||
|
||||
Box(
|
||||
|
|
@ -221,6 +225,12 @@ fun MetaDetailsScreen(
|
|||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
Button(
|
||||
onClick = { MetaDetailsRepository.load(type, id) },
|
||||
) {
|
||||
Text("Retry")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue