From 38aa26a3fface6337f4f6af6a9f797bd747a6845 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miko=C5=82aj=20Pich?= <m.pich@outlook.com>
Date: Sat, 16 Mar 2019 14:22:51 +0100
Subject: [PATCH] Add homepage button in about fragment (#280)

---
 .../ui/modules/about/AboutFragment.kt         | 39 +++++++++++++++----
 .../ui/modules/about/AboutPresenter.kt        | 16 ++++----
 .../wulkanowy/ui/modules/about/AboutView.kt   |  6 ++-
 app/src/main/res/values-pl/strings.xml        |  3 +-
 app/src/main/res/values/strings.xml           |  3 +-
 5 files changed, 48 insertions(+), 19 deletions(-)

diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutFragment.kt
index ddc4e11fa..1002f914f 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutFragment.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutFragment.kt
@@ -1,12 +1,14 @@
 package io.github.wulkanowy.ui.modules.about
 
 import android.content.Intent
+import android.net.Uri
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import com.mikepenz.aboutlibraries.LibsBuilder
 import com.mikepenz.aboutlibraries.LibsFragmentCompat
+import io.github.wulkanowy.BuildConfig
 import io.github.wulkanowy.R
 import io.github.wulkanowy.ui.base.BaseFragment
 import io.github.wulkanowy.ui.modules.main.MainView
@@ -36,12 +38,12 @@ class AboutFragment : BaseFragment(), AboutView, MainView.TitledView {
                 .withAboutVersionShown(true)
                 .withAboutIconShown(true)
                 .withLicenseShown(true)
-                .withAboutSpecial1(getString(R.string.about_source_code))
-                .withAboutSpecial2(getString(R.string.about_feedback))
+                .withAboutSpecial1(getString(R.string.about_discord_invite))
+                .withAboutSpecial2(getString(R.string.about_homepage))
+                .withAboutSpecial3(getString(R.string.about_feedback))
                 .withFields(R.string::class.java.fields)
                 .withCheckCachedDetection(false)
-                .withExcludedLibraries("fastadapter", "AndroidIconics", "gson",
-                    "Jsoup", "Retrofit", "okio", "OkHttp")
+                .withExcludedLibraries("fastadapter", "AndroidIconics", "gson", "Jsoup", "Retrofit", "okio", "OkHttp")
                 .withOnExtraListener { presenter.onExtraSelect(it) })
         }.let {
             fragmentCompat.onCreateView(inflater.context, inflater, container, savedInstanceState, it)
@@ -53,12 +55,33 @@ class AboutFragment : BaseFragment(), AboutView, MainView.TitledView {
         fragmentCompat.onViewCreated(view, savedInstanceState)
     }
 
-    override fun openSourceWebView() {
-        startActivity(Intent.parseUri("https://github.com/wulkanowy/wulkanowy", 0))
+    override fun openDiscordInviteView() {
+        startActivity(Intent.parseUri("https://discord.gg/vccAQBr", 0))
     }
 
-    override fun openIssuesWebView() {
-        startActivity(Intent.parseUri("https://github.com/wulkanowy/wulkanowy/issues", 0))
+    override fun openHomepageWebView() {
+        startActivity(Intent.parseUri("https://wulkanowy.github.io/", 0))
+    }
+
+    override fun openEmailClientView() {
+        val intent = Intent(Intent.ACTION_SENDTO).apply {
+            data = Uri.parse("mailto:")
+            putExtra(Intent.EXTRA_EMAIL, Array(1) { "wulkanowyinc@gmail.com" })
+            putExtra(Intent.EXTRA_SUBJECT, "Zgłoszenie błędu")
+            putExtra(Intent.EXTRA_TEXT,"Tu umieść treść zgłoszenia\n\n" + "-".repeat(40) + "\n" + """
+                Build: ${BuildConfig.VERSION_CODE}
+                SDK: ${android.os.Build.VERSION.SDK_INT}
+                Device: ${android.os.Build.MANUFACTURER} ${android.os.Build.MODEL}
+            """.trimIndent())
+        }
+
+        context?.let {
+            if (intent.resolveActivity(it.packageManager) != null) {
+                startActivity(Intent.createChooser(intent, getString(R.string.about_feedback)))
+            } else {
+                startActivity(Intent.parseUri("https://github.com/wulkanowy/wulkanowy/issues", 0))
+            }
+        }
     }
 
     override fun onDestroyView() {
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutPresenter.kt
index ae68d7e79..116dbef35 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutPresenter.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutPresenter.kt
@@ -24,17 +24,19 @@ class AboutPresenter @Inject constructor(
         view?.run {
             when (type) {
                 SPECIAL1 -> {
-                    Timber.i("Opening github page")
-                    analytics.logEvent("open_page", "name" to "github")
-                    openSourceWebView()
+                    Timber.i("Opening discord invide page")
+                    analytics.logEvent("open_page", "name" to "discord")
+                    openDiscordInviteView()
                 }
                 SPECIAL2 -> {
-                    Timber.i("Opening issues page")
-                    analytics.logEvent("open_page", "name" to "issues")
-                    openIssuesWebView()
+                    Timber.i("Opening home page")
+                    analytics.logEvent("open_page", "name" to "home")
+                    openHomepageWebView()
                 }
                 SPECIAL3 -> {
-                    //empty for now
+                    Timber.i("Opening email client")
+                    analytics.logEvent("open_page", "name" to "email")
+                    openEmailClientView()
                 }
             }
         }
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutView.kt
index a3ae2ada8..5b206ad82 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutView.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/about/AboutView.kt
@@ -4,7 +4,9 @@ import io.github.wulkanowy.ui.base.BaseView
 
 interface AboutView : BaseView {
 
-    fun openSourceWebView()
+    fun openDiscordInviteView()
 
-    fun openIssuesWebView()
+    fun openEmailClientView()
+
+    fun openHomepageWebView()
 }
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index a84a3f550..d2e5a35f8 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -207,8 +207,9 @@
 
 
     <!--About-->
-    <string name="about_source_code">Kod źródłowy</string>
+    <string name="about_discord_invite">Discord</string>
     <string name="about_feedback">Zgłoś błąd</string>
+    <string name="about_homepage">Strona domowa</string>
 
 
     <!--Generic-->
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 311fdf3c7..56c9f2c02 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -192,8 +192,9 @@
 
 
     <!--About-->
-    <string name="about_source_code">Source code</string>
+    <string name="about_discord_invite">Discord</string>
     <string name="about_feedback">Report a bug</string>
+    <string name="about_homepage">Homepage</string>
 
 
     <!--Generic-->