From 7c7941d5b29d20e26fce1d8643dba0dc8a6195fa Mon Sep 17 00:00:00 2001
From: Gracia Hotmauli <95269134+hotmauligracia@users.noreply.github.com>
Date: Fri, 29 Aug 2025 18:26:12 +0700
Subject: [PATCH] fix register store and product
---
.../customer/product/ProductResponse.kt | 3 +
.../ui/profile/mystore/MyStoreActivity.kt | 1 -
.../profile/mystore/RegisterStoreActivity.kt | 25 +++
.../product/DetailStoreProductActivity.kt | 16 ++
.../address/DetailStoreAddressActivity.kt | 13 ++
.../alya/ecommerce_serang/utils/Functions.kt | 27 +++
.../layout/activity_detail_store_address.xml | 82 ++++++++-
.../layout/activity_detail_store_product.xml | 68 ++++++++
.../res/layout/activity_register_store.xml | 156 +++++++++++++++++-
.../fragment_change_stock_bottom_sheet.xml | 1 +
10 files changed, 375 insertions(+), 17 deletions(-)
diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/response/customer/product/ProductResponse.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/response/customer/product/ProductResponse.kt
index e6ad539..211657e 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/data/api/response/customer/product/ProductResponse.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/response/customer/product/ProductResponse.kt
@@ -62,6 +62,9 @@ data class Product(
@field:SerializedName("wholesale_min_item")
val wholesaleMinItem: Int? = null,
+ @field:SerializedName("status")
+ val status: String,
+
@field:SerializedName("min_order")
val minOrder: Int,
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt
index b9aa908..7f2a0e4 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt
@@ -51,7 +51,6 @@ class MyStoreActivity : AppCompatActivity() {
enableEdgeToEdge()
-
binding.headerMyStore.headerTitle.text = "Toko Saya"
binding.headerMyStore.headerLeftIcon.setOnClickListener {
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/RegisterStoreActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/RegisterStoreActivity.kt
index 48d502a..b769dab 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/RegisterStoreActivity.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/RegisterStoreActivity.kt
@@ -42,6 +42,7 @@ import com.alya.ecommerce_serang.utils.ImageUtils
import com.alya.ecommerce_serang.utils.PopUpDialog
import com.alya.ecommerce_serang.utils.RegisterStoreViewModelFactory
import com.alya.ecommerce_serang.utils.SessionManager
+import com.alya.ecommerce_serang.utils.applyLiveCounter
import com.alya.ecommerce_serang.utils.viewmodel.MyStoreViewModel
import com.alya.ecommerce_serang.utils.viewmodel.RegisterStoreViewModel
import okhttp3.MediaType.Companion.toMediaTypeOrNull
@@ -102,6 +103,30 @@ class RegisterStoreActivity : AppCompatActivity() {
binding = ActivityRegisterStoreBinding.inflate(layoutInflater)
setContentView(binding.root)
+ applyLiveCounter(
+ binding.etStoreName,
+ binding.tvCountName,
+ binding.tvCountNameMax
+ )
+
+ applyLiveCounter(
+ binding.etStoreDescription,
+ binding.tvCountDesc,
+ binding.tvCountDescMax
+ )
+
+ applyLiveCounter(
+ binding.etStreet,
+ binding.tvCountStreet,
+ binding.tvCountStreetMax
+ )
+
+ applyLiveCounter(
+ binding.etAddressDetail,
+ binding.tvCountAddressDetail,
+ binding.tvCountAddressDetailMax
+ )
+
sessionManager = SessionManager(this)
WindowCompat.setDecorFitsSystemWindows(window, false)
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/DetailStoreProductActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/DetailStoreProductActivity.kt
index 81b6a42..4eae847 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/DetailStoreProductActivity.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/DetailStoreProductActivity.kt
@@ -31,6 +31,7 @@ import com.alya.ecommerce_serang.utils.CompressionResult
import com.alya.ecommerce_serang.utils.FileUtils.compressFileToMax1MB
import com.alya.ecommerce_serang.utils.ImageUtils.compressImage
import com.alya.ecommerce_serang.utils.SessionManager
+import com.alya.ecommerce_serang.utils.applyLiveCounter
import com.alya.ecommerce_serang.utils.viewmodel.ProductViewModel
import com.bumptech.glide.Glide
import okhttp3.MediaType.Companion.toMediaTypeOrNull
@@ -116,6 +117,18 @@ class DetailStoreProductActivity : AppCompatActivity() {
binding = ActivityDetailStoreProductBinding.inflate(layoutInflater)
setContentView(binding.root)
+ applyLiveCounter(
+ binding.edtNamaProduk,
+ binding.tvCountName,
+ binding.tvCountNameMax
+ )
+
+ applyLiveCounter(
+ binding.edtDeskripsiProduk,
+ binding.tvCountDesc,
+ binding.tvCountDescMax
+ )
+
isEditing = intent.getBooleanExtra("is_editing", false)
productId = intent.getIntExtra("product_id", -1)
@@ -271,6 +284,9 @@ class DetailStoreProductActivity : AppCompatActivity() {
binding.switcherHalal.showNext()
}
+ binding.switchIsActive.isChecked = product.status == "active"
+ binding.switchIsActive.jumpDrawablesToCurrentState()
+
validateForm()
}
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/profile/address/DetailStoreAddressActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/profile/address/DetailStoreAddressActivity.kt
index 4a3b439..6d1fb83 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/profile/address/DetailStoreAddressActivity.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/profile/address/DetailStoreAddressActivity.kt
@@ -22,6 +22,7 @@ import com.alya.ecommerce_serang.data.repository.Result
import com.alya.ecommerce_serang.databinding.ActivityDetailStoreAddressBinding
import com.alya.ecommerce_serang.utils.BaseViewModelFactory
import com.alya.ecommerce_serang.utils.SessionManager
+import com.alya.ecommerce_serang.utils.applyLiveCounter
import com.alya.ecommerce_serang.utils.viewmodel.AddressViewModel
import com.google.android.material.snackbar.Snackbar
@@ -55,6 +56,18 @@ class DetailStoreAddressActivity : AppCompatActivity() {
binding = ActivityDetailStoreAddressBinding.inflate(layoutInflater)
setContentView(binding.root)
+ applyLiveCounter(
+ binding.edtStreet,
+ binding.tvCountStreet,
+ binding.tvCountStreetMax
+ )
+
+ applyLiveCounter(
+ binding.edtDetailAddress,
+ binding.tvCountDetail,
+ binding.tvCountDetailMax
+ )
+
sessionManager = SessionManager(this)
apiService = ApiConfig.getApiService(sessionManager)
diff --git a/app/src/main/java/com/alya/ecommerce_serang/utils/Functions.kt b/app/src/main/java/com/alya/ecommerce_serang/utils/Functions.kt
index 9e1ba9c..b8167a8 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/utils/Functions.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/utils/Functions.kt
@@ -1,8 +1,12 @@
package com.alya.ecommerce_serang.utils
import android.os.Build
+import android.text.InputFilter
import android.view.View
import android.view.WindowInsetsController
+import android.widget.EditText
+import android.widget.TextView
+import androidx.core.widget.doAfterTextChanged
import androidx.fragment.app.Fragment
fun Fragment.setLightStatusBar(){
@@ -19,4 +23,27 @@ fun Fragment.setLightStatusBar(){
}
}
+}
+
+public fun applyLiveCounter(
+ editText: EditText,
+ tvCount: TextView,
+ tvMax: TextView
+) {
+ val max = tvMax.text.toString().toIntOrNull() ?: Int.MAX_VALUE
+
+ // Replace any existing LengthFilter with the new max
+ val current = editText.filters?.toMutableList() ?: mutableListOf()
+ current.removeAll { it is InputFilter.LengthFilter }
+ current.add(InputFilter.LengthFilter(max))
+ editText.filters = current.toTypedArray()
+
+ // Set initial count (handles prefilled text / edit mode)
+ tvCount.text = (editText.text?.length ?: 0).toString()
+
+ // Update on change
+ editText.doAfterTextChanged {
+ val len = it?.length ?: 0
+ tvCount.text = len.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_detail_store_address.xml b/app/src/main/res/layout/activity_detail_store_address.xml
index 694beba..a48d616 100644
--- a/app/src/main/res/layout/activity_detail_store_address.xml
+++ b/app/src/main/res/layout/activity_detail_store_address.xml
@@ -205,7 +205,6 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -254,6 +289,7 @@
android:padding="8dp"
style="@style/body_small"
android:hint="Isi kode pos di sini"
+ android:inputType="number"
android:layout_marginTop="10dp"/>
@@ -275,15 +311,47 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_detail_store_product.xml b/app/src/main/res/layout/activity_detail_store_product.xml
index fcd6ad2..5d7051a 100644
--- a/app/src/main/res/layout/activity_detail_store_product.xml
+++ b/app/src/main/res/layout/activity_detail_store_product.xml
@@ -167,6 +167,40 @@
style="@style/body_small"
android:layout_marginTop="10dp"/>
+
+
+
+
+
+
+
+
+
+
@@ -271,6 +305,40 @@
android:gravity="top"
android:layout_marginTop="10dp"/>
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_register_store.xml b/app/src/main/res/layout/activity_register_store.xml
index 9634f7e..eaac783 100644
--- a/app/src/main/res/layout/activity_register_store.xml
+++ b/app/src/main/res/layout/activity_register_store.xml
@@ -138,6 +138,40 @@
style="@style/body_small"
android:layout_marginTop="10dp"/>
+
+
+
+
+
+
+
+
+
+
@@ -166,6 +200,40 @@
android:gravity="top"
android:layout_marginTop="10dp"/>
+
+
+
+
+
+
+
+
+
+
@@ -435,7 +503,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:layout_marginBottom="24dp">
+ android:layout_marginVertical="24dp">
+
+
+
+
+
+
+
+
+
+
@@ -532,15 +636,49 @@
+
+
+
+
+
+
+
+
+
+
@@ -626,7 +764,7 @@
@@ -668,7 +806,7 @@
@@ -887,7 +1025,7 @@
@@ -954,7 +1092,7 @@
@@ -1015,7 +1153,7 @@
diff --git a/app/src/main/res/layout/fragment_change_stock_bottom_sheet.xml b/app/src/main/res/layout/fragment_change_stock_bottom_sheet.xml
index 1de3cc8..95258ba 100644
--- a/app/src/main/res/layout/fragment_change_stock_bottom_sheet.xml
+++ b/app/src/main/res/layout/fragment_change_stock_bottom_sheet.xml
@@ -37,6 +37,7 @@
android:background="@null"
android:hint="Isi stok produk di sini"
android:inputType="number"
+ android:textAlignment="center"
android:padding="8dp"
style="@style/body_small" />