Disable the Nightly popup, user registration (with `updateIfNewReleaseAvailable()`) to get upgrade does not work.
Add a nightly build section in the preferences to manually try to upgrade.
This commit is contained in:
parent
a65e13970d
commit
0d12dbbe7e
|
@ -2487,6 +2487,9 @@
|
||||||
<string name="settings_key_requests">Key Requests</string>
|
<string name="settings_key_requests">Key Requests</string>
|
||||||
<string name="settings_export_trail">Export Audit</string>
|
<string name="settings_export_trail">Export Audit</string>
|
||||||
|
|
||||||
|
<string name="settings_nightly_build">Nightly build</string>
|
||||||
|
<string name="settings_nightly_build_update">Get the latest build (note: you may have trouble to sign in)</string>
|
||||||
|
|
||||||
<string name="e2e_use_keybackup">Unlock encrypted messages history</string>
|
<string name="e2e_use_keybackup">Unlock encrypted messages history</string>
|
||||||
|
|
||||||
<string name="refresh">Refresh</string>
|
<string name="refresh">Refresh</string>
|
||||||
|
|
|
@ -34,8 +34,11 @@ class FirebaseNightlyProxy @Inject constructor(
|
||||||
private val buildMeta: BuildMeta,
|
private val buildMeta: BuildMeta,
|
||||||
) : NightlyProxy {
|
) : NightlyProxy {
|
||||||
|
|
||||||
override fun onHomeResumed() {
|
override fun isNightlyBuild(): Boolean {
|
||||||
if (!canDisplayPopup()) return
|
return buildMeta.applicationId in nightlyPackages
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun updateApplication() {
|
||||||
val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
|
val firebaseAppDistribution = FirebaseAppDistribution.getInstance()
|
||||||
firebaseAppDistribution.updateIfNewReleaseAvailable()
|
firebaseAppDistribution.updateIfNewReleaseAvailable()
|
||||||
.addOnProgressListener { up ->
|
.addOnProgressListener { up ->
|
||||||
|
@ -46,6 +49,7 @@ class FirebaseNightlyProxy @Inject constructor(
|
||||||
when (e.errorCode) {
|
when (e.errorCode) {
|
||||||
FirebaseAppDistributionException.Status.NOT_IMPLEMENTED -> {
|
FirebaseAppDistributionException.Status.NOT_IMPLEMENTED -> {
|
||||||
// SDK did nothing. This is expected when building for Play.
|
// SDK did nothing. This is expected when building for Play.
|
||||||
|
Timber.d("FirebaseAppDistribution NOT_IMPLEMENTED error")
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
// Handle other errors.
|
// Handle other errors.
|
||||||
|
@ -56,10 +60,14 @@ class FirebaseNightlyProxy @Inject constructor(
|
||||||
Timber.e(e, "FirebaseAppDistribution - other error")
|
Timber.e(e, "FirebaseAppDistribution - other error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.addOnSuccessListener {
|
||||||
|
Timber.d("FirebaseAppDistribution Success!")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun canDisplayPopup(): Boolean {
|
override fun canDisplayPopup(): Boolean {
|
||||||
if (buildMeta.applicationId != "im.vector.app.nightly") return false
|
if (!POPUP_IS_ENABLED) return false
|
||||||
|
if (!isNightlyBuild()) return false
|
||||||
val today = clock.epochMillis() / A_DAY_IN_MILLIS
|
val today = clock.epochMillis() / A_DAY_IN_MILLIS
|
||||||
val lastDisplayPopupDay = sharedPreferences.getLong(SHARED_PREF_KEY, 0)
|
val lastDisplayPopupDay = sharedPreferences.getLong(SHARED_PREF_KEY, 0)
|
||||||
return (today > lastDisplayPopupDay)
|
return (today > lastDisplayPopupDay)
|
||||||
|
@ -73,7 +81,12 @@ class FirebaseNightlyProxy @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
private const val POPUP_IS_ENABLED = false
|
||||||
private const val A_DAY_IN_MILLIS = 8_600_000L
|
private const val A_DAY_IN_MILLIS = 8_600_000L
|
||||||
private const val SHARED_PREF_KEY = "LAST_NIGHTLY_POPUP_DAY"
|
private const val SHARED_PREF_KEY = "LAST_NIGHTLY_POPUP_DAY"
|
||||||
|
|
||||||
|
private val nightlyPackages = listOf(
|
||||||
|
"im.vector.app.nightly"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -580,7 +580,9 @@ class HomeActivity :
|
||||||
serverBackupStatusViewModel.refreshRemoteStateIfNeeded()
|
serverBackupStatusViewModel.refreshRemoteStateIfNeeded()
|
||||||
|
|
||||||
// Check nightly
|
// Check nightly
|
||||||
nightlyProxy.onHomeResumed()
|
if (nightlyProxy.canDisplayPopup()) {
|
||||||
|
nightlyProxy.updateApplication()
|
||||||
|
}
|
||||||
|
|
||||||
checkNewAppLayoutFlagChange()
|
checkNewAppLayoutFlagChange()
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,5 +17,18 @@
|
||||||
package im.vector.app.features.home
|
package im.vector.app.features.home
|
||||||
|
|
||||||
interface NightlyProxy {
|
interface NightlyProxy {
|
||||||
fun onHomeResumed()
|
/**
|
||||||
|
* Return true if this is a nightly build (checking the package of the app), and only once a day.
|
||||||
|
*/
|
||||||
|
fun canDisplayPopup(): Boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if this is a nightly build (checking the package of the app).
|
||||||
|
*/
|
||||||
|
fun isNightlyBuild(): Boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to update the application, if update is available. Will also take care of the user sign in.
|
||||||
|
*/
|
||||||
|
fun updateApplication()
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,10 +22,13 @@ import androidx.preference.SeekBarPreference
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.core.platform.VectorBaseActivity
|
import im.vector.app.core.platform.VectorBaseActivity
|
||||||
|
import im.vector.app.core.preference.VectorPreference
|
||||||
import im.vector.app.core.preference.VectorPreferenceCategory
|
import im.vector.app.core.preference.VectorPreferenceCategory
|
||||||
import im.vector.app.core.preference.VectorSwitchPreference
|
import im.vector.app.core.preference.VectorSwitchPreference
|
||||||
import im.vector.app.features.analytics.plan.MobileScreen
|
import im.vector.app.features.analytics.plan.MobileScreen
|
||||||
|
import im.vector.app.features.home.NightlyProxy
|
||||||
import im.vector.app.features.rageshake.RageShake
|
import im.vector.app.features.rageshake.RageShake
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class VectorSettingsAdvancedSettingsFragment :
|
class VectorSettingsAdvancedSettingsFragment :
|
||||||
|
@ -34,6 +37,8 @@ class VectorSettingsAdvancedSettingsFragment :
|
||||||
override var titleRes = R.string.settings_advanced_settings
|
override var titleRes = R.string.settings_advanced_settings
|
||||||
override val preferenceXmlRes = R.xml.vector_settings_advanced_settings
|
override val preferenceXmlRes = R.xml.vector_settings_advanced_settings
|
||||||
|
|
||||||
|
@Inject lateinit var nightlyProxy: NightlyProxy
|
||||||
|
|
||||||
private var rageshake: RageShake? = null
|
private var rageshake: RageShake? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
@ -57,6 +62,11 @@ class VectorSettingsAdvancedSettingsFragment :
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun bindPref() {
|
override fun bindPref() {
|
||||||
|
setupRageShakeSection()
|
||||||
|
setupNightlySection()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupRageShakeSection() {
|
||||||
val isRageShakeAvailable = RageShake.isAvailable(requireContext())
|
val isRageShakeAvailable = RageShake.isAvailable(requireContext())
|
||||||
|
|
||||||
if (isRageShakeAvailable) {
|
if (isRageShakeAvailable) {
|
||||||
|
@ -86,4 +96,12 @@ class VectorSettingsAdvancedSettingsFragment :
|
||||||
findPreference<VectorPreferenceCategory>("SETTINGS_RAGE_SHAKE_CATEGORY_KEY")!!.isVisible = false
|
findPreference<VectorPreferenceCategory>("SETTINGS_RAGE_SHAKE_CATEGORY_KEY")!!.isVisible = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupNightlySection() {
|
||||||
|
findPreference<VectorPreferenceCategory>("SETTINGS_NIGHTLY_BUILD_PREFERENCE_KEY")?.isVisible = nightlyProxy.isNightlyBuild()
|
||||||
|
findPreference<VectorPreference>("SETTINGS_NIGHTLY_BUILD_UPDATE_PREFERENCE_KEY")?.setOnPreferenceClickListener {
|
||||||
|
nightlyProxy.updateApplication()
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,4 +95,16 @@
|
||||||
|
|
||||||
</im.vector.app.core.preference.VectorPreferenceCategory>
|
</im.vector.app.core.preference.VectorPreferenceCategory>
|
||||||
|
|
||||||
|
<im.vector.app.core.preference.VectorPreferenceCategory
|
||||||
|
android:key="SETTINGS_NIGHTLY_BUILD_PREFERENCE_KEY"
|
||||||
|
android:title="@string/settings_nightly_build"
|
||||||
|
app:isPreferenceVisible="true">
|
||||||
|
|
||||||
|
<im.vector.app.core.preference.VectorPreference
|
||||||
|
android:key="SETTINGS_NIGHTLY_BUILD_UPDATE_PREFERENCE_KEY"
|
||||||
|
android:persistent="false"
|
||||||
|
android:title="@string/settings_nightly_build_update" />
|
||||||
|
|
||||||
|
</im.vector.app.core.preference.VectorPreferenceCategory>
|
||||||
|
|
||||||
</androidx.preference.PreferenceScreen>
|
</androidx.preference.PreferenceScreen>
|
||||||
|
|
Loading…
Reference in New Issue