diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/CreatePrivateChatActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/CreatePrivateChatActivity.kt index 25c6dec9a4..40947d1543 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/CreatePrivateChatActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/CreatePrivateChatActivity.kt @@ -1,5 +1,7 @@ package org.thoughtcrime.securesms.loki.activities +import android.animation.Animator +import android.animation.AnimatorListenerAdapter import android.content.ClipData import android.content.ClipboardManager import android.content.Context @@ -13,8 +15,14 @@ import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import android.widget.Toast import kotlinx.android.synthetic.main.activity_create_private_chat.* +import kotlinx.android.synthetic.main.activity_create_private_chat.loader +import kotlinx.android.synthetic.main.activity_create_private_chat.tabLayout +import kotlinx.android.synthetic.main.activity_create_private_chat.viewPager +import kotlinx.android.synthetic.main.activity_join_public_chat.* import kotlinx.android.synthetic.main.fragment_enter_public_key.* +import kotlinx.android.synthetic.main.permissions_rationale_dialog.* import network.loki.messenger.R +import org.session.libsession.snode.SnodeAPI import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity import org.thoughtcrime.securesms.conversation.ConversationActivity import org.session.libsession.utilities.Address @@ -48,6 +56,23 @@ class CreatePrivateChatActivity : PassphraseRequiredActionBarActivity(), ScanQRC } // endregion + // region Updating + private fun showLoader() { + loader.visibility = View.VISIBLE + loader.animate().setDuration(150).alpha(1.0f).start() + } + + private fun hideLoader() { + loader.animate().setDuration(150).alpha(0.0f).setListener(object : AnimatorListenerAdapter() { + + override fun onAnimationEnd(animation: Animator?) { + super.onAnimationEnd(animation) + loader.visibility = View.GONE + } + }) + } + // endregion + // region Interaction override fun onOptionsItemSelected(item: MenuItem): Boolean { when(item.itemId) { @@ -60,8 +85,27 @@ class CreatePrivateChatActivity : PassphraseRequiredActionBarActivity(), ScanQRC createPrivateChatIfPossible(hexEncodedPublicKey) } - fun createPrivateChatIfPossible(hexEncodedPublicKey: String) { - if (!PublicKeyValidation.isValid(hexEncodedPublicKey)) { return Toast.makeText(this, R.string.invalid_session_id, Toast.LENGTH_SHORT).show() } + fun createPrivateChatIfPossible(onsNameOrPublicKey: String) { + if (!PublicKeyValidation.isValid(onsNameOrPublicKey)) { + createPrivateChat(onsNameOrPublicKey) + } else { + // This could be an ONS name + showLoader() + SnodeAPI.getSessionIDFor(onsNameOrPublicKey).success { hexEncodedPublicKey -> + hideLoader() + this.createPrivateChat(hexEncodedPublicKey) + }.fail { exception -> + hideLoader() + var message = "Please check the Session ID or ONS name and try again." + exception.localizedMessage?.let { + message = it + } + Toast.makeText(this, message, Toast.LENGTH_SHORT).show() + } + } + } + + private fun createPrivateChat(hexEncodedPublicKey: String) { val recipient = Recipient.from(this, Address.fromSerialized(hexEncodedPublicKey), false) val intent = Intent(this, ConversationActivity::class.java) intent.putExtra(ConversationActivity.ADDRESS_EXTRA, recipient.address) diff --git a/app/src/main/res/layout/activity_create_private_chat.xml b/app/src/main/res/layout/activity_create_private_chat.xml index 6a1229648e..5d21096f01 100644 --- a/app/src/main/res/layout/activity_create_private_chat.xml +++ b/app/src/main/res/layout/activity_create_private_chat.xml @@ -1,14 +1,40 @@ - + android:layout_height="match_parent"> - + android:layout_height="match_parent" > - \ No newline at end of file + + + + + + + + + + + \ No newline at end of file