From b1a32496bae100b8db536f73599c76ba78bed28f Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 12 Dec 2022 02:33:21 +0530 Subject: [PATCH] refactor: improve skippability of Composables --- .../android/injection/HTMLConverterModule.kt | 17 ++++----------- .../claw/android/ui/util/HTMLConverterImpl.kt | 21 +++++++++++++++++++ .../claw/common/comments/HTMLConverter.kt | 3 +++ .../claw/common/posts/PostActions.kt | 2 ++ .../claw/common/urllauncher/UrlLauncher.kt | 2 ++ 5 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 android/src/main/kotlin/dev/msfjarvis/claw/android/ui/util/HTMLConverterImpl.kt diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/HTMLConverterModule.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/HTMLConverterModule.kt index 23b7e84e..bb90c45f 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/HTMLConverterModule.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/injection/HTMLConverterModule.kt @@ -8,22 +8,13 @@ package dev.msfjarvis.claw.android.injection import com.deliveryhero.whetstone.app.ApplicationScope import com.squareup.anvil.annotations.ContributesTo +import dagger.Binds import dagger.Module -import dagger.Provides +import dev.msfjarvis.claw.android.ui.util.HTMLConverterImpl import dev.msfjarvis.claw.common.comments.HTMLConverter -import io.github.furstenheim.CopyDown @Module @ContributesTo(ApplicationScope::class) -object HTMLConverterModule { - - @Provides - fun provideHTMLConverter() = - object : HTMLConverter { - private val copydown = CopyDown() - - override fun convertHTMLToMarkdown(html: String): String { - return copydown.convert(html) - } - } +interface HTMLConverterModule { + @Binds fun HTMLConverterImpl.bind(): HTMLConverter } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/util/HTMLConverterImpl.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/util/HTMLConverterImpl.kt new file mode 100644 index 00000000..1996cdcf --- /dev/null +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/util/HTMLConverterImpl.kt @@ -0,0 +1,21 @@ +/* + * Copyright © 2022 Harsh Shandilya. + * Use of this source code is governed by an MIT-style + * license that can be found in the LICENSE file or at + * https://opensource.org/licenses/MIT. + */ +package dev.msfjarvis.claw.android.ui.util + +import androidx.compose.runtime.Stable +import dev.msfjarvis.claw.common.comments.HTMLConverter +import io.github.furstenheim.CopyDown +import javax.inject.Inject + +@Stable +class HTMLConverterImpl @Inject constructor() : HTMLConverter { + private val copydown = CopyDown() + + override fun convertHTMLToMarkdown(html: String): String { + return copydown.convert(html) + } +} diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/HTMLConverter.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/HTMLConverter.kt index 51d3fcf0..50c438a2 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/HTMLConverter.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/HTMLConverter.kt @@ -6,7 +6,10 @@ */ package dev.msfjarvis.claw.common.comments +import androidx.compose.runtime.Stable + /** Defines a contract to convert strings of HTML to Markdown. */ +@Stable fun interface HTMLConverter { fun convertHTMLToMarkdown(html: String): String } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt index e68b2f3e..56d13ba3 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt @@ -6,10 +6,12 @@ */ package dev.msfjarvis.claw.common.posts +import androidx.compose.runtime.Stable import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.model.LinkMetadata import dev.msfjarvis.claw.model.LobstersPostDetails +@Stable interface PostActions { fun viewPost(postUrl: String, commentsUrl: String) fun viewComments(postId: String) diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt index 37d29a50..37500e09 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/urllauncher/UrlLauncher.kt @@ -11,9 +11,11 @@ import android.content.Context import android.net.Uri import android.widget.Toast import androidx.browser.customtabs.CustomTabsIntent +import androidx.compose.runtime.Stable import androidx.compose.ui.platform.UriHandler import io.github.aakira.napier.Napier +@Stable class UrlLauncher(private val context: Context) : UriHandler { override fun openUri(uri: String) { val customTabsIntent =