From 712dc4f2f61124aa2ea2f684c483f54d1ee883c7 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Wed, 13 Jun 2018 22:16:48 +0200
Subject: [PATCH] First preparations for embedding content in messages

---
 .../kuschku/quasseldroid/util/embed/EmbedApi.kt  | 10 ++++++++++
 .../quasseldroid/util/embed/EmbedHelper.kt       | 16 ++++++++++++++++
 .../quasseldroid/util/embed/EmbedResponse.kt     |  7 +++++++
 .../viewmodel/data/FormattedMessage.kt           |  3 +++
 4 files changed, 36 insertions(+)
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedApi.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedHelper.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedResponse.kt

diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedApi.kt b/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedApi.kt
new file mode 100644
index 000000000..899ff8f59
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedApi.kt
@@ -0,0 +1,10 @@
+package de.kuschku.quasseldroid.util.embed
+
+import io.reactivex.Observable
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+interface EmbedApi {
+  @GET()
+  fun embedData(@Query("url") url: String): Observable<EmbedResponse>
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedHelper.kt
new file mode 100644
index 000000000..472e5aef7
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedHelper.kt
@@ -0,0 +1,16 @@
+package de.kuschku.quasseldroid.util.embed
+
+import com.google.gson.GsonBuilder
+import io.reactivex.Observable
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+class EmbedHelper(baseUrl: String) {
+  private val api = Retrofit.Builder()
+    .baseUrl(baseUrl)
+    .addConverterFactory(GsonConverterFactory.create(GsonBuilder().setLenient().create()))
+    .build()
+    .create(EmbedApi::class.java)
+
+  fun embedCode(url: String): Observable<EmbedResponse> = api.embedData(url)
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedResponse.kt b/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedResponse.kt
new file mode 100644
index 000000000..ec45c32e1
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/embed/EmbedResponse.kt
@@ -0,0 +1,7 @@
+package de.kuschku.quasseldroid.util.embed
+
+data class EmbedResponse(
+  val result: Boolean,
+  val type: String,
+  val code: String
+)
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/FormattedMessage.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/FormattedMessage.kt
index 773111d66..c348fc30c 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/FormattedMessage.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/FormattedMessage.kt
@@ -32,6 +32,7 @@ class FormattedMessage(
   val fallbackDrawable: Drawable? = null,
   val realName: CharSequence? = null,
   val avatarUrls: List<Avatar> = emptyList(),
+  val urls: List<String> = emptyList(),
   val hasDayChange: Boolean,
   val isSelected: Boolean,
   val isExpanded: Boolean,
@@ -51,6 +52,7 @@ class FormattedMessage(
     if (combined != other.combined) return false
     if (realName != other.realName) return false
     if (avatarUrls != other.avatarUrls) return false
+    if (urls != other.urls) return false
     if (hasDayChange != other.hasDayChange) return false
     if (isSelected != other.isSelected) return false
     if (isExpanded != other.isExpanded) return false
@@ -68,6 +70,7 @@ class FormattedMessage(
     result = 31 * result + combined.hashCode()
     result = 31 * result + (realName?.hashCode() ?: 0)
     result = 31 * result + avatarUrls.hashCode()
+    result = 31 * result + urls.hashCode()
     result = 31 * result + hasDayChange.hashCode()
     result = 31 * result + isSelected.hashCode()
     result = 31 * result + isExpanded.hashCode()
-- 
GitLab