Added link opening on homepage

This commit is contained in:
Viktor De Pasquale 2019-10-05 22:04:03 +02:00
parent fe1ce08a6c
commit f1dcecc6cf
2 changed files with 34 additions and 1 deletions

View File

@ -0,0 +1,32 @@
package com.topjohnwu.magisk.model.events
import android.content.Context
import android.content.res.Resources
import android.util.TypedValue
import androidx.annotation.AttrRes
import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.net.toUri
import com.skoumal.teanity.viewevents.ViewEvent
import com.topjohnwu.magisk.R
data class OpenInappLinkEvent(
private val link: String
) : ViewEvent(), ContextExecutor {
// todo find app that can open the link and as a fallback open custom tabs! it shouldn't be the default
override fun invoke(context: Context) = CustomTabsIntent.Builder()
.setShowTitle(true)
.setToolbarColor(context.themedColor(R.attr.colorSurface))
.enableUrlBarHiding()
.build()
.launchUrl(context, link.toUri())
private fun Context.themedColor(@AttrRes attribute: Int) = theme
.resolveAttribute(attribute).data
private fun Resources.Theme.resolveAttribute(
@AttrRes attribute: Int,
resolveRefs: Boolean = true
) = TypedValue().also { resolveAttribute(attribute, it, resolveRefs) }
}

View File

@ -12,6 +12,7 @@ import com.topjohnwu.magisk.model.entity.MagiskJson
import com.topjohnwu.magisk.model.entity.ManagerJson import com.topjohnwu.magisk.model.entity.ManagerJson
import com.topjohnwu.magisk.model.entity.UpdateInfo import com.topjohnwu.magisk.model.entity.UpdateInfo
import com.topjohnwu.magisk.model.entity.recycler.HomeItem import com.topjohnwu.magisk.model.entity.recycler.HomeItem
import com.topjohnwu.magisk.model.events.OpenInappLinkEvent
import com.topjohnwu.magisk.model.observer.Observer import com.topjohnwu.magisk.model.observer.Observer
import com.topjohnwu.magisk.redesign.compat.CompatViewModel import com.topjohnwu.magisk.redesign.compat.CompatViewModel
import com.topjohnwu.magisk.ui.home.MagiskState import com.topjohnwu.magisk.ui.home.MagiskState
@ -70,7 +71,7 @@ class HomeViewModel(
} }
fun onDeletePressed() {} fun onDeletePressed() {}
fun onLinkPressed(link: String) {} fun onLinkPressed(link: String) = OpenInappLinkEvent(link).publish()
} }