Procházet zdrojové kódy

Convert profile links to valid http uris

sirekanyan před 7 roky
rodič
revize
7fd1aca696

+ 9 - 1
app/src/main/java/me/vadik/knigopis/extensions.kt

@@ -4,6 +4,7 @@ import android.animation.ObjectAnimator
 import android.app.Activity
 import android.content.Context
 import android.content.Intent
+import android.net.Uri
 import android.support.annotation.IdRes
 import android.support.annotation.LayoutRes
 import android.support.annotation.StringRes
@@ -25,6 +26,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
 import io.reactivex.schedulers.Schedulers
 
 private const val TAG = "Knigopis"
+private val HTTP_SCHEMES = setOf("http", "https")
 
 fun Context.startActivityOrElse(intent: Intent, onError: () -> Unit) {
     if (packageManager.resolveActivity(intent, 0) == null) {
@@ -110,4 +112,10 @@ fun Activity.hideKeyboard() {
         (getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
             .hideSoftInputFromWindow(view.windowToken, 0)
     }
-}
+}
+
+fun String.toUriOrNull() =
+    Uri.parse(this).takeIf(Uri::isValidHttpLink)
+
+private fun Uri.isValidHttpLink() =
+    scheme in HTTP_SCHEMES && !host.isNullOrBlank()

+ 10 - 3
app/src/main/java/me/vadik/knigopis/model/subscription/SubUser.kt

@@ -1,10 +1,17 @@
 package me.vadik.knigopis.model.subscription
 
+import android.net.Uri
+import me.vadik.knigopis.toUriOrNull
+
 class SubUser(
     val id: String,
     val nickname: String,
     val photo: String?,
-    val profile: String?,
-    val identity: String?,
+    private val profile: String?,
+    private val identity: String?,
     val booksCount: Int
-)
+) {
+    val profiles: List<Uri>
+        get() = listOfNotNull(profile, identity)
+            .mapNotNull(String::toUriOrNull)
+}