|
@@ -1,60 +1,99 @@
|
|
|
package com.sambath.kunkhmer.screen.shop
|
|
|
|
|
|
+import android.app.Activity
|
|
|
+import android.content.Intent
|
|
|
+import android.net.Uri
|
|
|
import android.os.Bundle
|
|
|
import androidx.fragment.app.Fragment
|
|
|
import android.view.LayoutInflater
|
|
|
import android.view.View
|
|
|
import android.view.ViewGroup
|
|
|
+import android.widget.Toast
|
|
|
+import androidx.activity.result.ActivityResultLauncher
|
|
|
+import androidx.activity.result.contract.ActivityResultContracts
|
|
|
import com.sambath.kunkhmer.R
|
|
|
+import com.sambath.kunkhmer.app.App
|
|
|
+import com.sambath.kunkhmer.remote.CreateProductRequest
|
|
|
+import kotlinx.android.synthetic.main.fragment_shop_admin.view.et_desc
|
|
|
+import kotlinx.android.synthetic.main.fragment_shop_admin.view.submitButton
|
|
|
+import kotlinx.android.synthetic.main.fragment_shop_admin.view.uploadButton
|
|
|
+import kotlinx.android.synthetic.main.fragment_shop_admin.view.et_name
|
|
|
+import kotlinx.android.synthetic.main.fragment_shop_admin.view.et_price
|
|
|
+import kotlinx.android.synthetic.main.fragment_shop_admin.view.uploadedImageView
|
|
|
|
|
|
-// TODO: Rename parameter arguments, choose names that match
|
|
|
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
|
|
-private const val ARG_PARAM1 = "param1"
|
|
|
-private const val ARG_PARAM2 = "param2"
|
|
|
-
|
|
|
-/**
|
|
|
- * A simple [Fragment] subclass.
|
|
|
- * Use the [ShopAdminFragment.newInstance] factory method to
|
|
|
- * create an instance of this fragment.
|
|
|
- */
|
|
|
class ShopAdminFragment : Fragment() {
|
|
|
- // TODO: Rename and change types of parameters
|
|
|
- private var param1: String? = null
|
|
|
- private var param2: String? = null
|
|
|
+ private var _root: View? = null
|
|
|
+ private val binding get() = _root!!
|
|
|
+ private lateinit var shopViewModel: ShopViewModel
|
|
|
+ private var imageUri: Uri? = null
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
|
- arguments?.let {
|
|
|
- param1 = it.getString(ARG_PARAM1)
|
|
|
- param2 = it.getString(ARG_PARAM2)
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
- override fun onCreateView(
|
|
|
- inflater: LayoutInflater, container: ViewGroup?,
|
|
|
- savedInstanceState: Bundle?
|
|
|
- ): View? {
|
|
|
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
|
|
+ _root = inflater.inflate(R.layout.fragment_shop_admin, container, false)
|
|
|
+
|
|
|
+ setDefault()
|
|
|
+
|
|
|
+ shopViewModel = ShopViewModel(App.injectApiService(), App.injectPrefHelper())
|
|
|
+ shopViewModel.state.observe(viewLifecycleOwner, androidx.lifecycle.Observer {
|
|
|
+ render(it)
|
|
|
+ })
|
|
|
+ binding.uploadButton.setOnClickListener {
|
|
|
+ openImagePicker()
|
|
|
+ }
|
|
|
+
|
|
|
+ binding.submitButton.setOnClickListener {
|
|
|
+ val createProductRequest = CreateProductRequest(
|
|
|
+ binding.et_name.text.toString(),
|
|
|
+ binding.et_desc.text.toString(),
|
|
|
+ binding.et_price.text.toString(),
|
|
|
+ imageUri.toString()
|
|
|
+ )
|
|
|
+
|
|
|
+ shopViewModel.createProduct(createProductRequest.name, createProductRequest.desc, createProductRequest.price, createProductRequest.upload)
|
|
|
+ }
|
|
|
+
|
|
|
// Inflate the layout for this fragment
|
|
|
- return inflater.inflate(R.layout.fragment_shop_admin, container, false)
|
|
|
+ return binding
|
|
|
}
|
|
|
|
|
|
- companion object {
|
|
|
- /**
|
|
|
- * Use this factory method to create a new instance of
|
|
|
- * this fragment using the provided parameters.
|
|
|
- *
|
|
|
- * @param param1 Parameter 1.
|
|
|
- * @param param2 Parameter 2.
|
|
|
- * @return A new instance of fragment ShopAdminFragment.
|
|
|
- */
|
|
|
- // TODO: Rename and change types and number of parameters
|
|
|
- @JvmStatic
|
|
|
- fun newInstance(param1: String, param2: String) =
|
|
|
- ShopAdminFragment().apply {
|
|
|
- arguments = Bundle().apply {
|
|
|
- putString(ARG_PARAM1, param1)
|
|
|
- putString(ARG_PARAM2, param2)
|
|
|
+ private fun setDefault(){
|
|
|
+ binding.et_name.setText("Bubu")
|
|
|
+ binding.et_price.setText("10")
|
|
|
+ binding.et_desc.setText("Bubu and Dudu")
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun render(state: ShopViewModel.ProductViewState) {
|
|
|
+ if (state.isLoginSuccess) {
|
|
|
+ Toast.makeText(context, "Create Success...", Toast.LENGTH_LONG).show()
|
|
|
+
|
|
|
+ binding.et_name.setText("")
|
|
|
+ binding.et_price.setText("")
|
|
|
+ binding.et_desc.setText("")
|
|
|
+ binding.uploadedImageView.setImageDrawable(null)
|
|
|
+ }
|
|
|
+ // Other state handling...
|
|
|
+ }
|
|
|
+
|
|
|
+ private val imagePicker: ActivityResultLauncher<Intent> =
|
|
|
+ registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
|
|
|
+ if (result.resultCode == Activity.RESULT_OK) {
|
|
|
+ val data: Intent? = result.data
|
|
|
+ if (data != null) {
|
|
|
+ imageUri = data.data // The URI of the selected image
|
|
|
+ if (imageUri != null) {
|
|
|
+ // Load and display the selected image in the ImageView
|
|
|
+ binding.uploadedImageView.setImageURI(imageUri)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun openImagePicker() {
|
|
|
+ val intent = Intent(Intent.ACTION_GET_CONTENT)
|
|
|
+ intent.type = "image/*"
|
|
|
+ imagePicker.launch(intent)
|
|
|
}
|
|
|
}
|