mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-27 18:27:43 +00:00
Remove unused RecoveryPhraseRestoreActivity
This commit is contained in:
parent
29275cef51
commit
0bc7b4dc4c
@ -104,11 +104,6 @@
|
|||||||
android:name="org.thoughtcrime.securesms.onboarding.RegisterActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.RegisterActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
<activity
|
|
||||||
android:name="org.thoughtcrime.securesms.onboarding.RecoveryPhraseRestoreActivity"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:windowSoftInputMode="adjustResize"
|
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.onboarding.LinkDeviceActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.LinkDeviceActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
package org.thoughtcrime.securesms.onboarding
|
|
||||||
|
|
||||||
import android.content.Intent
|
|
||||||
import android.graphics.Typeface
|
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.text.Spannable
|
|
||||||
import android.text.SpannableStringBuilder
|
|
||||||
import android.text.method.LinkMovementMethod
|
|
||||||
import android.text.style.ClickableSpan
|
|
||||||
import android.text.style.StyleSpan
|
|
||||||
import android.view.View
|
|
||||||
import android.widget.Toast
|
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
|
||||||
import network.loki.messenger.R
|
|
||||||
import network.loki.messenger.databinding.ActivityRecoveryPhraseRestoreBinding
|
|
||||||
import org.session.libsession.snode.SnodeModule
|
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
|
||||||
import org.session.libsignal.crypto.MnemonicCodec
|
|
||||||
import org.session.libsignal.database.LokiAPIDatabaseProtocol
|
|
||||||
import org.session.libsignal.utilities.Hex
|
|
||||||
import org.session.libsignal.utilities.KeyHelper
|
|
||||||
import org.session.libsignal.utilities.hexEncodedPublicKey
|
|
||||||
import org.thoughtcrime.securesms.BaseActionBarActivity
|
|
||||||
import org.thoughtcrime.securesms.crypto.KeyPairUtilities
|
|
||||||
import org.thoughtcrime.securesms.crypto.MnemonicUtilities
|
|
||||||
import org.thoughtcrime.securesms.dependencies.ConfigFactory
|
|
||||||
import org.thoughtcrime.securesms.util.push
|
|
||||||
import org.thoughtcrime.securesms.util.setUpActionBarSessionLogo
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
|
||||||
class RecoveryPhraseRestoreActivity : BaseActionBarActivity() {
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var configFactory: ConfigFactory
|
|
||||||
|
|
||||||
private lateinit var binding: ActivityRecoveryPhraseRestoreBinding
|
|
||||||
internal val database: LokiAPIDatabaseProtocol
|
|
||||||
get() = SnodeModule.shared.storage
|
|
||||||
// region Lifecycle
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setUpActionBarSessionLogo()
|
|
||||||
TextSecurePreferences.apply {
|
|
||||||
setHasViewedSeed(this@RecoveryPhraseRestoreActivity, true)
|
|
||||||
setConfigurationMessageSynced(this@RecoveryPhraseRestoreActivity, false)
|
|
||||||
setRestorationTime(this@RecoveryPhraseRestoreActivity, System.currentTimeMillis())
|
|
||||||
setLastProfileUpdateTime(this@RecoveryPhraseRestoreActivity, System.currentTimeMillis())
|
|
||||||
}
|
|
||||||
binding = ActivityRecoveryPhraseRestoreBinding.inflate(layoutInflater)
|
|
||||||
setContentView(binding.root)
|
|
||||||
binding.mnemonicEditText.imeOptions = binding.mnemonicEditText.imeOptions or 16777216 // Always use incognito keyboard
|
|
||||||
binding.restoreButton.setOnClickListener { restore() }
|
|
||||||
val termsExplanation = SpannableStringBuilder("By using this service, you agree to our Terms of Service and Privacy Policy")
|
|
||||||
termsExplanation.setSpan(StyleSpan(Typeface.BOLD), 40, 56, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
|
|
||||||
termsExplanation.setSpan(object : ClickableSpan() {
|
|
||||||
|
|
||||||
override fun onClick(widget: View) {
|
|
||||||
openURL("https://getsession.org/terms-of-service/")
|
|
||||||
}
|
|
||||||
}, 40, 56, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
|
|
||||||
termsExplanation.setSpan(StyleSpan(Typeface.BOLD), 61, 75, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
|
|
||||||
termsExplanation.setSpan(object : ClickableSpan() {
|
|
||||||
|
|
||||||
override fun onClick(widget: View) {
|
|
||||||
openURL("https://getsession.org/privacy-policy/")
|
|
||||||
}
|
|
||||||
}, 61, 75, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
|
|
||||||
binding.termsTextView.movementMethod = LinkMovementMethod.getInstance()
|
|
||||||
binding.termsTextView.text = termsExplanation
|
|
||||||
}
|
|
||||||
// endregion
|
|
||||||
|
|
||||||
// region Interaction
|
|
||||||
private fun restore() {
|
|
||||||
val mnemonic = binding.mnemonicEditText.text.toString()
|
|
||||||
try {
|
|
||||||
// This is here to resolve a case where the app restarts before a user completes onboarding
|
|
||||||
// which can result in an invalid database state
|
|
||||||
database.clearAllLastMessageHashes()
|
|
||||||
database.clearReceivedMessageHashValues()
|
|
||||||
|
|
||||||
val loadFileContents: (String) -> String = { fileName ->
|
|
||||||
MnemonicUtilities.loadFileContents(this, fileName)
|
|
||||||
}
|
|
||||||
val hexEncodedSeed = MnemonicCodec(loadFileContents).decode(mnemonic)
|
|
||||||
val seed = Hex.fromStringCondensed(hexEncodedSeed)
|
|
||||||
val keyPairGenerationResult = KeyPairUtilities.generate(seed)
|
|
||||||
val x25519KeyPair = keyPairGenerationResult.x25519KeyPair
|
|
||||||
KeyPairUtilities.store(this, seed, keyPairGenerationResult.ed25519KeyPair, x25519KeyPair)
|
|
||||||
configFactory.keyPairChanged()
|
|
||||||
val userHexEncodedPublicKey = x25519KeyPair.hexEncodedPublicKey
|
|
||||||
val registrationID = KeyHelper.generateRegistrationId(false)
|
|
||||||
TextSecurePreferences.setLocalRegistrationId(this, registrationID)
|
|
||||||
TextSecurePreferences.setLocalNumber(this, userHexEncodedPublicKey)
|
|
||||||
val intent = Intent(this, DisplayNameActivity::class.java)
|
|
||||||
push(intent)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
val message = if (e is MnemonicCodec.DecodingError) e.description else MnemonicCodec.DecodingError.Generic.description
|
|
||||||
return Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun openURL(url: String) {
|
|
||||||
try {
|
|
||||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
|
|
||||||
startActivity(intent)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Toast.makeText(this, R.string.invalid_url, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// endregion
|
|
||||||
}
|
|
@ -1,78 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="@dimen/very_large_spacing"
|
|
||||||
android:layout_marginRight="@dimen/very_large_spacing"
|
|
||||||
android:textSize="@dimen/very_large_font_size"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="?android:textColorPrimary"
|
|
||||||
android:text="@string/activity_restore_title" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="@dimen/very_large_spacing"
|
|
||||||
android:layout_marginTop="7dp"
|
|
||||||
android:layout_marginRight="@dimen/very_large_spacing"
|
|
||||||
android:textSize="@dimen/medium_font_size"
|
|
||||||
android:textColor="?android:textColorPrimary"
|
|
||||||
android:text="@string/activity_restore_explanation" />
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
style="@style/SessionEditText"
|
|
||||||
android:id="@+id/mnemonicEditText"
|
|
||||||
android:contentDescription="@string/AccessibilityId_enter_your_recovery_phrase"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="64dp"
|
|
||||||
android:layout_marginLeft="@dimen/very_large_spacing"
|
|
||||||
android:layout_marginTop="12dp"
|
|
||||||
android:layout_marginRight="@dimen/very_large_spacing"
|
|
||||||
android:paddingTop="0dp"
|
|
||||||
android:paddingBottom="0dp"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:inputType="textMultiLine"
|
|
||||||
android:maxLines="3"
|
|
||||||
android:hint="@string/activity_restore_seed_edit_text_hint" />
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
style="@style/Widget.Session.Button.Common.ProminentFilled"
|
|
||||||
android:id="@+id/restoreButton"
|
|
||||||
android:contentDescription="@string/AccessibilityId_continue"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/medium_button_height"
|
|
||||||
android:layout_marginLeft="@dimen/massive_spacing"
|
|
||||||
android:layout_marginRight="@dimen/massive_spacing"
|
|
||||||
android:text="@string/continue_2" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/termsTextView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/onboarding_button_bottom_offset"
|
|
||||||
android:layout_marginLeft="@dimen/massive_spacing"
|
|
||||||
android:layout_marginRight="@dimen/massive_spacing"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColor="?android:textColorTertiary"
|
|
||||||
android:textColorLink="?colorAccent"
|
|
||||||
android:textSize="@dimen/very_small_font_size"
|
|
||||||
android:text="By using this service, you agree to our Terms of Service and Privacy Policy"
|
|
||||||
tools:ignore="HardcodedText" /> <!-- Intentionally not yet translated -->
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
@ -1,78 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="@dimen/very_large_spacing"
|
|
||||||
android:layout_marginRight="@dimen/very_large_spacing"
|
|
||||||
android:textSize="@dimen/large_font_size"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="?android:textColorPrimary"
|
|
||||||
android:text="@string/activity_restore_title" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="@dimen/very_large_spacing"
|
|
||||||
android:layout_marginTop="4dp"
|
|
||||||
android:layout_marginRight="@dimen/very_large_spacing"
|
|
||||||
android:textSize="@dimen/small_font_size"
|
|
||||||
android:textColor="?android:textColorPrimary"
|
|
||||||
android:text="@string/activity_restore_explanation" />
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/mnemonicEditText"
|
|
||||||
style="@style/SmallSessionEditText"
|
|
||||||
android:contentDescription="@string/AccessibilityId_enter_your_recovery_phrase"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="64dp"
|
|
||||||
android:layout_marginLeft="@dimen/very_large_spacing"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:layout_marginRight="@dimen/very_large_spacing"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:hint="@string/activity_restore_seed_edit_text_hint"
|
|
||||||
android:inputType="textMultiLine"
|
|
||||||
android:maxLines="3"
|
|
||||||
android:paddingTop="0dp"
|
|
||||||
android:paddingBottom="0dp" />
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
style="@style/Widget.Session.Button.Common.ProminentFilled"
|
|
||||||
android:contentDescription="@string/AccessibilityId_continue"
|
|
||||||
android:id="@+id/restoreButton"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/medium_button_height"
|
|
||||||
android:layout_marginLeft="@dimen/massive_spacing"
|
|
||||||
android:layout_marginRight="@dimen/massive_spacing"
|
|
||||||
android:text="@string/continue_2" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/termsTextView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/onboarding_button_bottom_offset"
|
|
||||||
android:layout_marginLeft="@dimen/massive_spacing"
|
|
||||||
android:layout_marginRight="@dimen/massive_spacing"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColorLink="?android:textColorPrimary"
|
|
||||||
android:textSize="@dimen/very_small_font_size"
|
|
||||||
android:textColor="?android:textColorPrimary"
|
|
||||||
android:text="By using this service, you agree to our Terms of Service and Privacy Policy"
|
|
||||||
tools:ignore="HardcodedText" /> <!-- Intentionally not yet translated -->
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
Loading…
x
Reference in New Issue
Block a user