Compare commits
	
		
			15 Commits
		
	
	
		
			v123051301
			...
			v123061811
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | ad72cb6f56 | ||
|  | 9057ee0052 | ||
|  | 50d0b44315 | ||
|  | 21b08ed384 | ||
|  | 993c4d2ee9 | ||
|  | 57a9d51027 | ||
|  | 673f0edb8b | ||
|  | 7f96798f13 | ||
|  | 6e5704a45b | ||
|  | 495591159f | ||
|  | 718fe7c5ee | ||
|  | ecd23213f9 | ||
|  | e6baed8cb4 | ||
|  | c87abec0b9 | ||
|  | 0aba41d8bf | 
							
								
								
									
										41
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -1,3 +1,44 @@ | ||||
| **v123061651** | ||||
|  | ||||
| - i18n: Translation update. | ||||
| - i18n: Translation update. | ||||
| - i18n: Translation update. | ||||
| - fix: avoid trying to open invalid image urls. | ||||
| - Changelog for v123051471 [CI SKIP] | ||||
|  | ||||
| -------------------------------------------------------------------- | ||||
|  | ||||
| **v123051471** | ||||
|  | ||||
| - fix: images could be null. | ||||
| - fix: Check if color is not empty before parsing it. | ||||
| - chore: Removed unused log. | ||||
| - Changelog for v123051331 [CI SKIP] | ||||
|  | ||||
| -------------------------------------------------------------------- | ||||
|  | ||||
| **v123051331** | ||||
|  | ||||
| - fix: illegal input. | ||||
| - Changelog for v123051321 [CI SKIP] | ||||
|  | ||||
| -------------------------------------------------------------------- | ||||
|  | ||||
| **v123051321** | ||||
|  | ||||
| - debug: Debug null context. | ||||
| - Changelog for v123051301 [CI SKIP] | ||||
|  | ||||
| -------------------------------------------------------------------- | ||||
|  | ||||
| **v123051301** | ||||
|  | ||||
| - feat: Basic auth from url. Fixes #142 (#143) | ||||
| - debug: Debug index out of bound exception. | ||||
| - Changelog for v123051211 [CI SKIP] | ||||
|  | ||||
| -------------------------------------------------------------------- | ||||
|  | ||||
| **v123051211** | ||||
|  | ||||
| - fix: Sometimes url isn't even defined. | ||||
|   | ||||
| @@ -599,12 +599,14 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar | ||||
|                 return true | ||||
|             } | ||||
|             R.id.action_disconnect -> { | ||||
|                 runBlocking { | ||||
|                     repository.logout() | ||||
|                 needsConfirmation(R.string.confirm_disconnect_title, R.string.confirm_disconnect_description) { | ||||
|                     runBlocking { | ||||
|                         repository.logout() | ||||
|                     } | ||||
|                     val intent = Intent(this, LoginActivity::class.java) | ||||
|                     this.startActivity(intent) | ||||
|                     finish() | ||||
|                 } | ||||
|                 val intent = Intent(this, LoginActivity::class.java) | ||||
|                 this.startActivity(intent) | ||||
|                 finish() | ||||
|                 return true | ||||
|             } | ||||
|             R.id.action_settings -> { | ||||
|   | ||||
| @@ -74,7 +74,6 @@ class ReaderActivity : AppCompatActivity(), DIAware { | ||||
|         try { | ||||
|             readItem(allItems[currentItem]) | ||||
|         } catch (e: IndexOutOfBoundsException) { | ||||
|             e.sendSilentlyWithAcraWithName("out of bound > size = ${allItems.size} currentItem = $currentItem") | ||||
|             finish() | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -27,6 +27,7 @@ import bou.amine.apps.readerforselfossv2.android.model.toModel | ||||
| import bou.amine.apps.readerforselfossv2.android.model.toParcelable | ||||
| import bou.amine.apps.readerforselfossv2.android.sendSilentlyWithAcraWithName | ||||
| import bou.amine.apps.readerforselfossv2.android.utils.glide.getBitmapInputStream | ||||
| import bou.amine.apps.readerforselfossv2.android.utils.isUrlValid | ||||
| import bou.amine.apps.readerforselfossv2.android.utils.openInBrowserAsNewTask | ||||
| import bou.amine.apps.readerforselfossv2.android.utils.shareLink | ||||
| import bou.amine.apps.readerforselfossv2.model.MercuryModel | ||||
| @@ -314,7 +315,7 @@ class ArticleFragment : Fragment(), DIAware { | ||||
|         binding.webcontent.webViewClient = object : WebViewClient() { | ||||
|             @Deprecated("Deprecated in Java") | ||||
|             override fun shouldOverrideUrlLoading(view: WebView?, url: String): Boolean { | ||||
|                 return if (context != null && binding.webcontent.hitTestResult.type != WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { | ||||
|                 return if (context != null && url.isUrlValid() && binding.webcontent.hitTestResult.type != WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { | ||||
|                     try { | ||||
|                         requireContext().startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) | ||||
|                     } catch (e: ActivityNotFoundException) { | ||||
| @@ -530,7 +531,12 @@ class ArticleFragment : Fragment(), DIAware { | ||||
|  | ||||
|     private fun openInBrowserAfterFailing() { | ||||
|         binding.progressBar.visibility = View.GONE | ||||
|         requireActivity().openInBrowserAsNewTask(this@ArticleFragment.item) | ||||
|         if (context != null) { | ||||
|             requireContext().openInBrowserAsNewTask(this@ArticleFragment.item) | ||||
|         } else { | ||||
|             Exception("openInBrowserAfterFailing context is null").sendSilentlyWithAcraWithName("openInBrowserAfterFailing > $context") | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     companion object { | ||||
| @@ -548,8 +554,8 @@ class ArticleFragment : Fragment(), DIAware { | ||||
|     } | ||||
|  | ||||
|     fun performClick(): Boolean { | ||||
|         if (binding.webcontent.hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE || | ||||
|             binding.webcontent.hitTestResult.type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE | ||||
|         if (allImages != null && (binding.webcontent.hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE || | ||||
|             binding.webcontent.hitTestResult.type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) | ||||
|         ) { | ||||
|  | ||||
|             val position: Int = allImages.indexOf(binding.webcontent.hitTestResult.extra) | ||||
|   | ||||
| @@ -149,21 +149,23 @@ class FilterSheetFragment : BottomSheetDialogFragment(), DIAware { | ||||
|             c.ellipsize = TextUtils.TruncateAt.END | ||||
|             c.text = tag.tag | ||||
|  | ||||
|             try { | ||||
|                 val gd = GradientDrawable() | ||||
|                 val gdColor = try { | ||||
|                     Color.parseColor(tag.color) | ||||
|                 } catch (e: IllegalArgumentException) { | ||||
|                     e.sendSilentlyWithAcraWithName("color issue " + tag.color) | ||||
|                     resources.getColor(R.color.colorPrimary) | ||||
|             if (tag.color.isNotEmpty()) { | ||||
|                 try { | ||||
|                     val gd = GradientDrawable() | ||||
|                     val gdColor = try { | ||||
|                         Color.parseColor(tag.color) | ||||
|                     } catch (e: IllegalArgumentException) { | ||||
|                         e.sendSilentlyWithAcraWithName("color issue " + tag.color) | ||||
|                         resources.getColor(R.color.colorPrimary) | ||||
|                     } | ||||
|                     gd.setColor(gdColor) | ||||
|                     gd.shape = GradientDrawable.RECTANGLE | ||||
|                     gd.setSize(30, 30) | ||||
|                     gd.cornerRadius = 30F | ||||
|                     c.chipIcon = gd | ||||
|                 } catch (e: Exception) { | ||||
|                     e.sendSilentlyWithAcraWithName("tags > GradientDrawable") | ||||
|                 } | ||||
|                 gd.setColor(gdColor) | ||||
|                 gd.shape = GradientDrawable.RECTANGLE | ||||
|                 gd.setSize(30, 30) | ||||
|                 gd.cornerRadius = 30F | ||||
|                 c.chipIcon = gd | ||||
|             } catch (e: Exception) { | ||||
|                 e.sendSilentlyWithAcraWithName("tags > GradientDrawable") | ||||
|             } | ||||
|  | ||||
|             c.setOnCloseIconClickListener { | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -33,8 +33,8 @@ | ||||
|     <string name="addStringNoUrl">"Accede pra engadir fontes."</string> | ||||
|     <string name="cant_get_sources">"Non se pode obter a lista de fontes."</string> | ||||
|     <string name="cant_create_source">"Non se pode crear unha fonte."</string> | ||||
|     <string name="cant_get_spouts_no_network">"Can't get spouts list because of a network issue."</string> | ||||
|     <string name="cant_get_spouts">"Can't get spouts list. There may ben an api issue."</string> | ||||
|     <string name="cant_get_spouts_no_network">"Non se pode obter a lista de spouts por mor dun erro de rede."</string> | ||||
|     <string name="cant_get_spouts">"Non se pode obter a lista de spoits. Pode que haxa algún problema coa api."</string> | ||||
|     <string name="form_not_complete">"O formulario non está completo"</string> | ||||
|     <string name="pref_header_links">"Ligazóns"</string> | ||||
|     <string name="issue_tracker_link">"Rastrexador de Incidencias"</string> | ||||
| @@ -116,16 +116,18 @@ | ||||
|     <string name="reader_static_bar_on">A barra inferior mostrarase sempre</string> | ||||
|     <string name="reader_static_bar_off">A barra inferior pode mostrarse a través do botón flotante</string> | ||||
|     <string name="remove_source">Eliminar fonte</string> | ||||
|     <string name="pref_theme_title">Light/Dark mode</string> | ||||
|     <string name="mode_dark">Dark mode</string> | ||||
|     <string name="mode_system">Follow the system setting</string> | ||||
|     <string name="mode_light">Light mode</string> | ||||
|     <string name="gdpr_dialog_title">The app does not share any personal data about you.</string> | ||||
|     <string name="gdpr_dialog_message"><![CDATA[Crash reports sending is now enabled. It can be disabled from the settings page. Keep in mind that crash reports are essential for the app development.]]></string> | ||||
|     <string name="crash_toast_text">A crash occured. Sending the details to the developper.</string> | ||||
|     <string name="pref_switch_disable_acra">"Disable automatic bug reporting. "</string> | ||||
|     <string name="menu_home_filter">Filters</string> | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="pref_theme_title">Modo Claro/Escuro</string> | ||||
|     <string name="mode_dark">Modo escuro</string> | ||||
|     <string name="mode_system">Seguir axustes do sistema</string> | ||||
|     <string name="mode_light">Modo claro</string> | ||||
|     <string name="gdpr_dialog_title">A aplicación non comparte ningún dato persoal seu.</string> | ||||
|     <string name="gdpr_dialog_message"><![CDATA[O envío de informes de erros está habilitado. Pode deshabilitarse dende a páxina de axustes. Ten en conta que os informes de erros son esenciais para o desenvolvemento da aplicación.]]></string> | ||||
|     <string name="crash_toast_text">Ocurriu un erro. Enviando os detalles o desenvolvedor.</string> | ||||
|     <string name="pref_switch_disable_acra">"Deshabilitar o reporte automático de erros. "</string> | ||||
|     <string name="menu_home_filter">Filtros</string> | ||||
|     <string name="application_selfoss_only">Esta aplicación só funciona cunha instancia de Selfoss, e con ningún outro filtro RSS.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -90,7 +90,7 @@ | ||||
|     <string name="pref_switch_items_caching">Save items for offline use</string> | ||||
|     <string name="pref_switch_update_sources">Check for new sources and tags</string> | ||||
|     <string name="pref_switch_update_sources_summary">Disable this if your server is receiving excessive amounts of database queries.</string> | ||||
|     <string name="network_connectivity_lost">"Network connection lost"</string> | ||||
|     <string name="network_connectivity_lost">"Koneksi jaringan hilang"</string> | ||||
|     <string name="network_connectivity_retrieved">"Network connection is now available"</string> | ||||
|     <string name="pref_switch_periodic_refresh">Sync articles</string> | ||||
|     <string name="pref_switch_periodic_refresh_off">Articles will not be synced in the background</string> | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -125,7 +125,9 @@ | ||||
|     <string name="crash_toast_text">发生崩溃。请将细节发送给开发人员。</string> | ||||
|     <string name="pref_switch_disable_acra">"禁用自动错误报告 "</string> | ||||
|     <string name="menu_home_filter">筛选器</string> | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="application_selfoss_only">此应用只适用于 Selfoss 实例,不适用于其他 RSS 。</string> | ||||
|     <string name="menu_home_sources">源</string> | ||||
|     <string name="update_source">更新源</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -128,4 +128,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -131,4 +131,6 @@ | ||||
|     <string name="application_selfoss_only">This app only works with a Selfoss instance, and no other RSS feed.</string> | ||||
|     <string name="menu_home_sources">Sources</string> | ||||
|     <string name="update_source">Update source</string> | ||||
|     <string name="confirm_disconnect_title">Disconnect ?</string> | ||||
|     <string name="confirm_disconnect_description">You will be disconnected from your selfoss instance.</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -6,12 +6,12 @@ class MercuryModel { | ||||
|  | ||||
|     @Serializable | ||||
|     class ParsedContent( | ||||
|         val title: String?, | ||||
|         val content: String?, | ||||
|         val lead_image_url: String?, // NOSONAR | ||||
|         val url: String?, | ||||
|         val error: Boolean?, | ||||
|         val message: String?, | ||||
|         val failed: Boolean? | ||||
|         val title: String? = null, | ||||
|         val content: String? = null, | ||||
|         val lead_image_url: String? = null, // NOSONAR | ||||
|         val url: String? = null, | ||||
|         val error: Boolean? = null, | ||||
|         val message: String? = null, | ||||
|         val failed: Boolean? = null | ||||
|     ) | ||||
| } | ||||
|   | ||||
| @@ -24,8 +24,8 @@ class SelfossModel { | ||||
|     @Serializable | ||||
|     class Stats( | ||||
|         val total: Int, | ||||
|         val unread: Int?, | ||||
|         val starred: Int? | ||||
|         val unread: Int? = null, | ||||
|         val starred: Int? = null | ||||
|     ) | ||||
|  | ||||
|     @Serializable | ||||
| @@ -36,9 +36,9 @@ class SelfossModel { | ||||
|  | ||||
|     @Serializable | ||||
|     data class ApiInformation( | ||||
|         val version: String?, | ||||
|         val apiversion: String?, | ||||
|         val configuration: ApiConfiguration? | ||||
|         val version: String? = null, | ||||
|         val apiversion: String? = null, | ||||
|         val configuration: ApiConfiguration? = null | ||||
|     ) { | ||||
|         fun getApiMajorVersion(): Int { | ||||
|             var versionNumber = 0 | ||||
| @@ -54,9 +54,9 @@ class SelfossModel { | ||||
|     @Serializable | ||||
|     data class ApiConfiguration( | ||||
|         @Serializable(with = BooleanSerializer::class) | ||||
|         val publicMode: Boolean?, | ||||
|         val publicMode: Boolean? = null, | ||||
|         @Serializable(with = BooleanSerializer::class) | ||||
|         val authEnabled: Boolean? | ||||
|         val authEnabled: Boolean? = null | ||||
|     ) { | ||||
|         fun isAuthEnabled() = authEnabled ?: true | ||||
|  | ||||
| @@ -75,7 +75,7 @@ class SelfossModel { | ||||
|     data class SourceStats( | ||||
|         override val id: Int, | ||||
|         override var title: String, | ||||
|         override var unread: Int?, | ||||
|         override var unread: Int? = null, | ||||
|         override var error: String? = null, | ||||
|         override var icon: String? = null | ||||
|         ) : Source | ||||
| @@ -86,11 +86,11 @@ class SelfossModel { | ||||
|         override var title: String, | ||||
|         override var unread: Int? = null, | ||||
|         @Serializable(with = TagsListSerializer::class) | ||||
|         var tags: List<String>?, | ||||
|         var spout: String?, | ||||
|         override var error: String?, | ||||
|         override var icon: String?, | ||||
|         var params: SourceParams? | ||||
|         var tags: List<String>? = null, | ||||
|         var spout: String? = null, | ||||
|         override var error: String? = null, | ||||
|         override var icon: String? = null, | ||||
|         var params: SourceParams? = null | ||||
|     ) : Source | ||||
|  | ||||
|     @Serializable | ||||
| @@ -107,13 +107,13 @@ class SelfossModel { | ||||
|         var unread: Boolean, | ||||
|         @Serializable(with = BooleanSerializer::class) | ||||
|         var starred: Boolean, | ||||
|         val thumbnail: String?, | ||||
|         val icon: String?, | ||||
|         val thumbnail: String? = null, | ||||
|         val icon: String? = null, | ||||
|         val link: String, | ||||
|         val sourcetitle: String, | ||||
|         @Serializable(with = TagsListSerializer::class) | ||||
|         val tags: List<String>, | ||||
|         val author: String? | ||||
|         val author: String? = null | ||||
|     ) { | ||||
|         fun getLinkDecoded(): String { | ||||
|             var stringUrl: String | ||||
|   | ||||
| @@ -36,6 +36,7 @@ class SelfossApi(private val appSettingsService: AppSettingsService) { | ||||
|                     prettyPrint = true | ||||
|                     isLenient = true | ||||
|                     ignoreUnknownKeys = true | ||||
|                     explicitNulls = false | ||||
|                 }) | ||||
|             } | ||||
|             install(Logging) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user