mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-27 12:05:22 +00:00
Refactor conversation.start
This commit is contained in:
parent
db0eae80eb
commit
2fc686ce73
@ -1,99 +0,0 @@
|
|||||||
package org.thoughtcrime.securesms.conversation.new
|
|
||||||
|
|
||||||
import android.content.ClipData
|
|
||||||
import android.content.ClipboardManager
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.text.InputType
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.view.inputmethod.EditorInfo
|
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.core.view.isVisible
|
|
||||||
import androidx.core.widget.addTextChangedListener
|
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import network.loki.messenger.R
|
|
||||||
import network.loki.messenger.databinding.FragmentEnterPublicKeyBinding
|
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
|
||||||
import org.thoughtcrime.securesms.util.QRCodeUtilities
|
|
||||||
import org.thoughtcrime.securesms.util.hideKeyboard
|
|
||||||
import org.thoughtcrime.securesms.util.toPx
|
|
||||||
|
|
||||||
class EnterPublicKeyFragment : Fragment() {
|
|
||||||
private lateinit var binding: FragmentEnterPublicKeyBinding
|
|
||||||
|
|
||||||
var delegate: EnterPublicKeyDelegate? = null
|
|
||||||
|
|
||||||
private val hexEncodedPublicKey: String
|
|
||||||
get() = TextSecurePreferences.getLocalNumber(requireContext())!!
|
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
|
||||||
binding = FragmentEnterPublicKeyBinding.inflate(inflater, container, false)
|
|
||||||
return binding.root
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
||||||
super.onViewCreated(view, savedInstanceState)
|
|
||||||
with(binding) {
|
|
||||||
publicKeyEditText.imeOptions = EditorInfo.IME_ACTION_DONE or 16777216 // Always use incognito keyboard
|
|
||||||
publicKeyEditText.setRawInputType(InputType.TYPE_CLASS_TEXT)
|
|
||||||
publicKeyEditText.setOnEditorActionListener { v, actionID, _ ->
|
|
||||||
if (actionID == EditorInfo.IME_ACTION_DONE) {
|
|
||||||
v.hideKeyboard()
|
|
||||||
handlePublicKeyEntered()
|
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
publicKeyEditText.addTextChangedListener { text -> createPrivateChatButton.isVisible = !text.isNullOrBlank() }
|
|
||||||
publicKeyEditText.setOnFocusChangeListener { _, hasFocus -> optionalContentContainer.isVisible = !hasFocus }
|
|
||||||
mainContainer.setOnTouchListener { _, _ ->
|
|
||||||
binding.optionalContentContainer.isVisible = true
|
|
||||||
publicKeyEditText.clearFocus()
|
|
||||||
publicKeyEditText.hideKeyboard()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
val size = toPx(228, resources)
|
|
||||||
val qrCode = QRCodeUtilities.encode(hexEncodedPublicKey, size, isInverted = false, hasTransparentBackground = false)
|
|
||||||
qrCodeImageView.setImageBitmap(qrCode)
|
|
||||||
publicKeyTextView.text = hexEncodedPublicKey
|
|
||||||
publicKeyTextView.setOnCreateContextMenuListener { contextMenu, view, _ ->
|
|
||||||
contextMenu.add(0, view.id, 0, R.string.copy).setOnMenuItemClickListener {
|
|
||||||
copyPublicKey()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
copyButton.setOnClickListener { copyPublicKey() }
|
|
||||||
shareButton.setOnClickListener { sharePublicKey() }
|
|
||||||
createPrivateChatButton.setOnClickListener { handlePublicKeyEntered(); publicKeyEditText.hideKeyboard() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun copyPublicKey() {
|
|
||||||
val clipboard = requireActivity().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
|
||||||
val clip = ClipData.newPlainText("Session ID", hexEncodedPublicKey)
|
|
||||||
clipboard.setPrimaryClip(clip)
|
|
||||||
Toast.makeText(requireContext(), R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun sharePublicKey() {
|
|
||||||
val intent = Intent()
|
|
||||||
intent.action = Intent.ACTION_SEND
|
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, hexEncodedPublicKey)
|
|
||||||
intent.type = "text/plain"
|
|
||||||
startActivity(intent)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun handlePublicKeyEntered() {
|
|
||||||
val hexEncodedPublicKey = binding.publicKeyEditText.text?.trim()?.toString()
|
|
||||||
if (hexEncodedPublicKey.isNullOrEmpty()) return
|
|
||||||
delegate?.handlePublicKeyEntered(hexEncodedPublicKey)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun interface EnterPublicKeyDelegate {
|
|
||||||
fun handlePublicKeyEntered(publicKey: String)
|
|
||||||
}
|
|
@ -17,9 +17,9 @@ import dagger.hilt.android.AndroidEntryPoint
|
|||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.session.libsession.utilities.Address
|
import org.session.libsession.utilities.Address
|
||||||
import org.session.libsession.utilities.modifyLayoutParams
|
import org.session.libsession.utilities.modifyLayoutParams
|
||||||
import org.thoughtcrime.securesms.conversation.new.NewMessageFragment
|
|
||||||
import org.thoughtcrime.securesms.conversation.start.home.NewConversationHomeFragment
|
import org.thoughtcrime.securesms.conversation.start.home.NewConversationHomeFragment
|
||||||
import org.thoughtcrime.securesms.conversation.start.invitefriend.InviteFriendFragment
|
import org.thoughtcrime.securesms.conversation.start.invitefriend.InviteFriendFragment
|
||||||
|
import org.thoughtcrime.securesms.conversation.start.newmessage.NewMessageFragment
|
||||||
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
||||||
import org.thoughtcrime.securesms.groups.CreateGroupFragment
|
import org.thoughtcrime.securesms.groups.CreateGroupFragment
|
||||||
import org.thoughtcrime.securesms.groups.JoinCommunityFragment
|
import org.thoughtcrime.securesms.groups.JoinCommunityFragment
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package org.thoughtcrime.securesms.conversation.newmessage
|
package org.thoughtcrime.securesms.conversation.start.newmessage
|
||||||
|
|
||||||
interface Callbacks {
|
internal interface Callbacks {
|
||||||
fun onChange(value: String) {}
|
fun onChange(value: String) {}
|
||||||
fun onContinue() {}
|
fun onContinue() {}
|
||||||
fun onScanQrCode(value: String) {}
|
fun onScanQrCode(value: String) {}
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.conversation.newmessage
|
package org.thoughtcrime.securesms.conversation.start.newmessage
|
||||||
|
|
||||||
import androidx.compose.animation.animateContentSize
|
import androidx.compose.animation.animateContentSize
|
||||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
import androidx.compose.foundation.ExperimentalFoundationApi
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.conversation.new
|
package org.thoughtcrime.securesms.conversation.start.newmessage
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -13,9 +13,6 @@ import androidx.lifecycle.lifecycleScope
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.session.libsession.utilities.Address
|
import org.session.libsession.utilities.Address
|
||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
import org.thoughtcrime.securesms.conversation.newmessage.NewMessage
|
|
||||||
import org.thoughtcrime.securesms.conversation.newmessage.NewMessageViewModel
|
|
||||||
import org.thoughtcrime.securesms.conversation.newmessage.State
|
|
||||||
import org.thoughtcrime.securesms.conversation.start.NewConversationDelegate
|
import org.thoughtcrime.securesms.conversation.start.NewConversationDelegate
|
||||||
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
||||||
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.conversation.newmessage
|
package org.thoughtcrime.securesms.conversation.start.newmessage
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.AndroidViewModel
|
||||||
@ -7,13 +7,10 @@ import dagger.hilt.android.lifecycle.HiltViewModel
|
|||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.TimeoutCancellationException
|
import kotlinx.coroutines.TimeoutCancellationException
|
||||||
import kotlinx.coroutines.channels.Channel
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.asSharedFlow
|
import kotlinx.coroutines.flow.asSharedFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.flow.receiveAsFlow
|
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withTimeout
|
import kotlinx.coroutines.withTimeout
|
Loading…
Reference in New Issue
Block a user