From f539bfb9f0d306d4b0bcf9b88d2df0fdc227c2af Mon Sep 17 00:00:00 2001
From: Gracia Hotmauli <95269134+hotmauligracia@users.noreply.github.com>
Date: Mon, 23 Jun 2025 22:48:37 +0700
Subject: [PATCH] store under review
---
app/src/main/AndroidManifest.xml | 5 +-
.../ui/profile/ProfileFragment.kt | 56 +-
.../mystore}/RegisterStoreActivity.kt | 119 +-
.../profile/mystore/StoreOnReviewActivity.kt | 25 +
.../viewmodel}/RegisterStoreViewModel.kt | 8 +-
app/src/main/res/drawable/ic_under_review.png | Bin 0 -> 13703 bytes
.../res/layout/activity_register_store.xml | 1294 +++++++++++------
.../res/layout/activity_store_on_review.xml | 39 +
app/src/main/res/layout/header.xml | 5 +-
app/src/main/res/values/strings.xml | 1 +
10 files changed, 1016 insertions(+), 536 deletions(-)
rename app/src/main/java/com/alya/ecommerce_serang/ui/{auth => profile/mystore}/RegisterStoreActivity.kt (88%)
create mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/StoreOnReviewActivity.kt
rename app/src/main/java/com/alya/ecommerce_serang/{ui/auth => utils/viewmodel}/RegisterStoreViewModel.kt (96%)
create mode 100644 app/src/main/res/drawable/ic_under_review.png
create mode 100644 app/src/main/res/layout/activity_store_on_review.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ddaf412..54fdf3b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -29,6 +29,9 @@
android:theme="@style/Theme.Ecommerce_serang"
android:usesCleartextTraffic="true"
tools:targetApi="31">
+
@@ -51,7 +54,7 @@
android:name=".ui.product.storeDetail.StoreDetailActivity"
android:exported="false" />
+ store?.let {
+ when (store.storeStatus) {
+ "active" -> startActivity(Intent(requireContext(), MyStoreActivity::class.java))
+ else -> startActivity(Intent(requireContext(), StoreOnReviewActivity::class.java))
+ }
+ } ?: run {
+ Toast.makeText(requireContext(), "Gagal memuat data toko", Toast.LENGTH_SHORT).show()
+ }
+ }
+ } else startActivity(Intent(requireContext(), RegisterStoreActivity::class.java))
}
binding.btnDetailProfile.setOnClickListener{
@@ -96,15 +113,14 @@ class ProfileFragment : Fragment() {
startActivity(intent)
}
- binding.cardLogout.setOnClickListener({
+ binding.cardLogout.setOnClickListener{
logout()
+ }
- })
-
- binding.cardAddress.setOnClickListener({
+ binding.cardAddress.setOnClickListener{
val intent = Intent(requireContext(), AddressActivity::class.java)
startActivity(intent)
- })
+ }
}
private fun observeUserProfile() {
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterStoreActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/RegisterStoreActivity.kt
similarity index 88%
rename from app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterStoreActivity.kt
rename to app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/RegisterStoreActivity.kt
index 32e36b5..a383441 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterStoreActivity.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/RegisterStoreActivity.kt
@@ -1,7 +1,6 @@
-package com.alya.ecommerce_serang.ui.auth
+package com.alya.ecommerce_serang.ui.profile.mystore
import android.Manifest
-import android.app.Activity
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
@@ -26,6 +25,7 @@ import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
+import com.alya.ecommerce_serang.R
import com.alya.ecommerce_serang.data.api.response.auth.StoreTypesItem
import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig
import com.alya.ecommerce_serang.data.repository.Result
@@ -35,6 +35,9 @@ import com.alya.ecommerce_serang.ui.order.address.CityAdapter
import com.alya.ecommerce_serang.ui.order.address.ProvinceAdapter
import com.alya.ecommerce_serang.utils.BaseViewModelFactory
import com.alya.ecommerce_serang.utils.SessionManager
+import com.alya.ecommerce_serang.utils.viewmodel.RegisterStoreViewModel
+import androidx.core.graphics.drawable.toDrawable
+import androidx.core.widget.ImageViewCompat
class RegisterStoreActivity : AppCompatActivity() {
@@ -48,15 +51,13 @@ class RegisterStoreActivity : AppCompatActivity() {
private val PICK_KTP_REQUEST = 1002
private val PICK_NPWP_REQUEST = 1003
private val PICK_NIB_REQUEST = 1004
- private val PICK_PERSETUJUAN_REQUEST = 1005
- private val PICK_QRIS_REQUEST = 1006
// Location request code
private val LOCATION_PERMISSION_REQUEST = 2001
private val viewModel: RegisterStoreViewModel by viewModels {
BaseViewModelFactory {
- val apiService = ApiConfig.getApiService(sessionManager)
+ val apiService = ApiConfig.Companion.getApiService(sessionManager)
val orderRepository = UserRepository(apiService)
RegisterStoreViewModel(orderRepository)
}
@@ -84,6 +85,8 @@ class RegisterStoreActivity : AppCompatActivity() {
windowInsets
}
+ setupHeader()
+
provinceAdapter = ProvinceAdapter(this)
cityAdapter = CityAdapter(this)
Log.d(TAG, "onCreate: Adapters initialized")
@@ -114,6 +117,9 @@ class RegisterStoreActivity : AppCompatActivity() {
Log.d(TAG, "onCreate: Fetching provinces from API")
viewModel.getProvinces()
+ viewModel.provinceId.observe(this) { validateRequiredFields() }
+ viewModel.cityId.observe(this) { validateRequiredFields() }
+ viewModel.storeTypeId.observe(this) { validateRequiredFields() }
// Setup register button
binding.btnRegister.setOnClickListener {
@@ -130,6 +136,45 @@ class RegisterStoreActivity : AppCompatActivity() {
Log.d(TAG, "onCreate: RegisterStoreActivity setup completed")
}
+ private fun setupHeader() {
+ binding.header.main.background = ContextCompat.getColor(this, R.color.blue_500).toDrawable()
+ binding.header.headerTitle.visibility = View.GONE
+ binding.header.headerLeftIcon.setColorFilter(
+ ContextCompat.getColor(this, R.color.white),
+ android.graphics.PorterDuff.Mode.SRC_IN
+ )
+ binding.header.headerLeftIcon.setOnClickListener {
+ onBackPressedDispatcher.onBackPressed()
+ finish()
+ }
+ }
+
+ private fun validateRequiredFields() {
+ val isFormValid = !viewModel.storeName.value.isNullOrBlank() &&
+ !viewModel.street.value.isNullOrBlank() &&
+ (viewModel.postalCode.value ?: 0) > 0 &&
+ !viewModel.subdistrict.value.isNullOrBlank() &&
+ !viewModel.bankName.value.isNullOrBlank() &&
+ (viewModel.bankNumber.value ?: 0) > 0 &&
+ (viewModel.provinceId.value ?: 0) > 0 &&
+ (viewModel.cityId.value ?: 0) > 0 &&
+ (viewModel.storeTypeId.value ?: 0) > 0 &&
+ viewModel.ktpUri != null &&
+ viewModel.nibUri != null &&
+ viewModel.npwpUri != null &&
+ viewModel.selectedCouriers.isNotEmpty()
+
+ binding.btnRegister.isEnabled = isFormValid
+
+ if (isFormValid) {
+ binding.btnRegister.setBackgroundResource(R.drawable.bg_button_active)
+ binding.btnRegister.setTextColor(ContextCompat.getColor(this, R.color.white))
+ } else {
+ binding.btnRegister.setBackgroundResource(R.drawable.bg_button_disabled)
+ binding.btnRegister.setTextColor(ContextCompat.getColor(this, R.color.black_300))
+ }
+ }
+
private fun setupObservers() {
Log.d(TAG, "setupObservers: Setting up LiveData observers")
@@ -138,12 +183,12 @@ class RegisterStoreActivity : AppCompatActivity() {
when (state) {
is Result.Loading -> {
Log.d(TAG, "setupObservers: Loading provinces...")
- binding.provinceProgressBar?.visibility = View.VISIBLE
+ binding.provinceProgressBar.visibility = View.VISIBLE
binding.spinnerProvince.isEnabled = false
}
is Result.Success -> {
Log.d(TAG, "setupObservers: Provinces loaded successfully: ${state.data.size} provinces")
- binding.provinceProgressBar?.visibility = View.GONE
+ binding.provinceProgressBar.visibility = View.GONE
binding.spinnerProvince.isEnabled = true
// Update adapter with data
@@ -151,7 +196,7 @@ class RegisterStoreActivity : AppCompatActivity() {
}
is Result.Error -> {
Log.e(TAG, "setupObservers: Error loading provinces: ${state.exception.message}")
- binding.provinceProgressBar?.visibility = View.GONE
+ binding.provinceProgressBar.visibility = View.GONE
binding.spinnerProvince.isEnabled = true
}
}
@@ -162,12 +207,12 @@ class RegisterStoreActivity : AppCompatActivity() {
when (state) {
is Result.Loading -> {
Log.d(TAG, "setupObservers: Loading cities...")
- binding.cityProgressBar?.visibility = View.VISIBLE
+ binding.cityProgressBar.visibility = View.VISIBLE
binding.spinnerCity.isEnabled = false
}
is Result.Success -> {
Log.d(TAG, "setupObservers: Cities loaded successfully: ${state.data.size} cities")
- binding.cityProgressBar?.visibility = View.GONE
+ binding.cityProgressBar.visibility = View.GONE
binding.spinnerCity.isEnabled = true
// Update adapter with data
@@ -175,7 +220,7 @@ class RegisterStoreActivity : AppCompatActivity() {
}
is Result.Error -> {
Log.e(TAG, "setupObservers: Error loading cities: ${state.exception.message}")
- binding.cityProgressBar?.visibility = View.GONE
+ binding.cityProgressBar.visibility = View.GONE
binding.spinnerCity.isEnabled = true
}
}
@@ -214,11 +259,11 @@ class RegisterStoreActivity : AppCompatActivity() {
Log.d(TAG, "setupStoreTypesObserver: Loading store types...")
// Show loading indicator for store types spinner
binding.spinnerStoreType.isEnabled = false
- binding.storeTypeProgressBar?.visibility = View.VISIBLE
+ binding.storeTypeProgressBar.visibility = View.VISIBLE
} else {
Log.d(TAG, "setupStoreTypesObserver: Store types loading completed")
binding.spinnerStoreType.isEnabled = true
- binding.storeTypeProgressBar?.visibility = View.GONE
+ binding.storeTypeProgressBar.visibility = View.GONE
}
}
@@ -309,7 +354,7 @@ class RegisterStoreActivity : AppCompatActivity() {
}
// Hide progress bar after setup
- binding.storeTypeProgressBar?.visibility = View.GONE
+ binding.storeTypeProgressBar.visibility = View.GONE
Log.d(TAG, "setupStoreTypeSpinner: Store type spinner setup completed")
}
@@ -398,23 +443,11 @@ class RegisterStoreActivity : AppCompatActivity() {
}
// NPWP
- binding.containerNpwp?.setOnClickListener {
+ binding.containerNpwp.setOnClickListener {
Log.d(TAG, "NPWP container clicked, picking image")
pickImage(PICK_NPWP_REQUEST)
}
- // SPPIRT
- binding.containerSppirt.setOnClickListener {
- Log.d(TAG, "SPPIRT container clicked, picking document")
- pickDocument(PICK_PERSETUJUAN_REQUEST)
- }
-
- // Halal
- binding.containerHalal.setOnClickListener {
- Log.d(TAG, "Halal container clicked, picking document")
- pickDocument(PICK_QRIS_REQUEST)
- }
-
Log.d(TAG, "setupDocumentUploads: Document upload buttons setup completed")
}
@@ -442,16 +475,16 @@ class RegisterStoreActivity : AppCompatActivity() {
handleCourierSelection("jne", isChecked)
}
- binding.checkboxJnt.setOnCheckedChangeListener { _, isChecked ->
- Log.d(TAG, "JNT checkbox ${if (isChecked) "checked" else "unchecked"}")
- handleCourierSelection("tiki", isChecked)
- }
-
binding.checkboxPos.setOnCheckedChangeListener { _, isChecked ->
Log.d(TAG, "POS checkbox ${if (isChecked) "checked" else "unchecked"}")
handleCourierSelection("pos", isChecked)
}
+ binding.checkboxTiki.setOnCheckedChangeListener { _, isChecked ->
+ Log.d(TAG, "TIKI checkbox ${if (isChecked) "checked" else "unchecked"}")
+ handleCourierSelection("tiki", isChecked)
+ }
+
Log.d(TAG, "setupCourierSelection: Courier checkboxes setup completed")
}
@@ -465,6 +498,7 @@ class RegisterStoreActivity : AppCompatActivity() {
viewModel.selectedCouriers.remove(courier)
Log.d(TAG, "handleCourierSelection: Removed courier: $courier. Current couriers: ${viewModel.selectedCouriers}")
}
+ validateRequiredFields()
}
private fun setupMap() {
@@ -516,6 +550,7 @@ class RegisterStoreActivity : AppCompatActivity() {
override fun afterTextChanged(s: Editable?) {
viewModel.storeName.value = s.toString()
Log.d(TAG, "Store name updated: ${s.toString()}")
+ validateRequiredFields()
}
})
@@ -534,6 +569,7 @@ class RegisterStoreActivity : AppCompatActivity() {
override fun afterTextChanged(s: Editable?) {
viewModel.street.value = s.toString()
Log.d(TAG, "Street address updated: ${s.toString()}")
+ validateRequiredFields()
}
})
@@ -547,6 +583,7 @@ class RegisterStoreActivity : AppCompatActivity() {
} catch (e: NumberFormatException) {
// Handle invalid input
Log.e(TAG, "Invalid postal code input: ${s.toString()}, error: $e")
+ validateRequiredFields()
}
}
})
@@ -578,6 +615,7 @@ class RegisterStoreActivity : AppCompatActivity() {
viewModel.bankNumber.value = 0 // or 0
Log.d(TAG, "Bank number set to default: 0")
}
+ validateRequiredFields()
}
})
@@ -587,6 +625,7 @@ class RegisterStoreActivity : AppCompatActivity() {
override fun afterTextChanged(s: Editable?) {
viewModel.subdistrict.value = s.toString()
Log.d(TAG, "Subdistrict updated: ${s.toString()}")
+ validateRequiredFields()
}
})
@@ -596,6 +635,7 @@ class RegisterStoreActivity : AppCompatActivity() {
override fun afterTextChanged(s: Editable?) {
viewModel.bankName.value = s.toString()
Log.d(TAG, "Bank name updated: ${s.toString()}")
+ validateRequiredFields()
}
})
@@ -605,7 +645,7 @@ class RegisterStoreActivity : AppCompatActivity() {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
Log.d(TAG, "onActivityResult: Request code: $requestCode, Result code: $resultCode")
- if (resultCode == Activity.RESULT_OK && data != null) {
+ if (resultCode == RESULT_OK && data != null) {
val uri = data.data
Log.d(TAG, "onActivityResult: URI received: $uri")
when (requestCode) {
@@ -618,26 +658,19 @@ class RegisterStoreActivity : AppCompatActivity() {
Log.d(TAG, "KTP image selected")
viewModel.ktpUri = uri
updateImagePreview(uri, binding.imgKtp, binding.layoutUploadKtp)
+ validateRequiredFields()
}
PICK_NPWP_REQUEST -> {
Log.d(TAG, "NPWP document selected")
viewModel.npwpUri = uri
updateDocumentPreview(binding.layoutUploadNpwp)
+ validateRequiredFields()
}
PICK_NIB_REQUEST -> {
Log.d(TAG, "NIB document selected")
viewModel.nibUri = uri
updateDocumentPreview(binding.layoutUploadNib)
- }
- PICK_PERSETUJUAN_REQUEST -> {
- Log.d(TAG, "SPPIRT document selected")
- viewModel.persetujuanUri = uri
- updateDocumentPreview(binding.layoutUploadSppirt)
- }
- PICK_QRIS_REQUEST -> {
- Log.d(TAG, "Halal document selected")
- viewModel.qrisUri = uri
- updateDocumentPreview(binding.layoutUploadHalal)
+ validateRequiredFields()
}
else -> {
Log.w(TAG, "Unknown request code: $requestCode")
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/StoreOnReviewActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/StoreOnReviewActivity.kt
new file mode 100644
index 0000000..338e5a5
--- /dev/null
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/StoreOnReviewActivity.kt
@@ -0,0 +1,25 @@
+package com.alya.ecommerce_serang.ui.profile.mystore
+
+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
+import com.alya.ecommerce_serang.databinding.ActivityStoreOnReviewBinding
+
+class StoreOnReviewActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityStoreOnReviewBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityStoreOnReviewBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ binding.header.headerTitle.text = "Verifikasi Pengajuan Toko"
+ binding.header.headerLeftIcon.setOnClickListener {
+ onBackPressedDispatcher.onBackPressed()
+ finish()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterStoreViewModel.kt b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/RegisterStoreViewModel.kt
similarity index 96%
rename from app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterStoreViewModel.kt
rename to app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/RegisterStoreViewModel.kt
index b29fa41..ae9b8f4 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/auth/RegisterStoreViewModel.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/RegisterStoreViewModel.kt
@@ -1,4 +1,4 @@
-package com.alya.ecommerce_serang.ui.auth
+package com.alya.ecommerce_serang.utils.viewmodel
import android.content.Context
import android.net.Uri
@@ -21,8 +21,8 @@ class RegisterStoreViewModel(
) : ViewModel() {
// LiveData for UI state
- private val _registerState = MutableLiveData>()
- val registerState: LiveData> = _registerState
+ private val _registerState = MutableLiveData>()
+ val registerState: LiveData> = _registerState
private val _storeTypes = MutableLiveData>()
val storeTypes: LiveData> = _storeTypes
@@ -141,7 +141,7 @@ class RegisterStoreViewModel(
_registerState.value = result
} catch (e: Exception) {
- _registerState.value = com.alya.ecommerce_serang.data.repository.Result.Error(e)
+ _registerState.value = Result.Error(e)
}
}
}
diff --git a/app/src/main/res/drawable/ic_under_review.png b/app/src/main/res/drawable/ic_under_review.png
new file mode 100644
index 0000000000000000000000000000000000000000..973390baa2c1c88ab55f5c3bad29d4f256216876
GIT binary patch
literal 13703
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
+ tools:context=".ui.profile.mystore.RegisterStoreActivity">
+
+
+ android:textColor="@color/white"
+ style="@style/headline_large" />
+ android:text="@string/buka_toko_desc"
+ android:textColor="@color/white" />
@@ -46,510 +48,874 @@
android:orientation="vertical"
android:padding="16dp">
-
-
-
-
-
+ android:orientation="horizontal">
-
+
-
+
-
+
-
+
+ android:orientation="vertical"
+ android:layout_marginVertical="24dp">
-
+
-
+
-
+
+
+
+
+
+
+
+
+
-
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
-
+
+
-
+
+
+
-
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_marginBottom="24dp">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:text="17. Pilih Titik Lokasi Usaha"
+ style="@style/body_medium"
+ android:layout_marginEnd="4dp"/>
-
+ android:layout_weight="1"
+ android:text="*"
+ style="@style/body_medium"
+ android:textColor="@color/red_required"
+ android:layout_gravity="end"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:text="Daftar" />
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_store_on_review.xml b/app/src/main/res/layout/activity_store_on_review.xml
new file mode 100644
index 0000000..bcb2910
--- /dev/null
+++ b/app/src/main/res/layout/activity_store_on_review.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/header.xml b/app/src/main/res/layout/header.xml
index 57d2c45..73ec866 100644
--- a/app/src/main/res/layout/header.xml
+++ b/app/src/main/res/layout/header.xml
@@ -11,14 +11,15 @@
+ android:background="@null">
+ app:contentInsetStartWithNavigation="0dp"
+ android:background="@null">
Disconnected. Reconnecting...
Connection error: %1$s
User is typing...
+ Mohon untuk melengkapi formulir pendaftaran ini agar dapat mengakses fitur penjual pada aplikasi.
\ No newline at end of file