diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml index a3e72ab4..fdf13747 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -87,7 +87,7 @@ android:layout_width="0dp" android:layout_height="56dp" android:layout_weight="1" - android:src="@drawable/logo_711_50" + android:src="@drawable/logo_711_red" app:civ_border_color="@color/googleRed" app:civ_circle_background_color="@color/googleRed" /> diff --git a/stores_data/711.json b/app/src/mock/assets/stores_data/711.json similarity index 100% rename from stores_data/711.json rename to app/src/mock/assets/stores_data/711.json diff --git a/stores_data/bsmart.json b/app/src/mock/assets/stores_data/bsmart.json similarity index 100% rename from stores_data/bsmart.json rename to app/src/mock/assets/stores_data/bsmart.json diff --git a/stores_data/circle_k.json b/app/src/mock/assets/stores_data/circle_k.json similarity index 100% rename from stores_data/circle_k.json rename to app/src/mock/assets/stores_data/circle_k.json diff --git a/stores_data/familymart.json b/app/src/mock/assets/stores_data/familymart.json similarity index 100% rename from stores_data/familymart.json rename to app/src/mock/assets/stores_data/familymart.json diff --git a/stores_data/ministop.json b/app/src/mock/assets/stores_data/ministop.json similarity index 100% rename from stores_data/ministop.json rename to app/src/mock/assets/stores_data/ministop.json diff --git a/stores_data/shopngo.json b/app/src/mock/assets/stores_data/shopngo.json similarity index 100% rename from stores_data/shopngo.json rename to app/src/mock/assets/stores_data/shopngo.json diff --git a/app/src/mock/java/com/iceteaviet/fastfoodfinder/data/remote/store/FakeFirebaseStoreApiHelper.kt b/app/src/mock/java/com/iceteaviet/fastfoodfinder/data/remote/store/FakeFirebaseStoreApiHelper.kt index 5d6a4ae1..564a00e9 100644 --- a/app/src/mock/java/com/iceteaviet/fastfoodfinder/data/remote/store/FakeFirebaseStoreApiHelper.kt +++ b/app/src/mock/java/com/iceteaviet/fastfoodfinder/data/remote/store/FakeFirebaseStoreApiHelper.kt @@ -1,33 +1,70 @@ package com.iceteaviet.fastfoodfinder.data.remote.store +import android.content.Context +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.iceteaviet.fastfoodfinder.data.remote.store.model.Comment import com.iceteaviet.fastfoodfinder.data.remote.store.model.Store -import com.iceteaviet.fastfoodfinder.utils.exception.NotFoundException -import java.util.* +import com.iceteaviet.fastfoodfinder.utils.StoreType +import java.util.TreeMap import kotlin.collections.ArrayList -class FakeFirebaseStoreApiHelper : StoreApiHelper { +class FakeFirebaseStoreApiHelper(private val context: Context) : StoreApiHelper { private var STORE_SERVICE_DATA: MutableList = ArrayList() private var STORE_COMMENT_SERVICE_DATA: MutableMap> = TreeMap() override suspend fun getAllStores(): List { if (STORE_SERVICE_DATA.isEmpty()) { - STORE_SERVICE_DATA = com.iceteaviet.fastfoodfinder.utils.getFakeStoreList().toMutableList() + STORE_SERVICE_DATA = loadStoresFromAssets().toMutableList() } return STORE_SERVICE_DATA } override suspend fun getComments(storeId: String): List { - return STORE_COMMENT_SERVICE_DATA.get(storeId) ?: ArrayList() + return STORE_COMMENT_SERVICE_DATA[storeId] ?: ArrayList() } override fun insertOrUpdateComment(storeId: String, comment: Comment) { - var comments = STORE_COMMENT_SERVICE_DATA.get(storeId) - if (comments == null) { - comments = ArrayList() - } + val comments = STORE_COMMENT_SERVICE_DATA.getOrPut(storeId) { ArrayList() } comments.add(comment) - STORE_COMMENT_SERVICE_DATA.put(storeId, comments) + } + + private fun loadStoresFromAssets(): List { + val gson = Gson() + val stores = ArrayList() + val fileToType = mapOf( + "circle_k.json" to StoreType.TYPE_CIRCLE_K, + "ministop.json" to StoreType.TYPE_MINI_STOP, + "familymart.json" to StoreType.TYPE_FAMILY_MART, + "bsmart.json" to StoreType.TYPE_BSMART, + "shopngo.json" to StoreType.TYPE_SHOP_N_GO, + "711.json" to StoreType.TYPE_7_ELEVEN, + ) + + var id = 1 + for ((fileName, type) in fileToType) { + try { + val json = context.assets.open("stores_data/$fileName") + .bufferedReader().use { it.readText() } + val root = gson.fromJson(json, object : TypeToken>>>() {}) as Map + @Suppress("UNCHECKED_CAST") + val markers = root["markers_add"] as? List> ?: continue + for (marker in markers) { + stores.add(Store( + id++, + marker["title"].orEmpty(), + marker["address"].orEmpty(), + marker["lat"] ?: "0", + marker["lng"] ?: "0", + marker["tel"].orEmpty(), + type + )) + } + } catch (e: Exception) { + throw RuntimeException("Failed to load stores from stores_data/$fileName", e) + } + } + return stores } } diff --git a/app/src/mock/java/com/iceteaviet/fastfoodfinder/di/RepositoryModule.kt b/app/src/mock/java/com/iceteaviet/fastfoodfinder/di/RepositoryModule.kt index 12f0ace2..78ee0856 100644 --- a/app/src/mock/java/com/iceteaviet/fastfoodfinder/di/RepositoryModule.kt +++ b/app/src/mock/java/com/iceteaviet/fastfoodfinder/di/RepositoryModule.kt @@ -31,8 +31,8 @@ object RepositoryModule { @Provides @Singleton - fun provideStoreRepository(): StoreRepository { - val remote = FakeFirebaseStoreApiHelper() + fun provideStoreRepository(@ApplicationContext context: Context): StoreRepository { + val remote = FakeFirebaseStoreApiHelper(context) val local = FakeStoreDAO() return AppStoreRepository(remote, local) }