-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEditNameFragment.kt
128 lines (100 loc) · 4.35 KB
/
EditNameFragment.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.devkor.kodaero
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import androidx.activity.addCallback
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.devkor.kodaero.databinding.FragmentEditNameBinding
class EditNameFragment : Fragment() {
private var _binding: FragmentEditNameBinding? = null
private val binding get() = _binding!!
private lateinit var viewModel: FetchDataViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentEditNameBinding.inflate(inflater, container, false)
viewModel = ViewModelProvider(this).get(FetchDataViewModel::class.java)
binding.backToMypageButton.setOnClickListener {
requireActivity().supportFragmentManager.popBackStack()
}
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
requireActivity().supportFragmentManager.popBackStack()
}
setupListeners()
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val username = arguments?.getString("username")
binding.editNameText.hint = username ?: "닉네임을 입력하세요"
}
private fun setupListeners() {
binding.editNameButton.setOnClickListener {
val enteredText = binding.editNameText.text.toString()
hideKeyboard()
if (enteredText.isBlank()) {
Toast.makeText(requireContext(), "수정할 닉네임을 입력해주세요.", Toast.LENGTH_SHORT).show()
} else {
binding.editNameBlackLayout.visibility = View.VISIBLE
binding.editNameLayout.visibility = View.VISIBLE
binding.editNameLayoutText.text = enteredText
}
}
binding.editNameYesButton.setOnClickListener {
val newUsername = binding.editNameLayoutText.text.toString()
viewModel.editUserName(newUsername)
checkTokensAndFetchUserInfo()
}
binding.editNameNoButton.setOnClickListener {
binding.editNameBlackLayout.visibility = View.GONE
binding.editNameLayout.visibility = View.GONE
}
}
fun isEditNameConfirmationVisible(): Boolean {
return binding.editNameLayout.visibility == View.VISIBLE && binding.editNameBlackLayout.visibility == View.VISIBLE
}
fun hideEditNameConfirmationVisible() {
binding.editNameBlackLayout.visibility = View.GONE
binding.editNameLayout.visibility = View.GONE
}
private fun hideKeyboard() {
val inputMethodManager = requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(binding.editNameText.windowToken, 0)
}
private fun checkTokensAndFetchUserInfo() {
val accessToken = TokenManager.getAccessToken()
val refreshToken = TokenManager.getRefreshToken()
if (accessToken != null && refreshToken != null) {
viewModel.fetchUserInfo()
viewModel.userInfo.observe(viewLifecycleOwner, Observer { userInfo ->
if (userInfo != null) {
TokenManager.saveUserInfo(userInfo)
val bundle = Bundle().apply {
putParcelable("userInfo", userInfo)
}
val mypageFragment = MypageFragment().apply {
arguments = bundle
}
val transaction = requireActivity().supportFragmentManager.beginTransaction()
requireActivity().supportFragmentManager.popBackStack()
transaction.add(R.id.main_container, mypageFragment)
transaction.addToBackStack("MypageFragment")
transaction.commit()
}
})
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}