diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index df69c67..2a25f1f 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -23,7 +23,7 @@ android {
buildTypes {
release {
- buildConfigField("String", "BASE_URL", "\"http://192.168.1.4:3000/\"")
+ buildConfigField("String", "BASE_URL", "\"http://192.168.100.156:3000/\"")
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
@@ -31,7 +31,7 @@ android {
)
}
debug {
- buildConfigField("String", "BASE_URL", "\"http://192.168.1.4:3000/\"")
+ buildConfigField("String", "BASE_URL", "\"http://192.168.100.156:3000/\"")
}
}
compileOptions {
@@ -66,13 +66,14 @@ dependencies {
androidTestImplementation(libs.androidx.espresso.core)
//retrofit
- implementation(libs.retrofit)
- implementation(libs.converter.gson)
- implementation(libs.logging.interceptor)
+ implementation("com.squareup.retrofit2:retrofit:2.9.0")
+ implementation("com.squareup.retrofit2:converter-gson:2.9.0")
+ implementation("com.squareup.okhttp3:logging-interceptor:4.11.0")
- implementation(libs.glide)
- implementation(libs.androidx.paging.runtime)
- implementation(libs.androidx.swiperefreshlayout)
+ implementation("com.github.bumptech.glide:glide:4.16.0")
+ implementation("androidx.paging:paging-runtime:3.2.1")
+ implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
+ implementation("de.hdodenhof:circleimageview:3.1.0")
// implementation(libs.hilt.android)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c4e9461..286fe03 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -42,7 +42,7 @@
android:name=".ui.profile.mystore.profile.EditStoreProfileActivity"
android:exported="false" />
+ suspend fun getStore (): Response
}
\ No newline at end of file
diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/repository/MyStoreRepository.kt b/app/src/main/java/com/alya/ecommerce_serang/data/repository/MyStoreRepository.kt
new file mode 100644
index 0000000..003f772
--- /dev/null
+++ b/app/src/main/java/com/alya/ecommerce_serang/data/repository/MyStoreRepository.kt
@@ -0,0 +1,31 @@
+package com.alya.ecommerce_serang.data.repository
+
+import android.util.Log
+import com.alya.ecommerce_serang.data.api.dto.Store
+import com.alya.ecommerce_serang.data.api.response.StoreResponse
+import com.alya.ecommerce_serang.data.api.retrofit.ApiService
+import retrofit2.HttpException
+import java.io.IOException
+
+class MyStoreRepository(private val apiService: ApiService) {
+ suspend fun fetchMyStoreProfile(): Result {
+ return try {
+ val response = apiService.getStore()
+
+ if (response.isSuccessful) {
+ val storeResponse: StoreResponse? = response.body()
+ Result.Success(storeResponse?.store) // ✅ Return Success with Store data
+ } else {
+ val errorMessage = response.errorBody()?.string() ?: "Unknown API error"
+ Log.e("MyStoreRepository", "Error: $errorMessage")
+ Result.Error(HttpException(response)) // ✅ Wrap API error in Result.Error
+ }
+ } catch (e: IOException) {
+ Log.e("MyStoreRepository", "Network error: ${e.message}")
+ Result.Error(e) // ✅ Handle network-related errors
+ } catch (e: Exception) {
+ Log.e("MyStoreRepository", "Unexpected error: ${e.message}")
+ Result.Error(e) // ✅ Handle unexpected errors
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/product/ProductViewModel.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/product/ProductViewModel.kt
index 87bb380..e349bfa 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/product/ProductViewModel.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/product/ProductViewModel.kt
@@ -4,9 +4,9 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
+import com.alya.ecommerce_serang.data.api.dto.Store
import com.alya.ecommerce_serang.data.api.response.Product
import com.alya.ecommerce_serang.data.api.response.ReviewsItem
-import com.alya.ecommerce_serang.data.api.response.Store
import com.alya.ecommerce_serang.data.repository.ProductRepository
import kotlinx.coroutines.launch
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt
index 71329ba..893f568 100644
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/ProfileFragment.kt
@@ -15,7 +15,7 @@ import com.alya.ecommerce_serang.data.api.dto.UserProfile
import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig
import com.alya.ecommerce_serang.data.repository.UserRepository
import com.alya.ecommerce_serang.databinding.FragmentProfileBinding
-import com.alya.ecommerce_serang.ui.profile.mystore.TokoSayaActivity
+import com.alya.ecommerce_serang.ui.profile.mystore.MyStoreActivity
import com.alya.ecommerce_serang.utils.BaseViewModelFactory
import com.alya.ecommerce_serang.utils.SessionManager
import com.bumptech.glide.Glide
@@ -54,7 +54,7 @@ class ProfileFragment : Fragment() {
viewModel.loadUserProfile()
binding.cardBukaToko.setOnClickListener{
- val intentBuka = Intent(requireContext(), TokoSayaActivity::class.java)
+ val intentBuka = Intent(requireContext(), MyStoreActivity::class.java)
startActivity(intentBuka)
}
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
new file mode 100644
index 0000000..1eddad1
--- /dev/null
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt
@@ -0,0 +1,67 @@
+package com.alya.ecommerce_serang.ui.profile.mystore
+
+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.utils.BaseViewModelFactory
+import com.alya.ecommerce_serang.utils.SessionManager
+import com.bumptech.glide.Glide
+import kotlin.getValue
+
+class MyStoreActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityMyStoreBinding
+ 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 = ActivityMyStoreBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ sessionManager = SessionManager(this)
+ apiService = ApiConfig.getApiService(sessionManager)
+
+ enableEdgeToEdge()
+
+ viewModel.loadMyStore()
+
+ viewModel.myStoreProfile.observe(this){ user ->
+ user?.let { myStoreProfileOverview(it) }
+ }
+
+ viewModel.errorMessage.observe(this) { error ->
+ Toast.makeText(this, error, Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ private fun myStoreProfileOverview(store: Store){
+
+ 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)
+// }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreViewModel.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreViewModel.kt
new file mode 100644
index 0000000..faff88c
--- /dev/null
+++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreViewModel.kt
@@ -0,0 +1,28 @@
+package com.alya.ecommerce_serang.ui.profile.mystore
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import com.alya.ecommerce_serang.data.api.dto.Store
+import com.alya.ecommerce_serang.data.repository.MyStoreRepository
+import com.alya.ecommerce_serang.data.repository.Result
+import kotlinx.coroutines.launch
+
+class MyStoreViewModel(private val myStoreRepository: MyStoreRepository): ViewModel() {
+ private val _myStoreProfile = MutableLiveData()
+ val myStoreProfile: LiveData = _myStoreProfile
+
+ private val _errorMessage = MutableLiveData()
+ val errorMessage : LiveData = _errorMessage
+
+ fun loadMyStore(){
+ viewModelScope.launch {
+ when (val result = myStoreRepository.fetchMyStoreProfile()){
+ is Result.Success -> _myStoreProfile.postValue(result.data)
+ is Result.Error -> _errorMessage.postValue(result.exception.message ?: "Unknown Error")
+ is Result.Loading -> null
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/TokoSayaActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/TokoSayaActivity.kt
deleted file mode 100644
index 87f4748..0000000
--- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/TokoSayaActivity.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-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
-
-class TokoSayaActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- enableEdgeToEdge()
- setContentView(R.layout.activity_toko_saya)
- 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
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/layout-v28/activity_toko_saya.xml b/app/src/main/res/layout-v28/activity_toko_saya.xml
deleted file mode 100644
index 21b20a2..0000000
--- a/app/src/main/res/layout-v28/activity_toko_saya.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_toko_saya.xml b/app/src/main/res/layout/activity_my_store.xml
similarity index 99%
rename from app/src/main/res/layout/activity_toko_saya.xml
rename to app/src/main/res/layout/activity_my_store.xml
index 8312727..4d1dff9 100644
--- a/app/src/main/res/layout/activity_toko_saya.xml
+++ b/app/src/main/res/layout/activity_my_store.xml
@@ -6,7 +6,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- tools:context=".ui.profile.mystore.TokoSayaActivity">
+ tools:context=".ui.profile.mystore.MyStoreActivity">