This commit is contained in:
Gracia
2025-04-01 01:38:02 +07:00
parent 6759e8d7e5
commit a21ec50454
17 changed files with 337 additions and 15 deletions

View File

@ -1,19 +1,25 @@
package com.alya.ecommerce_serang.ui.profile.mystore
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.viewModels
import com.alya.ecommerce_serang.data.api.dto.Store
import com.alya.ecommerce_serang.data.api.dto.UserProfile
import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig
import com.alya.ecommerce_serang.data.api.retrofit.ApiService
import com.alya.ecommerce_serang.data.repository.MyStoreRepository
import com.alya.ecommerce_serang.data.repository.UserRepository
import com.alya.ecommerce_serang.databinding.ActivityMyStoreBinding
import com.alya.ecommerce_serang.ui.profile.ProfileViewModel
import com.alya.ecommerce_serang.ui.chat.ChatFragment
import com.alya.ecommerce_serang.ui.profile.mystore.balance.BalanceActivity
import com.alya.ecommerce_serang.ui.profile.mystore.product.ProductActivity
import com.alya.ecommerce_serang.ui.profile.mystore.profile.DetailStoreProfileActivity
import com.alya.ecommerce_serang.ui.profile.mystore.review.ReviewFragment
import com.alya.ecommerce_serang.ui.profile.mystore.sells.all_sells.AllSellsFragment
import com.alya.ecommerce_serang.ui.profile.mystore.sells.order.OrderFragment
import com.alya.ecommerce_serang.ui.profile.mystore.sells.payment.PaymentFragment
import com.alya.ecommerce_serang.ui.profile.mystore.sells.shipment.ShipmentFragment
import com.alya.ecommerce_serang.utils.BaseViewModelFactory
import com.alya.ecommerce_serang.utils.SessionManager
import com.bumptech.glide.Glide
@ -51,6 +57,8 @@ class MyStoreActivity : AppCompatActivity() {
viewModel.errorMessage.observe(this) { error ->
Toast.makeText(this, error, Toast.LENGTH_SHORT).show()
}
setUpClickListeners()
}
private fun myStoreProfileOverview(store: Store){
@ -58,10 +66,66 @@ class MyStoreActivity : AppCompatActivity() {
binding.tvStoreName.setText(store.storeName.toString())
binding.tvStoreType.setText(store.storeType.toString())
// if (store.storeImage != null && user.image is String) {
// Glide.with(this)
// .load(user.image)
// .into(binding.profileImage)
// }
store.storeImage.let {
Glide.with(this)
.load(it)
.into(binding.ivProfile)
}
}
private fun setUpClickListeners() {
binding.btnEditProfile.setOnClickListener {
startActivity(Intent(this, DetailStoreProfileActivity::class.java))
}
binding.layoutBalance.setOnClickListener {
startActivity(Intent(this, BalanceActivity::class.java))
}
binding.tvHistory.setOnClickListener {
supportFragmentManager.beginTransaction()
.replace(android.R.id.content, AllSellsFragment())
.addToBackStack(null)
.commit()
}
binding.layoutPerluTagihan.setOnClickListener {
supportFragmentManager.beginTransaction()
.replace(android.R.id.content, OrderFragment())
.addToBackStack(null)
.commit()
}
binding.layoutPembayaran.setOnClickListener {
supportFragmentManager.beginTransaction()
.replace(android.R.id.content, PaymentFragment())
.addToBackStack(null)
.commit()
}
binding.layoutPerluDikirim.setOnClickListener {
supportFragmentManager.beginTransaction()
.replace(android.R.id.content, ShipmentFragment())
.addToBackStack(null)
.commit()
}
binding.layoutProductMenu.setOnClickListener {
startActivity(Intent(this, ProductActivity::class.java))
}
binding.layoutReview.setOnClickListener {
supportFragmentManager.beginTransaction()
.replace(android.R.id.content, ReviewFragment())
.addToBackStack(null)
.commit()
}
binding.layoutInbox.setOnClickListener {
supportFragmentManager.beginTransaction()
.replace(android.R.id.content, ChatFragment())
.addToBackStack(null)
.commit()
}
}
}

