mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-08-05 19:11:11 +00:00
Merge branch 'cmp-rewrite' into simkl
This commit is contained in:
commit
e9b4005391
5 changed files with 211 additions and 29 deletions
Binary file not shown.
|
|
@ -89,4 +89,53 @@ class P2pStreamingEngineAndroidTest {
|
|||
),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun globalCachePressureDoesNotBecomeTerminalError() {
|
||||
assertNull(
|
||||
unexpectedTorrentError(
|
||||
requestId = 0L,
|
||||
eventTorrentId = null,
|
||||
currentTorrentId = "torrent",
|
||||
message = "disk cache budget is exceeded by protected torrent data",
|
||||
fallbackMessage = "unknown",
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun matchingUnsolicitedTorrentFailureBecomesTerminalError() {
|
||||
assertEquals(
|
||||
P2pStreamingState.Error("file write failed"),
|
||||
unexpectedTorrentError(
|
||||
requestId = 0L,
|
||||
eventTorrentId = "torrent",
|
||||
currentTorrentId = "torrent",
|
||||
message = "file write failed",
|
||||
fallbackMessage = "unknown",
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun commandAndStaleTorrentFailuresAreIgnored() {
|
||||
assertNull(
|
||||
unexpectedTorrentError(
|
||||
requestId = 9L,
|
||||
eventTorrentId = "torrent",
|
||||
currentTorrentId = "torrent",
|
||||
message = "failed",
|
||||
fallbackMessage = "unknown",
|
||||
)
|
||||
)
|
||||
assertNull(
|
||||
unexpectedTorrentError(
|
||||
requestId = 0L,
|
||||
eventTorrentId = "old-torrent",
|
||||
currentTorrentId = "torrent",
|
||||
message = "failed",
|
||||
fallbackMessage = "unknown",
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,25 @@ internal fun unexpectedStreamStopError(
|
|||
)
|
||||
}
|
||||
|
||||
internal fun unexpectedTorrentError(
|
||||
requestId: Long,
|
||||
eventTorrentId: String?,
|
||||
currentTorrentId: String?,
|
||||
message: String?,
|
||||
fallbackMessage: String,
|
||||
): P2pStreamingState.Error? {
|
||||
if (requestId != 0L ||
|
||||
eventTorrentId == null ||
|
||||
currentTorrentId == null ||
|
||||
eventTorrentId != currentTorrentId
|
||||
) {
|
||||
return null
|
||||
}
|
||||
return P2pStreamingState.Error(
|
||||
message?.trim()?.takeIf(String::isNotEmpty) ?: fallbackMessage,
|
||||
)
|
||||
}
|
||||
|
||||
actual object P2pStreamingEngine {
|
||||
private data class EngineConfigurationKey(
|
||||
val uploadEnabled: Boolean,
|
||||
|
|
@ -517,16 +536,16 @@ actual object P2pStreamingEngine {
|
|||
if (engine !== activeEngine) return@collect
|
||||
when (event.type) {
|
||||
NuvioEventType.TorrentError -> {
|
||||
if (event.requestId != 0L) return@collect
|
||||
val terminalError = P2pStreamingState.Error(
|
||||
event.message ?: localizedP2pUnknownTorrentError()
|
||||
)
|
||||
val fallbackMessage = localizedP2pUnknownTorrentError()
|
||||
synchronized(lifecycleLock) {
|
||||
if (engine !== activeEngine ||
|
||||
(event.torrentId != null && event.torrentId != currentTorrentId)
|
||||
) {
|
||||
return@synchronized
|
||||
}
|
||||
if (engine !== activeEngine) return@synchronized
|
||||
val terminalError = unexpectedTorrentError(
|
||||
requestId = event.requestId,
|
||||
eventTorrentId = event.torrentId,
|
||||
currentTorrentId = currentTorrentId,
|
||||
message = event.message,
|
||||
fallbackMessage = fallbackMessage,
|
||||
) ?: return@synchronized
|
||||
streamGeneration += 1
|
||||
statsJob?.cancel()
|
||||
statsJob = null
|
||||
|
|
|
|||
|
|
@ -1556,12 +1556,12 @@
|
|||
<string name="notifications_episode_release_body_title">%1$s je teraz dostupný</string>
|
||||
<string name="notifications_channel_episode_releases_name">Vydania epizód</string>
|
||||
<string name="parental_alcohol">Alkohol/Drogy</string>
|
||||
<string name="parental_frightening">Desivé</string>
|
||||
<string name="parental_frightening">Strašidelnosť</string>
|
||||
<string name="parental_nudity">Nahota</string>
|
||||
<string name="parental_profanity">Vulgárny jazyk</string>
|
||||
<string name="parental_severity_mild">Mierny</string>
|
||||
<string name="parental_severity_moderate">Stredný</string>
|
||||
<string name="parental_severity_severe">Závažný</string>
|
||||
<string name="parental_severity_mild">Nízke</string>
|
||||
<string name="parental_severity_moderate">Mierne</string>
|
||||
<string name="parental_severity_severe">Intenzívne</string>
|
||||
<string name="parental_violence">Násilie</string>
|
||||
<string name="person_role_creator">Tvorca</string>
|
||||
<string name="person_role_director">Režisér</string>
|
||||
|
|
@ -1927,4 +1927,134 @@
|
|||
<string name="settings_playback_libmpv_yuv420p">Kompatibilita libmpv YUV420P</string>
|
||||
<string name="settings_playback_libmpv_yuv420p_description">Vynútiť výstup YUV420P pre zariadenia s problémami renderera alebo farieb.</string>
|
||||
<string name="streams_loading_skip_segments">Načítavajú sa segmenty preskočenia…</string>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="compose_player_languages">Jazyky</string>
|
||||
<string name="compose_settings_page_privacy_policy">Zásady ochrany osobných údajov</string>
|
||||
<string name="compose_settings_root_privacy_policy_description">Zistite, ako Nuvio spracováva vaše údaje</string>
|
||||
<string name="settings_advanced_section_diagnostics">DIAGNOSTIKA</string>
|
||||
<string name="settings_advanced_sentry_reports">Hlásenia o pádoch (Sentry)</string>
|
||||
<string name="settings_advanced_sentry_reports_subtitle">Odosielať hlásenia o pádoch a zamrznutiach (ANR) s bezpečným kontextom. Predvolene zapnuté.</string>
|
||||
<string name="sentry_enable_dialog_title">Zapnúť hlásenia o pádoch?</string>
|
||||
<string name="sentry_enable_dialog_subtitle">Hlásenia o pádoch pomáhajú identifikovať chyby špecifické pre konkrétne zariadenia bez toho, aby ste museli chybové záznamy (ADB logy) vytvárať ručne.</string>
|
||||
<string name="sentry_disable_dialog_title">Vypnúť hlásenia o pádoch?</string>
|
||||
<string name="sentry_disable_dialog_subtitle">Budúce pády a zamrznutia z tohto zariadenia nebudú nahlásené. To môže výrazne skomplikovať opravu chýb na tomto zariadení.</string>
|
||||
<string name="sentry_help_title">Ako to pomáha</string>
|
||||
<string name="sentry_help_body">Hlásenia sa zoskupujú podľa verzie aplikácie, modelu zariadenia, verzie systému Android a výpisu zásobníka (stack trace), aby sa najprv opravili najčastejšie reálne pády.</string>
|
||||
<string name="sentry_sent_title">Odosiela sa</string>
|
||||
<string name="sentry_sent_body">Pády, aktuálne ANR (zamrznutia), výpisy zásobníka, verzia aplikácie, typ zostavy, variant (flavor), metadáta zariadenia a OS plus bezpečné sieťové stopy (metóda, hostiteľ, cesta, stav, trvanie a typ výnimky).</string>
|
||||
<string name="sentry_not_sent_title">Neodosiela sa</string>
|
||||
<string name="sentry_not_sent_body">Heslá, prístupové tokeny, obnovovacie tokeny, telá požiadaviek a odpovedí, hlavičky, cookies, snímky obrazovky, štruktúra zobrazenia (view hierarchy), záznam relácie, neupravená diagnostika a hodnoty parametrov alebo fragmentov v URL adrese streamu.</string>
|
||||
<string name="sentry_keep_enabled">Ponechať zapnuté</string>
|
||||
<string name="sentry_turn_off">Vypnúť</string>
|
||||
<string name="sentry_turn_on">Zapnúť</string>
|
||||
<string name="downloads_open_directory">Otvoriť priečinok stiahnutých súborov</string>
|
||||
<string name="downloads_open_directory_failed">Nepodarilo sa otvoriť priečinok stiahnutých súborov</string>
|
||||
<string name="settings_appearance_nav_bar_style">Navigačný panel</string>
|
||||
<string name="settings_appearance_nav_bar_style_sheet_title">Štýl navigačného panela</string>
|
||||
<string name="settings_nav_bar_style_adaptive">Adaptívny</string>
|
||||
<string name="settings_nav_bar_style_expanded">Vždy rozbalený</string>
|
||||
<string name="settings_nav_bar_style_compact">Vždy kompaktný</string>
|
||||
<string name="settings_nav_bar_style_classic">Klasický</string>
|
||||
<string name="layout_catalog_type">Zobrazovať typ katalógu</string>
|
||||
<string name="layout_catalog_type_sub">Zobraziť príponu typu vedľa názvu katalógu (Film/Seriál).</string>
|
||||
<string name="settings_card_depth_title">EFEKT HĹBKY KARTY</string>
|
||||
<string name="settings_card_depth_description">Pridá osvetlený horný okraj a jemný lesk k obrazovým kartám pre jemný pocit hĺbky.</string>
|
||||
<string name="settings_card_depth_enabled">Povoliť efekt hĺbky</string>
|
||||
<string name="settings_card_depth_edge">Žiara okraja</string>
|
||||
<string name="settings_card_depth_edge_subtle">Jemná</string>
|
||||
<string name="settings_card_depth_edge_balanced">Vyvážená</string>
|
||||
<string name="settings_card_depth_edge_bold">Tučná</string>
|
||||
<string name="settings_card_depth_sheen">Horný lesk</string>
|
||||
<string name="settings_card_depth_sheen_off">Vypnuté</string>
|
||||
<string name="settings_card_depth_sheen_soft">Jemný</string>
|
||||
<string name="settings_card_depth_sheen_bright">Jasný</string>
|
||||
<string name="settings_card_depth_apply_to">Aplikovať na</string>
|
||||
<string name="settings_card_depth_fine_tune">Prispôsobiť</string>
|
||||
<string name="settings_card_depth_fine_tune_title">Detailné nastavenie hĺbky</string>
|
||||
<string name="settings_card_depth_fine_tune_hint">Potiahnite bod doprava pre jasnejšiu hranu, nahor pre väčší lesk. Pomocou posuvníka rozšírite žiaru po celom obvode.</string>
|
||||
<string name="settings_card_depth_pad_edge_axis">Žiara okraja →</string>
|
||||
<string name="settings_card_depth_pad_sheen_axis">↑ Lesk</string>
|
||||
<string name="settings_card_depth_edge_value">Žiara okraja</string>
|
||||
<string name="settings_card_depth_sheen_value">Lesk</string>
|
||||
<string name="settings_card_depth_edge_coverage">Pokrytie okraja</string>
|
||||
<string name="settings_card_depth_coverage_top">Iba horná časť</string>
|
||||
<string name="settings_card_depth_coverage_half">Polovica</string>
|
||||
<string name="settings_card_depth_coverage_full">Celý obvod</string>
|
||||
<string name="settings_card_depth_coverage_value">Pokrytie okraja</string>
|
||||
<string name="settings_card_depth_preview_title">Názov epizódy</string>
|
||||
<string name="settings_card_depth_preview_meta">S1 · E1 · 45 min</string>
|
||||
<string name="settings_card_depth_surface_posters">Plagáty</string>
|
||||
<string name="settings_card_depth_surface_continue_watching">Kde ste skončili</string>
|
||||
<string name="settings_card_depth_surface_episodes">Karty epizód</string>
|
||||
<string name="settings_card_depth_surface_cast">Obsadenie</string>
|
||||
<string name="settings_card_depth_surface_trailers">Upútavky</string>
|
||||
<string name="settings_continue_watching_sort_mode_split_upcoming">Oddeliť riadok Nespustené</string>
|
||||
<string name="settings_continue_watching_sort_mode_split_upcoming_desc">Presunúť neodvysielané epizódy do samostatného riadka Nespustené</string>
|
||||
<string name="upcoming_section_title">Nespustené</string>
|
||||
<string name="settings_meta_background_mode">Režim pozadia</string>
|
||||
<string name="settings_meta_background_mode_description">Vyberte, ako sa má zobrazovať pozadie za stránkami s metadátami.</string>
|
||||
<string name="settings_meta_background_mode_normal">Normálny</string>
|
||||
<string name="settings_meta_background_mode_normal_description">Použiť štandardné pozadie aplikácie.</string>
|
||||
<string name="settings_meta_background_mode_cinematic">Kino</string>
|
||||
<string name="settings_meta_background_mode_cinematic_description">Zobraziť jemne rozostrené pozadie za stránkou.</string>
|
||||
<string name="settings_meta_background_mode_dominant">Dominantná farba</string>
|
||||
<string name="settings_meta_background_mode_dominant_description">Prispôsobiť pozadie stránky dominantnej farbe z obrázka na pozadí.</string>
|
||||
<string name="settings_playback_parental_guide">Upozornenia na obsah</string>
|
||||
<string name="settings_playback_parental_guide_description">Zobraziť rodičovské upozornenie pri spustení prehrávania.</string>
|
||||
<string name="settings_tmdb_module_release_dates">Dátumy vydania</string>
|
||||
<string name="settings_tmdb_module_release_dates_description">Používať dátumy vysielania z TMDB namiesto presných časov vydania z doplnkov</string>
|
||||
<string name="source_mal">MyAnimeList</string>
|
||||
<string name="updates_debug_test_complete">Test bannera dokončený</string>
|
||||
<string name="updates_debug_test_description">Zobraziť náhľad bannera a simulovaného priebehu sťahovania.</string>
|
||||
<string name="updates_debug_test_title">Otestovať banner aktualizácie</string>
|
||||
<string name="updates_no_release_notes">Neboli poskytnuté žiadne poznámky k vydaniu.</string>
|
||||
<string name="trakt_authorization_expired_reconnect">Vaša autorizácia v službe Trakt vypršala. Znova pripojte svoj účet Trakt.</string>
|
||||
<string name="collections_import_error_collection_duplicate_id">ID zbierky „%1$s“ sa používa viac ako raz.</string>
|
||||
<string name="collections_import_error_folder_duplicate_id">ID priečinka „%1$s“ sa v „%2$s“ používajú viac ako raz.</string>
|
||||
<string name="library_filter_all_types">Všetky typy</string>
|
||||
<string name="library_filter_list">Vybrať zoznam</string>
|
||||
<string name="library_filter_sort">Zoradiť knižnicu</string>
|
||||
<string name="library_filter_type">Vybrať typ</string>
|
||||
<string name="library_layout_show_horizontal">Zobraziť horizontálne poličky</string>
|
||||
<string name="library_layout_show_vertical">Zobraziť vertikálnu mriežku</string>
|
||||
<string name="library_sort_added_asc">Najstaršie pridané</string>
|
||||
<string name="library_sort_added_desc">Najnovšie pridané</string>
|
||||
<string name="library_sort_title_asc">Názov A–Z</string>
|
||||
<string name="library_sort_title_desc">Názov Z–A</string>
|
||||
<string name="library_sort_trakt_order">Poradie Trakt</string>
|
||||
<string name="cloud_library_search_label">Hľadať v cloudovej knižnici</string>
|
||||
<string name="settings_p2p_profile_title">Profil pre torrenty</string>
|
||||
<string name="settings_p2p_profile_soft">Šetrný</string>
|
||||
<string name="settings_p2p_profile_balanced">Vyvážený</string>
|
||||
<string name="settings_p2p_profile_fast">Rýchly</string>
|
||||
<string name="settings_p2p_profile_soft_description">Používa menej spojení (peerov) na zníženie záťaže batérie a siete</string>
|
||||
<string name="settings_p2p_profile_balanced_description">Odporúčaný pomer medzi rýchlosťou spustenia a stabilitou pripojenia</string>
|
||||
<string name="settings_p2p_profile_fast_description">Používa viac spojení (peerov) pre náročné torrenty alebo torrenty s vysokým dátovým tokom</string>
|
||||
<string name="settings_p2p_cache_size_title">Veľkosť vyrovnávacej pamäte torrentov</string>
|
||||
<string name="settings_p2p_cache_none">Bez trvalej vyrovnávacej pamäte</string>
|
||||
<string name="settings_p2p_cache_2_gb">2 GB</string>
|
||||
<string name="settings_p2p_cache_5_gb">5 GB</string>
|
||||
<string name="settings_p2p_cache_10_gb">10 GB</string>
|
||||
<string name="settings_p2p_clear_cache_title">Vymazať vyrovnávaciu pamäť torrentov</string>
|
||||
<string name="settings_p2p_clear_cache_usage">Aktuálne využité: %1$s</string>
|
||||
<string name="settings_p2p_clear_cache_usage_pending">Využitie sa meria po spustení P2P; klepnutím vymažete vyrovnávaciu pamäť torrentov</string>
|
||||
<string name="settings_p2p_clear_cache_clearing">Mažú sa neaktívne dáta torrentov…</string>
|
||||
<string name="settings_p2p_clear_cache_playback_active">Pred vymazaním vyrovnávacej pamäte zastavte prehrávanie P2P</string>
|
||||
<string name="settings_p2p_clear_cache_done">Vymazaných %1$s neaktívnych dát torrentov</string>
|
||||
<string name="settings_p2p_clear_cache_failed">Nepodarilo sa vymazať vyrovnávaciu pamäť torrentov</string>
|
||||
<string name="player_torrent_fetching_metadata">Získavajú sa metadáta torrentu…</string>
|
||||
<string name="player_torrent_preparing_stream">Pripravuje sa stream torrentu…</string>
|
||||
<string name="player_torrent_connecting_status">%1$s · %2$s · %3$s</string>
|
||||
<string name="player_torrent_loading_status">Stiahnuté: %1$s · %2$s · %3$s</string>
|
||||
<string name="person_detail_born">Dátum narodenia</string>
|
||||
<string name="person_detail_place_of_birth">Miesto narodenia</string>
|
||||
<string name="person_detail_credits">Tvorba / Účinkovanie</string>
|
||||
<string name="person_detail_biography">Biografia</string>
|
||||
<string name="entity_browse_country">Krajina</string>
|
||||
<string name="entity_browse_type">Typ</string>
|
||||
<string name="entity_browse_catalogue">Katalóg</string>
|
||||
<string name="entity_browse_about">O programe</string>
|
||||
<string name="player_external_loading_subtitles">Načítavajú sa titulky z doplnkov...</string>
|
||||
<string name="player_external_downloading_subtitles">Sťahujú sa titulky...</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import androidx.compose.foundation.lazy.items
|
|||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.Close
|
||||
import androidx.compose.material.icons.rounded.History
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
|
|
@ -478,21 +477,6 @@ private fun SearchRecentRow(
|
|||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.background(
|
||||
color = MaterialTheme.colorScheme.surface,
|
||||
shape = RoundedCornerShape(999.dp),
|
||||
)
|
||||
.padding(8.dp),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
Icon(
|
||||
imageVector = Icons.Rounded.History,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
)
|
||||
}
|
||||
Text(
|
||||
text = query,
|
||||
modifier = Modifier.weight(1f),
|
||||
|
|
|
|||
Loading…
Reference in a new issue