|
|
|
package org.thoughtcrime.securesms.loki.activities
|
|
|
|
|
|
|
|
import android.app.AlertDialog
|
|
|
|
import android.content.Intent
|
|
|
|
import android.graphics.drawable.TransitionDrawable
|
|
|
|
import android.net.Uri
|
|
|
|
import android.os.Bundle
|
|
|
|
import androidx.annotation.DrawableRes
|
|
|
|
import android.view.Menu
|
|
|
|
import android.view.MenuItem
|
|
|
|
import android.view.View
|
|
|
|
import android.widget.LinearLayout
|
|
|
|
import android.widget.Toast
|
|
|
|
import kotlinx.android.synthetic.main.activity_display_name.registerButton
|
|
|
|
import kotlinx.android.synthetic.main.activity_pn_mode.*
|
|
|
|
import network.loki.messenger.R
|
|
|
|
import org.thoughtcrime.securesms.ApplicationContext
|
|
|
|
import org.thoughtcrime.securesms.BaseActionBarActivity
|
|
|
|
import org.thoughtcrime.securesms.loki.utilities.setUpActionBarSessionLogo
|
|
|
|
import org.thoughtcrime.securesms.loki.utilities.show
|
|
|
|
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
|
|
|
|
|
|
|
class PNModeActivity : BaseActionBarActivity() {
|
|
|
|
private var selectedOptionView: LinearLayout? = null
|
|
|
|
|
|
|
|
// region Lifecycle
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
setUpActionBarSessionLogo()
|
|
|
|
setContentView(R.layout.activity_pn_mode)
|
|
|
|
fcmOptionView.setOnClickListener { toggleFCM() }
|
|
|
|
backgroundPollingOptionView.setOnClickListener { toggleBackgroundPolling() }
|
|
|
|
registerButton.setOnClickListener { register() }
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
|
|
|
menuInflater.inflate(R.menu.menu_pn_mode, menu)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region Animation
|
|
|
|
private fun performTransition(@DrawableRes transitionID: Int, subject: View) {
|
|
|
|
val drawable = resources.getDrawable(transitionID, theme) as TransitionDrawable
|
|
|
|
subject.background = drawable
|
|
|
|
drawable.startTransition(250)
|
|
|
|
}
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
// region Interaction
|
|
|
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
|
|
|
val id = item.itemId
|
|
|
|
when(id) {
|
|
|
|
R.id.learnMoreButton -> learnMore()
|
|
|
|
else -> { /* Do nothing */ }
|
|
|
|
}
|
|
|
|
return super.onOptionsItemSelected(item)
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun learnMore() {
|
|
|
|
try {
|
|
|
|
val url = "https://getsession.org/faq/#privacy"
|
|
|
|
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()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun toggleFCM() {
|
|
|
|
when (selectedOptionView) {
|
|
|
|
null -> {
|
|
|
|
performTransition(R.drawable.pn_option_background_select_transition, fcmOptionView)
|
|
|
|
selectedOptionView = fcmOptionView
|
|
|
|
}
|
|
|
|
fcmOptionView -> {
|
|
|
|
performTransition(R.drawable.pn_option_background_deselect_transition, fcmOptionView)
|
|
|
|
selectedOptionView = null
|
|
|
|
}
|
|
|
|
backgroundPollingOptionView -> {
|
|
|
|
performTransition(R.drawable.pn_option_background_select_transition, fcmOptionView)
|
|
|
|
performTransition(R.drawable.pn_option_background_deselect_transition, backgroundPollingOptionView)
|
|
|
|
selectedOptionView = fcmOptionView
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun toggleBackgroundPolling() {
|
|
|
|
when (selectedOptionView) {
|
|
|
|
null -> {
|
|
|
|
performTransition(R.drawable.pn_option_background_select_transition, backgroundPollingOptionView)
|
|
|
|
selectedOptionView = backgroundPollingOptionView
|
|
|
|
}
|
|
|
|
backgroundPollingOptionView -> {
|
|
|
|
performTransition(R.drawable.pn_option_background_deselect_transition, backgroundPollingOptionView)
|
|
|
|
selectedOptionView = null
|
|
|
|
}
|
|
|
|
fcmOptionView -> {
|
|
|
|
performTransition(R.drawable.pn_option_background_select_transition, backgroundPollingOptionView)
|
|
|
|
performTransition(R.drawable.pn_option_background_deselect_transition, fcmOptionView)
|
|
|
|
selectedOptionView = backgroundPollingOptionView
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun register() {
|
|
|
|
if (selectedOptionView == null) {
|
|
|
|
val dialog = AlertDialog.Builder(this)
|
|
|
|
dialog.setTitle(R.string.activity_pn_mode_no_option_picked_dialog_title)
|
|
|
|
dialog.setPositiveButton(R.string.ok) { _, _ -> }
|
|
|
|
dialog.create().show()
|
|
|
|
return
|
|
|
|
}
|
|
|
|
val displayName = TextSecurePreferences.getProfileName(this)
|
|
|
|
TextSecurePreferences.setHasSeenWelcomeScreen(this, true)
|
|
|
|
TextSecurePreferences.setPromptedPushRegistration(this, true)
|
|
|
|
TextSecurePreferences.setIsUsingFCM(this, (selectedOptionView == fcmOptionView))
|
|
|
|
TextSecurePreferences.setHasSeenMultiDeviceRemovalSheet(this)
|
|
|
|
TextSecurePreferences.setHasSeenLightThemeIntroSheet(this)
|
|
|
|
val application = ApplicationContext.getInstance(this)
|
|
|
|
application.setUpStorageAPIIfNeeded()
|
|
|
|
application.setUpP2PAPIIfNeeded()
|
|
|
|
application.registerForFCMIfNeeded(true)
|
|
|
|
val intent = Intent(this, HomeActivity::class.java)
|
|
|
|
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
|
|
|
show(intent)
|
|
|
|
}
|
|
|
|
// endregion
|
|
|
|
}
|