Add file server instability modal

This commit is contained in:
nielsandriesse 2021-05-19 15:25:36 +10:00 committed by Niels Andriesse
parent b0e54d7e9f
commit c861b330ba
5 changed files with 96 additions and 18 deletions

View File

@ -172,8 +172,7 @@ class HomeActivity : PassphraseRequiredActionBarActivity(),
if (hasViewedSeed) { if (hasViewedSeed) {
seedReminderView.visibility = View.GONE seedReminderView.visibility = View.GONE
} }
showKeyPairMigrationSheetIfNeeded() showFileServerInstabilityNotificationIfNeeded()
showKeyPairMigrationSuccessSheetIfNeeded()
if (TextSecurePreferences.getConfigurationMessageSynced(this)) { if (TextSecurePreferences.getConfigurationMessageSynced(this)) {
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
MultiDeviceProtocol.syncConfigurationIfNeeded(this@HomeActivity) MultiDeviceProtocol.syncConfigurationIfNeeded(this@HomeActivity)
@ -181,21 +180,11 @@ class HomeActivity : PassphraseRequiredActionBarActivity(),
} }
} }
private fun showKeyPairMigrationSheetIfNeeded() { private fun showFileServerInstabilityNotificationIfNeeded() {
if (KeyPairUtilities.hasV2KeyPair(this)) { val hasSeenNotification = TextSecurePreferences.hasSeenFileServerInstabilityNotification(this)
return if (hasSeenNotification) { return }
} FileServerDialog().show(supportFragmentManager, "File Server Dialog")
val keyPairMigrationSheet = KeyPairMigrationBottomSheet() TextSecurePreferences.setHasSeenFileServerInstabilityNotification(this)
keyPairMigrationSheet.show(supportFragmentManager, keyPairMigrationSheet.tag)
}
private fun showKeyPairMigrationSuccessSheetIfNeeded() {
if (!KeyPairUtilities.hasV2KeyPair(this) || !TextSecurePreferences.getIsMigratingKeyPair(this)) {
return
}
val keyPairMigrationSuccessSheet = KeyPairMigrationSuccessBottomSheet()
keyPairMigrationSuccessSheet.show(supportFragmentManager, keyPairMigrationSuccessSheet.tag)
TextSecurePreferences.setIsMigratingKeyPair(this, false)
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

View File

@ -0,0 +1,33 @@
package org.thoughtcrime.securesms.loki.dialogs
import android.app.Dialog
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import kotlinx.android.synthetic.main.dialog_file_server.view.*
import kotlinx.android.synthetic.main.dialog_seed.view.*
import network.loki.messenger.R
import org.session.libsession.utilities.IdentityKeyUtil
import org.thoughtcrime.securesms.loki.utilities.MnemonicUtilities
import org.session.libsignal.crypto.MnemonicCodec
import org.session.libsignal.utilities.hexEncodedPrivateKey
class FileServerDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder(requireContext())
val contentView = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_file_server, null)
contentView.okButton.setOnClickListener { dismiss() }
builder.setView(contentView)
val result = builder.create()
result.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
return result
}
}

View File

@ -18,7 +18,6 @@ import org.thoughtcrime.securesms.loki.utilities.MnemonicUtilities
import org.session.libsignal.crypto.MnemonicCodec import org.session.libsignal.crypto.MnemonicCodec
import org.session.libsignal.utilities.hexEncodedPrivateKey import org.session.libsignal.utilities.hexEncodedPrivateKey
class SeedDialog : DialogFragment() { class SeedDialog : DialogFragment() {
private val seed by lazy { private val seed by lazy {

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/default_dialog_background_inset"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="32dp"
android:paddingTop="@dimen/medium_spacing"
android:paddingRight="32dp"
android:paddingBottom="@dimen/medium_spacing">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Session"
android:textColor="@color/text"
android:textStyle="bold"
android:textAlignment="center"
android:textSize="@dimen/medium_font_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/large_spacing"
android:text="We're upgrading the way files are stored. File transfer may be unstable for the next 24-48 hours."
android:textColor="@color/text"
android:textSize="@dimen/small_font_size"
android:textAlignment="center"
android:alpha="0.6" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/large_spacing"
android:orientation="horizontal">
<Button
style="@style/Widget.Session.Button.Dialog.Unimportant"
android:id="@+id/okButton"
android:layout_width="0dp"
android:layout_height="@dimen/small_button_height"
android:layout_weight="1"
android:text="@string/ok" />
</LinearLayout>
</LinearLayout>

View File

@ -764,5 +764,13 @@ object TextSecurePreferences {
@JvmStatic @JvmStatic
fun shouldUpdateProfile(context: Context, profileUpdateTime: Long) = fun shouldUpdateProfile(context: Context, profileUpdateTime: Long) =
profileUpdateTime > getLongPreference(context, LAST_PROFILE_UPDATE_TIME, 0) profileUpdateTime > getLongPreference(context, LAST_PROFILE_UPDATE_TIME, 0)
fun hasSeenFileServerInstabilityNotification(context: Context): Boolean {
return getBooleanPreference(context, "has_seen_file_server_instability_notification", false)
}
fun setHasSeenFileServerInstabilityNotification(context: Context) {
setBooleanPreference(context, "has_seen_file_server_instability_notification", true)
}
// endregion // endregion
} }