aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt37
1 files changed, 23 insertions, 14 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt b/core/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt
index d002fb8..cf68066 100644
--- a/core/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt
+++ b/core/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt
@@ -80,22 +80,27 @@ inline fun <T : Activity> Context.startActivity(
intentBuilder: Intent.() -> Unit = {}
) {
val intent = Intent(this, clazz)
- if (clearStack) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
+ if (clearStack) {
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
+ }
intent.intentBuilder()
val bundle = Bundle()
bundle.bundleBuilder()
- startActivity(intent, if (bundle.isEmpty) null else bundle)
- if (clearStack && this is Activity) finish()
+ startActivity(intent, bundle.takeIf { !it.isEmpty })
+ if (clearStack && this is Activity) {
+ finish()
+ }
}
fun Context.startPlayStoreLink(@StringRes packageIdRes: Int) = startPlayStoreLink(string(packageIdRes))
fun Context.startPlayStoreLink(packageId: String) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=$packageId"))
- if (intent.resolveActivity(packageManager) != null)
+ if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
- else
+ } else {
toast("Cannot resolve play store", log = true)
+ }
}
/**
@@ -105,15 +110,16 @@ fun Context.startPlayStoreLink(packageId: String) {
fun Context.startLink(vararg url: String?) {
val link = url.firstOrNull { !it.isNullOrBlank() } ?: return
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(link))
- if (browserIntent.resolveActivity(packageManager) != null)
+ if (browserIntent.resolveActivity(packageManager) != null) {
startActivity(browserIntent)
- else
+ } else {
toast("Cannot resolve browser", log = true)
+ }
}
fun Context.startLink(@StringRes url: Int) = startLink(string(url))
-//Toast helpers
+// Toast helpers
inline fun View.toast(@StringRes id: Int, duration: Int = Toast.LENGTH_LONG, log: Boolean = false) =
context.toast(id, duration, log)
@@ -130,7 +136,7 @@ inline fun Context.toast(text: String, duration: Int = Toast.LENGTH_LONG, log: B
const val INVALID_ID = 0
-//Resource retrievers
+// Resource retrievers
inline fun Context.string(@StringRes id: Int): String = getString(id)
inline fun Context.string(@StringRes id: Int, fallback: String?): String? =
@@ -161,7 +167,7 @@ inline fun Context.animation(@AnimRes id: Int) = AnimationUtils.loadAnimation(th
inline fun Context.plural(@PluralsRes id: Int, quantity: Number) =
resources.getQuantityString(id, quantity.toInt(), quantity.toInt())
-//Attr retrievers
+// Attr retrievers
fun Context.resolveColor(@AttrRes attr: Int, @ColorInt fallback: Int = 0): Int {
val a = theme.obtainStyledAttributes(intArrayOf(attr))
try {
@@ -240,19 +246,22 @@ fun Context.hasPermission(permissions: String) = !buildIsMarshmallowAndUp || Con
fun Context.copyToClipboard(text: String?, label: String = "Copied Text", showToast: Boolean = true) {
val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
clipboard.setPrimaryClip(ClipData.newPlainText(label, text ?: ""))
- if (showToast) toast(R.string.kau_text_copied)
+ if (showToast) {
+ toast(R.string.kau_text_copied)
+ }
}
fun Context.shareText(text: String?) {
- if (text == null) return toast("Share text is null")
+ text ?: return toast("Share text is null")
val intent = Intent(Intent.ACTION_SEND)
intent.type = "text/plain"
intent.putExtra(Intent.EXTRA_TEXT, text)
val chooserIntent = Intent.createChooser(intent, string(R.string.kau_share))
- if (chooserIntent.resolveActivity(packageManager) != null)
+ if (chooserIntent.resolveActivity(packageManager) != null) {
startActivity(chooserIntent)
- else
+ } else {
toast("Cannot resolve activity to share text", log = true)
+ }
}
/**