Эх сурвалжийг харах

Added extensions for getting system services

Vadik Sirekanyan 7 жил өмнө
parent
commit
3c54577a42

+ 12 - 2
app/src/main/java/me/vadik/knigopis/extensions.kt

@@ -2,6 +2,7 @@ package me.vadik.knigopis
 
 import android.animation.ObjectAnimator
 import android.app.Activity
+import android.content.ClipboardManager
 import android.content.Context
 import android.content.Intent
 import android.net.Uri
@@ -38,6 +39,15 @@ inline fun Context.startActivityOrElse(intent: Intent, onError: () -> Unit) {
     }
 }
 
+val Context.systemClipboardManager: ClipboardManager
+    get() = getAndroidSystemService(Context.CLIPBOARD_SERVICE)
+
+val Context.systemInputMethodManager: InputMethodManager
+    get() = getAndroidSystemService(Context.INPUT_METHOD_SERVICE)
+
+private inline fun <reified T> Context.getAndroidSystemService(name: String) =
+    getSystemService(name) as T
+
 fun Context.toast(message: String) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
 
 fun Context.toast(@StringRes messageId: Int) =
@@ -45,6 +55,7 @@ fun Context.toast(@StringRes messageId: Int) =
 
 fun Activity.app() = application as App
 
+@Suppress("unused")
 fun logWarn(message: String) = Log.w(TAG, message)
 
 fun logError(message: String, throwable: Throwable?) = Log.e(TAG, message, throwable)
@@ -119,8 +130,7 @@ fun ProgressBar.setProgressSmoothly(progress: Int) {
 
 fun Activity.hideKeyboard() {
     currentFocus?.let { view ->
-        (getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
-            .hideSoftInputFromWindow(view.windowToken, 0)
+        systemInputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
     }
 }
 

+ 2 - 5
app/src/main/java/me/vadik/knigopis/user/UserActivity.kt

@@ -1,7 +1,6 @@
 package me.vadik.knigopis.user
 
 import android.content.ClipData
-import android.content.ClipboardManager
 import android.content.Context
 import android.content.Intent
 import android.net.Uri
@@ -23,6 +22,7 @@ import me.vadik.knigopis.io2main
 import me.vadik.knigopis.logError
 import me.vadik.knigopis.model.note.Identity
 import me.vadik.knigopis.model.subscription.Subscription
+import me.vadik.knigopis.systemClipboardManager
 import me.vadik.knigopis.toast
 import org.koin.android.ext.android.inject
 
@@ -110,10 +110,7 @@ class UserActivity : AppCompatActivity() {
         return when (item.itemId) {
             R.id.option_copy -> {
                 val link = "http://www.knigopis.com/#/user/books?u=$userId"
-                getSystemService(CLIPBOARD_SERVICE)?.let { clipboard ->
-                    clipboard as ClipboardManager
-                    clipboard.primaryClip = ClipData.newPlainText(null, link)
-                }
+                systemClipboardManager.primaryClip = ClipData.newPlainText(null, link)
                 toast(link)
                 true
             }