View File

@ -1,4 +1,4 @@
package com.alya.ecommerce_serang.ui.profile.mystore.profile
package com.alya.ecommerce_serang.ui.profile.mystore.product
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
@ -7,11 +7,11 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.alya.ecommerce_serang.R
class EditStoreProfileActivity : AppCompatActivity() {
class ProductActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_edit_store_profile)
setContentView(R.layout.activity_product)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)

View File

@ -0,0 +1,60 @@
package com.alya.ecommerce_serang.ui.profile.mystore.profile
import android.os.Bundle
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import com.alya.ecommerce_serang.data.api.dto.Store
import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig
import com.alya.ecommerce_serang.data.api.retrofit.ApiService
import com.alya.ecommerce_serang.data.repository.MyStoreRepository
import com.alya.ecommerce_serang.databinding.ActivityDetailStoreProfileBinding
import com.alya.ecommerce_serang.ui.profile.mystore.MyStoreViewModel
import com.alya.ecommerce_serang.utils.BaseViewModelFactory
import com.alya.ecommerce_serang.utils.SessionManager
import com.bumptech.glide.Glide
import kotlin.getValue
class DetailStoreProfileActivity : AppCompatActivity() {
private lateinit var binding: ActivityDetailStoreProfileBinding
private lateinit var apiService: ApiService
private lateinit var sessionManager: SessionManager
private val viewModel: MyStoreViewModel by viewModels {
BaseViewModelFactory {
val apiService = ApiConfig.getApiService(sessionManager)
val myStoreRepository = MyStoreRepository(apiService)
MyStoreViewModel(myStoreRepository)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityDetailStoreProfileBinding.inflate(layoutInflater)
setContentView(binding.root)
sessionManager = SessionManager(this)
apiService = ApiConfig.getApiService(sessionManager)
enableEdgeToEdge()
viewModel.loadMyStore()
viewModel.myStoreProfile.observe(this){ user ->
user?.let { updateStoreProfile(it) }
}
viewModel.errorMessage.observe(this) { error ->
Toast.makeText(this, error, Toast.LENGTH_SHORT).show()
}
}
private fun updateStoreProfile(store: Store){
binding.edtNamaToko.setText(store.storeName.toString())
binding.edtJenisToko.setText(store.storeType.toString())
binding.edtDeskripsiToko.setText(store.storeDescription.toString())
}
}

View File

@ -0,0 +1,21 @@
package com.alya.ecommerce_serang.ui.profile.mystore.profile.address
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.alya.ecommerce_serang.R
class StoreAddressActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_store_address)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
}

View File

@ -0,0 +1,21 @@
package com.alya.ecommerce_serang.ui.profile.mystore.profile.payment_info
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.alya.ecommerce_serang.R
class DetailPaymentInfoActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_detail_payment_info)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
}

View File

@ -0,0 +1,21 @@
package com.alya.ecommerce_serang.ui.profile.mystore.profile.payment_info
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.alya.ecommerce_serang.R
class PaymentInfoActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_payment_info)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
}

View File

@ -0,0 +1,21 @@
package com.alya.ecommerce_serang.ui.profile.mystore.profile.shipping_service
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.alya.ecommerce_serang.R
class ShippingServiceActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_shipping_service)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
}
}

View File

@ -0,0 +1,31 @@
package com.alya.ecommerce_serang.ui.profile.mystore.review
import androidx.fragment.app.viewModels
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.alya.ecommerce_serang.R
class ReviewFragment : Fragment() {
companion object {
fun newInstance() = ReviewFragment()
}
private val viewModel: ReviewViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// TODO: Use the ViewModel
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment_review, container, false)
}
}

View File

@ -0,0 +1,7 @@
package com.alya.ecommerce_serang.ui.profile.mystore.review
import androidx.lifecycle.ViewModel
class ReviewViewModel : ViewModel() {
// TODO: Implement the ViewModel
}