session-android/app/src/main/java/org/thoughtcrime/securesms/loki/dialogs/UserDetailsBottomSheet.kt

81 lines
3.7 KiB
Kotlin
Raw Normal View History

2020-09-07 02:57:25 +02:00
package org.thoughtcrime.securesms.loki.dialogs
2021-05-13 02:25:11 +02:00
import android.annotation.SuppressLint
2020-09-07 07:20:32 +02:00
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
2020-09-07 02:57:25 +02:00
import android.os.Bundle
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
2021-05-13 02:25:11 +02:00
import android.view.inputmethod.InputMethodManager
2020-09-07 07:20:32 +02:00
import android.widget.Toast
import kotlinx.android.synthetic.main.fragment_user_details_bottom_sheet.*
2020-09-07 02:57:25 +02:00
import network.loki.messenger.R
2021-05-11 09:05:04 +02:00
import org.session.libsession.messaging.threads.Address
import org.session.libsession.messaging.threads.recipients.Recipient
import org.session.libsession.utilities.SSKEnvironment
2020-09-07 07:20:32 +02:00
import org.thoughtcrime.securesms.mms.GlideApp
2020-09-07 02:57:25 +02:00
public class UserDetailsBottomSheet : BottomSheetDialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_user_details_bottom_sheet, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
2020-09-07 07:20:32 +02:00
val publicKey = arguments?.getString("publicKey") ?: return dismiss()
2021-05-11 09:05:04 +02:00
val recipient = Recipient.from(requireContext(), Address.fromSerialized(publicKey), false)
2020-09-07 07:20:32 +02:00
profilePictureView.publicKey = publicKey
profilePictureView.glide = GlideApp.with(this)
profilePictureView.isLarge = true
profilePictureView.update()
2021-05-11 09:05:04 +02:00
nameTextViewContainer.visibility = View.VISIBLE
nameTextViewContainer.setOnClickListener {
nameTextViewContainer.visibility = View.INVISIBLE
nameEditContainer.visibility = View.VISIBLE
nameEditText.requestFocus()
2021-05-13 02:25:11 +02:00
showSoftKeyboard()
2021-05-11 09:05:04 +02:00
}
btnCancelNickNameEdit.setOnClickListener {
nameEditText.clearFocus()
2021-05-13 02:25:11 +02:00
hideSoftKeyboard()
2021-05-11 09:05:04 +02:00
nameTextViewContainer.visibility = View.VISIBLE
nameEditContainer.visibility = View.INVISIBLE
nameEditText.text = null
}
btnSaveNickNameEdit.setOnClickListener {
nameEditText.clearFocus()
2021-05-13 02:25:11 +02:00
hideSoftKeyboard()
2021-05-11 09:05:04 +02:00
nameTextViewContainer.visibility = View.VISIBLE
nameEditContainer.visibility = View.INVISIBLE
2021-05-12 07:11:09 +02:00
var newNickName: String? = null
if (!nameEditText.text.isEmpty()) {
newNickName = nameEditText.text.toString()
}
2021-05-11 09:05:04 +02:00
SSKEnvironment.shared.profileManager.setDisplayName(requireContext(), recipient, newNickName)
nameTextView.text = SSKEnvironment.shared.profileManager.getDisplayName(requireContext(), recipient) ?: "Anonymous"
}
nameTextView.text = SSKEnvironment.shared.profileManager.getDisplayName(requireContext(), recipient) ?: "Anonymous"
2020-09-07 07:20:32 +02:00
publicKeyTextView.text = publicKey
copyButton.setOnClickListener {
val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Session ID", publicKey)
clipboard.setPrimaryClip(clip)
Toast.makeText(requireContext(), R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
}
2020-09-07 02:57:25 +02:00
}
2021-05-13 02:25:11 +02:00
@SuppressLint("ServiceCast")
fun showSoftKeyboard() {
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
imm?.showSoftInput(nameEditText, 0)
}
fun hideSoftKeyboard() {
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
imm?.hideSoftInputFromWindow(nameEditText.windowToken, 0)
}
2020-09-07 02:57:25 +02:00
}