diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index b7b19aa9..45a8e851 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -100,3 +100,10 @@ # Native code reflects into multiple classes/methods under is.xyz.mpv, # so keep the whole package to avoid JNI lookup crashes after R8. -keep class is.xyz.mpv.** { *; } + +# ── Missing class stubs (referenced by cloudstream3 / jsoup / newpipe) ──────── +-dontwarn org.mozilla.javascript.** +-dontwarn com.google.re2j.** +-dontwarn javax.script.** +-dontwarn okhttp3.internal.sse.** +-dontwarn org.jsoup.helper.Re2jRegex diff --git a/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt b/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt index 7b4edd80..0356c808 100644 --- a/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt +++ b/app/src/main/java/com/nuvio/tv/core/server/AddonWebPage.kt @@ -871,9 +871,9 @@ object AddonWebPage {
- - - + + +
@@ -895,8 +895,8 @@ object AddonWebPage {
- - + +
${context.getString(R.string.web_no_catalogs)}
@@ -905,28 +905,28 @@ object AddonWebPage {
- +
- - + +
- - - + + +
-
No collections yet
+
${context.getString(R.string.web_no_collections)}
-
Import Collections
+
${context.getString(R.string.web_import_collections_title)}
- - - + + +
@@ -973,6 +973,39 @@ var pollTimer = null; var pollStartTime = 0; var POLL_TIMEOUT = 120000; var POLL_INTERVAL = 1500; + +var i18n = { + newCollection: '${context.getString(R.string.collections_new).replace("'", "\\'")}', + backdrop: '${context.getString(R.string.collections_editor_backdrop).replace("'", "\\'")}', + pinAbove: '${context.getString(R.string.collections_editor_pin_above).replace("'", "\\'")}', + focusGlow: '${context.getString(R.string.collections_editor_focus_glow).replace("'", "\\'")}', + viewMode: '${context.getString(R.string.collections_editor_view_mode).replace("'", "\\'")}', + tabs: '${context.getString(R.string.collections_editor_view_mode_tabs).replace("'", "\\'")}', + rows: '${context.getString(R.string.collections_editor_view_mode_rows).replace("'", "\\'")}', + followHome: '${context.getString(R.string.collections_editor_view_mode_follow).replace("'", "\\'")}', + showAllTab: '${context.getString(R.string.collections_editor_show_all_tab).replace("'", "\\'")}', + cover: '${context.getString(R.string.collections_editor_cover).replace("'", "\\'")}', + coverNone: '${context.getString(R.string.collections_editor_cover_none).replace("'", "\\'")}', + coverEmoji: '${context.getString(R.string.collections_editor_cover_emoji).replace("'", "\\'")}', + coverImage: '${context.getString(R.string.collections_editor_cover_image_url).replace("'", "\\'")}', + focusGif: '${context.getString(R.string.collections_editor_focus_gif).replace("'", "\\'")}', + playGif: '${context.getString(R.string.collections_editor_play_gif).replace("'", "\\'")}', + tileShape: '${context.getString(R.string.collections_editor_tile_shape).replace("'", "\\'")}', + hideTitle: '${context.getString(R.string.collections_editor_hide_title).replace("'", "\\'")}', + catalogs: '${context.getString(R.string.collections_editor_catalogs).replace("'", "\\'")}', + addCatalog: '${context.getString(R.string.collections_editor_add_catalog).replace("'", "\\'")}', + addFolder: '${context.getString(R.string.collections_editor_add_folder).replace("'", "\\'")}', + folders: '${context.getString(R.string.collections_editor_folders).replace("'", "\\'")}', + hidden: '${context.getString(R.string.web_badge_disabled).replace("'", "\\'")}', + display: '${context.getString(R.string.collections_editor_display).replace("'", "\\'")}', + shape: '${context.getString(R.string.collections_editor_tile_shape).replace("'", "\\'")}', + shapePoster: '${context.getString(R.string.collections_editor_shape_poster).replace("'", "\\'")}', + shapeWide: '${context.getString(R.string.collections_editor_shape_wide).replace("'", "\\'")}', + shapeSquare: '${context.getString(R.string.collections_editor_shape_square).replace("'", "\\'")}', + tapToPickEmoji: '${context.getString(R.string.collections_editor_cover_emoji).replace("'", "\\'")}', + added: '${context.getString(R.string.web_btn_add).replace("'", "\\'")}', + add: '+ ${context.getString(R.string.web_btn_add).replace("'", "\\'")}' +}; var connectionLost = false; var consecutiveErrors = 0; var activeTab = 'addons'; @@ -1247,7 +1280,7 @@ function renderCatalogs() { '
' + '
' + '
' + escapeHtml(formatCatalogTitle(catalog.catalogName, catalog.type)) + - (isCollection ? 'Collection' : '') + + (isCollection ? '${context.getString(R.string.web_badge_collection).replace("'", "\\'")}' : '') + (catalog.isDisabled ? '${context.getString(R.string.web_badge_disabled).replace("'", "\\'")}' : '') + '
' + '
' + escapeHtml(catalog.addonName) + '
' + @@ -1577,7 +1610,7 @@ function isCollectionDisabled(ci) { } function addCollection() { - collections.push({ id: generateId(), title: 'New Collection', backdropImageUrl: null, pinToTop: false, focusGlowEnabled: true, viewMode: 'TABBED_GRID', showAllTab: true, folders: [] }); + collections.push({ id: generateId(), title: i18n.newCollection, backdropImageUrl: null, pinToTop: false, focusGlowEnabled: true, viewMode: 'TABBED_GRID', showAllTab: true, folders: [] }); expandedCollection = collections.length - 1; expandedFolder = null; renderCollections(); @@ -1782,7 +1815,7 @@ function renderCollections() { '
' + '' + '' + - (disabled ? 'Hidden' : '') + + (disabled ? '' + i18n.hidden + '' : '') + (errors.length > 0 ? '' + errors.length + ' issue' + (errors.length > 1 ? 's' : '') + '' : '') + '
' + '' + - '' + - '' + + '' + + '' + + '' + '
' + '
' + ((col.viewMode === 'TABBED_GRID' || !col.viewMode) ? '
' + - 'Show "All" tab' + + '' + i18n.showAllTab + '' + '