diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
index f3601912..19bbd1c8 100644
--- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
+++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
@@ -1,6 +1,7 @@
package net.pokeranalytics.android
import android.app.Application
+import android.content.Context
import com.crashlytics.android.Crashlytics
import com.crashlytics.android.core.CrashlyticsCore
import io.fabric.sdk.android.Fabric
@@ -22,6 +23,15 @@ import timber.log.Timber
class PokerAnalyticsApplication : Application() {
+ companion object {
+
+ fun timeSinceInstall(context: Context): Long {
+ val installTime: Long = context.packageManager.getPackageInfo(context.packageName, 0).firstInstallTime
+ return System.currentTimeMillis() - installTime
+ }
+
+ }
+
override fun onCreate() {
super.onCreate()
UserDefaults.init(this)
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/extensions/UIExtensions.kt b/app/src/main/java/net/pokeranalytics/android/ui/extensions/UIExtensions.kt
index 2da60452..d59709fd 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/extensions/UIExtensions.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/extensions/UIExtensions.kt
@@ -1,5 +1,6 @@
package net.pokeranalytics.android.ui.extensions
+import android.app.Activity
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
@@ -16,10 +17,10 @@ import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.core.view.isVisible
+import androidx.fragment.app.Fragment
import net.pokeranalytics.android.BuildConfig
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.components.BaseActivity
-import net.pokeranalytics.android.ui.fragment.components.BaseFragment
import net.pokeranalytics.android.util.DeviceUtils
import net.pokeranalytics.android.util.TextFormat
import net.pokeranalytics.android.util.URL
@@ -39,16 +40,16 @@ val Float.px: Float
// Toast
-fun BaseActivity.toast(message: String) {
+fun Activity.toast(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
-fun BaseFragment.toast(message: String) {
+fun Fragment.toast(message: String) {
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
}
// Open Play Store for rating
-fun BaseActivity.openPlayStorePage() {
+fun Activity.openPlayStorePage() {
val uri = Uri.parse("market://details?id=$packageName")
val goToMarket = Intent(Intent.ACTION_VIEW, uri)
goToMarket.addFlags(
@@ -94,19 +95,19 @@ fun BaseActivity.openContactMail(subjectStringRes: Int, filePath: String? = null
}
// Open custom tab
-fun BaseActivity.openUrl(url: String) {
+fun Context.openUrl(url: String) {
val builder: CustomTabsIntent.Builder = CustomTabsIntent.Builder()
- builder.setToolbarColor(ContextCompat.getColor(this, net.pokeranalytics.android.R.color.colorPrimary))
+ builder.setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary))
val customTabsIntent = builder.build()
customTabsIntent.launchUrl(this, Uri.parse(url))
}
// Display Alert Dialog
-fun BaseActivity.showAlertDialog(title: Int? = null, message: Int? = null) {
+fun Activity.showAlertDialog(title: Int? = null, message: Int? = null) {
showAlertDialog(this, title, message)
}
-fun BaseFragment.showAlertDialog(title: Int? = null, message: Int? = null) {
+fun Fragment.showAlertDialog(title: Int? = null, message: Int? = null) {
context?.let {
showAlertDialog(it, title, message)
}
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
index 22672d8b..31ec10c2 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
@@ -221,13 +221,21 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
messageBox.isVisible = true
message.text = getString(messageToShow.resId)
- messageBoxDismiss.setOnClickListener {
- Preferences.setStopShowingMessage(messageToShow, requireContext())
+ messageToShow.actionResId?.let {
+ messageBoxAction.text = requireContext().getString(it)
+ messageToShow.action(requireContext())?.let { action ->
+ messageBoxAction.setOnClickListener {
+ action.invoke(it)
+ hideMessageBox(messageToShow)
+ }
+ }
+ } ?: run {
+ messageBoxAction.visibility = View.GONE
+ }
- messageBox.animate().translationY(messageBox.height.toFloat())
- .setInterpolator(FastOutSlowInInterpolator())
- .withEndAction { messageBox?.isVisible = false }
- .start()
+ messageBoxDismiss.text = requireContext().getString(messageToShow.dismissResId)
+ messageBoxDismiss.setOnClickListener {
+ hideMessageBox(messageToShow)
}
} else {
messageBox.isVisible = false
@@ -265,6 +273,15 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
}
+ private fun hideMessageBox(message: Preferences.FeedMessage) {
+ Preferences.setStopShowingMessage(message, requireContext())
+
+ messageBox.animate().translationY(messageBox.height.toFloat())
+ .setInterpolator(FastOutSlowInInterpolator())
+ .withEndAction { messageBox?.isVisible = false }
+ .start()
+ }
+
/**
* Init data
*/
diff --git a/app/src/main/java/net/pokeranalytics/android/util/Global.kt b/app/src/main/java/net/pokeranalytics/android/util/Global.kt
index 978e6109..5c7a43f4 100644
--- a/app/src/main/java/net/pokeranalytics/android/util/Global.kt
+++ b/app/src/main/java/net/pokeranalytics/android/util/Global.kt
@@ -1,3 +1,5 @@
package net.pokeranalytics.android.util
-val NULL_TEXT: String = "--"
+import android.content.Context
+
+const val NULL_TEXT: String = "--"
diff --git a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt
index ae2a8138..d6d6d580 100644
--- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt
+++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt
@@ -2,9 +2,12 @@ package net.pokeranalytics.android.util
import android.content.Context
import android.preference.PreferenceManager
+import android.view.View
import io.realm.Realm
+import net.pokeranalytics.android.PokerAnalyticsApplication
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session
+import net.pokeranalytics.android.ui.extensions.openUrl
import net.pokeranalytics.android.util.extensions.count
import java.util.*
@@ -29,6 +32,7 @@ class Preferences {
FIRST_LAUNCH("firstLaunch"),
STOP_SHOWING_DISCLAIMER("stopShowingDisclaimer"),
STOP_SHOWING_DUPLICATE("stopShowingDuplicate"),
+ STOP_SHOWING_DISCORD("stopShowingDiscord"),
ACTIVE_FILTER_ID("ActiveFilterId"),
LATEST_PURCHASE("latestPurchase"),
PATCH_BREAK("patchBreaks"),
@@ -40,6 +44,7 @@ class Preferences {
enum class FeedMessage {
DISCLAIMER,
+ DISCORD,
DUPLICATE;
val resId: Int
@@ -47,6 +52,7 @@ class Preferences {
return when (this) {
DISCLAIMER -> R.string.disclaimer
DUPLICATE -> R.string.longtap_to_duplicate
+ DISCORD -> R.string.discord_feed_message
}
}
@@ -55,6 +61,30 @@ class Preferences {
return when (this) {
DISCLAIMER -> Keys.STOP_SHOWING_DISCLAIMER
DUPLICATE -> Keys.STOP_SHOWING_DUPLICATE
+ DISCORD -> Keys.STOP_SHOWING_DISCORD
+ }
+ }
+
+ val actionResId: Int?
+ get() {
+ return when (this) {
+ DISCORD -> R.string.join_discord
+ else -> null
+ }
+ }
+
+ fun action(context: Context): ((View) -> (Unit))? {
+ return when (this) {
+ DISCORD -> { { context.openUrl(URL.DISCORD.value) } }
+ else -> null
+ }
+ }
+
+ val dismissResId: Int
+ get() {
+ return when (this) {
+ DISCORD -> R.string.good_for_you
+ else -> R.string.iunderstand
}
}
@@ -88,7 +118,11 @@ class Preferences {
editor.apply()
}
- fun getBoolean(key: PreferenceKey, context: Context, defaultValue: Boolean? = false): Boolean {
+ fun getBoolean(
+ key: PreferenceKey,
+ context: Context,
+ defaultValue: Boolean? = false
+ ): Boolean {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
return preferences.getBoolean(key.identifier, defaultValue ?: false)
}
@@ -133,10 +167,11 @@ class Preferences {
}
fun setStopShowingMessage(message: FeedMessage, context: Context) {
- setBoolean(message.key,true, context)
+ setBoolean(message.key, true, context)
}
fun feedMessageToShow(context: Context): FeedMessage? {
+// return FeedMessage.DISCORD
if (!getBoolean(Keys.STOP_SHOWING_DISCLAIMER, context)) {
return FeedMessage.DISCLAIMER
@@ -148,6 +183,11 @@ class Preferences {
if (sessionCount > 1 && !getBoolean(Keys.STOP_SHOWING_DUPLICATE, context)) {
return FeedMessage.DUPLICATE
}
+
+ if (!getBoolean(Keys.STOP_SHOWING_DISCORD, context) && PokerAnalyticsApplication.timeSinceInstall(context) > 1000 * 3600 * 24 * 30L) {
+ return FeedMessage.DISCORD
+ }
+
return null
}
diff --git a/app/src/main/res/layout/fragment_feed.xml b/app/src/main/res/layout/fragment_feed.xml
index db34795c..3c58f015 100644
--- a/app/src/main/res/layout/fragment_feed.xml
+++ b/app/src/main/res/layout/fragment_feed.xml
@@ -125,6 +125,15 @@
android:textColor="@color/white"
tools:visibility="visible" />
+
+
+ android:layout_marginEnd="16dp"/>
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index bead8c41..8f40f484 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -691,5 +691,7 @@
Poker Analytics benötigt Zugriff auf Face ID, damit Sie die App per Gesichtserkennung entsperren können.
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 60bf46ee..6d2113b0 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -692,5 +692,7 @@
Poker Analytics desea acceder a Face ID para permitir desbloquear la aplicación con reconocimiento facial.
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index bbfc9a17..5eb8300e 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -760,5 +760,7 @@
Voulez-vous vraiment supprimer cette partie ?
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 8b9d6469..61a16083 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -691,5 +691,7 @@
Poker Analytics आपको चेहरा पहचान कर एप्प खोलने की अनुमति के लिए Face ID तक पहुँच चाहता है
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 845ae047..6f825284 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -691,5 +691,7 @@
Poker Analytics vuole accedere a Face ID per consentirti di sbloccare l\'app tramite riconoscimento facciale
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 328601c9..29693161 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -691,5 +691,7 @@
顔認識でアプリのロックを解除できるようにするため、Poker AnalyticsがFace IDをへのアクセスを要求しています
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 8887f21b..07ffef51 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -690,5 +690,7 @@
O Poker Analytics deseja salvar esta imagem na sua biblioteca de Fotos
O Poker Analytics deseja acessar o Face ID para permitir que você desbloqueie o aplicativo com reconhecimento facial
Poker Rumble
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index d61e9b9d..d328257c 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -692,5 +692,7 @@
Poker Analytics хочет получить доступ к Face ID, чтобы вы могли разблокировать приложение c помощью идентификации по лицу
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values-v24/strings.xml b/app/src/main/res/values-v24/strings.xml
index 9f8277db..2ec9f97f 100644
--- a/app/src/main/res/values-v24/strings.xml
+++ b/app/src/main/res/values-v24/strings.xml
@@ -1,4 +1,6 @@
Poker Rumble
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
\ No newline at end of file
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 8e30e827..54d7f266 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -687,5 +687,7 @@
Poker Analytics希望访问Face ID以便通过人脸识别解锁本应用
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5a208c66..147236df 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -771,5 +771,7 @@
Poker Analytics wants to access Face ID to let you unlock the app with face recognition
Poker Rumble
Join us on Discord!
+ We\'ve opened our Discord channel! Come to hang out, talk about poker or about the app!
+ Good for you!
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 63c46bef..e73bbacb 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -341,13 +341,16 @@
- 12sp
+
+
-