refactor: improve skippability of Composables

This commit is contained in:
Harsh Shandilya 2022-12-12 02:33:21 +05:30
parent 4db59db7a1
commit b1a32496ba
No known key found for this signature in database
5 changed files with 32 additions and 13 deletions

View file

@ -8,22 +8,13 @@ package dev.msfjarvis.claw.android.injection
import com.deliveryhero.whetstone.app.ApplicationScope import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Binds
import dagger.Module import dagger.Module
import dagger.Provides import dev.msfjarvis.claw.android.ui.util.HTMLConverterImpl
import dev.msfjarvis.claw.common.comments.HTMLConverter import dev.msfjarvis.claw.common.comments.HTMLConverter
import io.github.furstenheim.CopyDown
@Module @Module
@ContributesTo(ApplicationScope::class) @ContributesTo(ApplicationScope::class)
object HTMLConverterModule { interface HTMLConverterModule {
@Binds fun HTMLConverterImpl.bind(): HTMLConverter
@Provides
fun provideHTMLConverter() =
object : HTMLConverter {
private val copydown = CopyDown()
override fun convertHTMLToMarkdown(html: String): String {
return copydown.convert(html)
}
}
} }

View file

@ -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)
}
}

View file

@ -6,7 +6,10 @@
*/ */
package dev.msfjarvis.claw.common.comments package dev.msfjarvis.claw.common.comments
import androidx.compose.runtime.Stable
/** Defines a contract to convert strings of HTML to Markdown. */ /** Defines a contract to convert strings of HTML to Markdown. */
@Stable
fun interface HTMLConverter { fun interface HTMLConverter {
fun convertHTMLToMarkdown(html: String): String fun convertHTMLToMarkdown(html: String): String
} }

View file

@ -6,10 +6,12 @@
*/ */
package dev.msfjarvis.claw.common.posts package dev.msfjarvis.claw.common.posts
import androidx.compose.runtime.Stable
import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.database.local.SavedPost
import dev.msfjarvis.claw.model.LinkMetadata import dev.msfjarvis.claw.model.LinkMetadata
import dev.msfjarvis.claw.model.LobstersPostDetails import dev.msfjarvis.claw.model.LobstersPostDetails
@Stable
interface PostActions { interface PostActions {
fun viewPost(postUrl: String, commentsUrl: String) fun viewPost(postUrl: String, commentsUrl: String)
fun viewComments(postId: String) fun viewComments(postId: String)

View file

@ -11,9 +11,11 @@ import android.content.Context
import android.net.Uri import android.net.Uri
import android.widget.Toast import android.widget.Toast
import androidx.browser.customtabs.CustomTabsIntent import androidx.browser.customtabs.CustomTabsIntent
import androidx.compose.runtime.Stable
import androidx.compose.ui.platform.UriHandler import androidx.compose.ui.platform.UriHandler
import io.github.aakira.napier.Napier import io.github.aakira.napier.Napier
@Stable
class UrlLauncher(private val context: Context) : UriHandler { class UrlLauncher(private val context: Context) : UriHandler {
override fun openUri(uri: String) { override fun openUri(uri: String) {
val customTabsIntent = val customTabsIntent =