diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 713aaf5..222e787 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,6 +12,7 @@ plugins { id("com.mikepenz.aboutlibraries.plugin") kotlin("android") kotlin("kapt") + id("androidx.baselineprofile") } // apply realm-android @@ -39,12 +40,12 @@ android { minSdk = 24 targetSdk = 33 versionCode = 70 - versionName = "2.0.2" + versionName = "2.1.0" vectorDrawables { useSupportLibrary = true } multiDexEnabled = true - resourceConfigurations.addAll(listOf("ar", "bs", "cs", "de", "es-rMX", "fr", "hu", "id", "ja", "nl", "pl", "pt", "pt-rBR", "ro", "ru", "tr", "uk", "zh", "zh-rTW", "en")) + resourceConfigurations.addAll(listOf("ar", "bs", "cs", "de", "es-rMX", "fr", "hu", "id", "ja", "hu", "nl", "pl", "pt", "pt-rBR", "ro", "ru", "tr", "uk", "zh", "zh-rTW", "en")) } splits { @@ -426,6 +427,8 @@ dependencies { // google guava, maybe fix a bug implementation("com.google.guava:guava:31.1-android") + implementation("androidx.profileinstaller:profileinstaller:1.3.0") + "baselineProfile"(project(mapOf("path" to ":baselineprofile"))) val libsuVersion = "5.0.5" diff --git a/app/src/main/java/com/fox2code/mmm/MainActivity.java b/app/src/main/java/com/fox2code/mmm/MainActivity.java index 23e9f0b..cb9359f 100644 --- a/app/src/main/java/com/fox2code/mmm/MainActivity.java +++ b/app/src/main/java/com/fox2code/mmm/MainActivity.java @@ -86,6 +86,7 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe private SearchView searchView; private boolean initMode; private RuntimeUtils runtimeUtils; + public static Boolean isShowingWeblateSb = false; // race condition public MainActivity() { this.moduleViewListBuilder = new ModuleViewListBuilder(this); diff --git a/app/src/main/java/com/fox2code/mmm/MainApplication.java b/app/src/main/java/com/fox2code/mmm/MainApplication.java index c2df79c..3505e73 100644 --- a/app/src/main/java/com/fox2code/mmm/MainApplication.java +++ b/app/src/main/java/com/fox2code/mmm/MainApplication.java @@ -383,7 +383,7 @@ public class MainApplication extends FoxApplication implements androidx.work.Con @Override public void onCreate() { - supportedLocales.addAll(Arrays.asList("ar", "bs", "cs", "de", "es-rMX", "fr", "hu", "id", "ja", "nl", "pl", "pt", "pt-rBR", "ro", "ru", "tr", "uk", "zh", "zh-rTW", "en")); + supportedLocales.addAll(Arrays.asList("ar", "bs", "cs", "de", "es-rMX", "fr", "hu", "id", "ja", "hu", "nl", "pl", "pt", "pt-rBR", "ro", "ru", "tr", "uk", "zh", "zh-rTW", "en")); if (INSTANCE == null) INSTANCE = this; relPackageName = this.getPackageName(); super.onCreate(); diff --git a/app/src/main/java/com/fox2code/mmm/utils/RuntimeUtils.kt b/app/src/main/java/com/fox2code/mmm/utils/RuntimeUtils.kt index 9a7fedf..98b9bc6 100644 --- a/app/src/main/java/com/fox2code/mmm/utils/RuntimeUtils.kt +++ b/app/src/main/java/com/fox2code/mmm/utils/RuntimeUtils.kt @@ -7,6 +7,8 @@ import android.content.Intent import android.content.pm.PackageManager import android.net.Uri import android.os.Build +import android.os.Handler +import android.os.Looper import android.provider.Settings import android.view.View import android.widget.CheckBox @@ -203,13 +205,14 @@ class RuntimeUtils { fun showWeblateSnackbar( context: Context, activity: MainActivity, language: String, languageName: String ) { + MainActivity.isShowingWeblateSb = true // if we haven't shown context snackbar for context version yet val prefs = MainApplication.getSharedPreferences("mmm") if (prefs.getInt("weblate_snackbar_shown", 0) == BuildConfig.VERSION_CODE) return val snackbar: Snackbar = Snackbar.make( activity.findViewById(R.id.root_container), activity.getString(R.string.language_not_available, languageName), - Snackbar.LENGTH_LONG + 4000 ) snackbar.setAction(R.string.ok) { val intent = Intent(Intent.ACTION_VIEW) @@ -217,6 +220,10 @@ class RuntimeUtils { activity.startActivity(intent) } snackbar.show() + // after four seconds, set isShowingWeblateSb to false + Handler(Looper.getMainLooper()).postDelayed({ + MainActivity.isShowingWeblateSb = false + }, 4000) prefs.edit().putInt("weblate_snackbar_shown", BuildConfig.VERSION_CODE).apply() } @@ -230,6 +237,13 @@ class RuntimeUtils { @SuppressLint("RestrictedApi") fun showUpgradeSnackbar(context: Context, activity: MainActivity) { Timber.i("showUpgradeSnackbar start") + // if sb is already showing, wait 4 seconds and try again + if (MainActivity.isShowingWeblateSb) { + Handler(Looper.getMainLooper()).postDelayed({ + showUpgradeSnackbar(context, activity) + }, 4500) + return + } val prefs = MainApplication.getSharedPreferences("mmm") // if last shown < 7 days ago if (prefs.getLong("ugsns4", 0) > System.currentTimeMillis() - 604800000) return diff --git a/settings.gradle.kts b/settings.gradle.kts index c326976..f6c5428 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,7 @@ @file:Suppress("UnstableApiUsage") + +include(":baselineprofile") + plugins { id("com.gradle.enterprise") version("3.13") }