Skip to content

Commit c152634

Browse files
authored
release: 0.0.7(7) 버전 배포 (#39)
release: 0.0.7(7) 버전 배포
2 parents 73b4470 + 00c40ad commit c152634

File tree

15 files changed

+302
-162
lines changed

15 files changed

+302
-162
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@
1515
.cxx
1616
local.properties
1717
/app/google-services.json
18+
/keystore

app/build.gradle

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,14 @@ plugins {
33
id 'org.jetbrains.kotlin.android'
44
id 'com.google.gms.google-services'
55
id 'com.google.firebase.crashlytics'
6+
id 'kotlin-kapt'
7+
id 'com.google.dagger.hilt.android'
68
}
79

10+
def keystorePropertiesFile = rootProject.file("keystore/keystore.properties")
11+
def keystoreProperties = new Properties()
12+
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
13+
814
def localProperties = new Properties()
915
localProperties.load(new FileInputStream(rootProject.file("local.properties")))
1016

@@ -16,12 +22,21 @@ android {
1622
applicationId "com.woozoo.menumonya"
1723
minSdk 24
1824
targetSdk 33
19-
versionCode 6
20-
versionName "0.0.6"
25+
versionCode 7
26+
versionName "0.0.7"
2127

2228
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2329
}
2430

31+
signingConfigs {
32+
release {
33+
keyAlias keystoreProperties['appKeyAlias']
34+
keyPassword keystoreProperties['keyPassword']
35+
storeFile rootProject.file(keystoreProperties['storeFile'])
36+
storePassword keystoreProperties['storePassword']
37+
}
38+
}
39+
2540
buildTypes {
2641
debug {
2742
applicationIdSuffix ".debug"
@@ -33,6 +48,7 @@ android {
3348
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
3449
resValue "string", "NAVER_CLIENT_ID", localProperties['NAVER_CLIENT_ID']
3550
manifestPlaceholders = [app_name: "@string/app_name"]
51+
signingConfig signingConfigs.release
3652
}
3753
}
3854
compileOptions {
@@ -86,4 +102,13 @@ dependencies {
86102

87103
// Lottie
88104
implementation 'com.airbnb.android:lottie:6.0.0'
105+
106+
// Hilt
107+
implementation "com.google.dagger:hilt-android:2.44"
108+
kapt "com.google.dagger:hilt-compiler:2.44"
109+
}
110+
111+
// Allow references to generated code
112+
kapt {
113+
correctErrorTypes true
89114
}

app/src/main/java/com/woozoo/menumonya/Application.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ package com.woozoo.menumonya
22

33
import android.app.Application
44
import android.content.Context
5-
import com.woozoo.menumonya.repository.RemoteConfigRepository.initializeRemoteConfig
5+
import com.woozoo.menumonya.repository.RemoteConfigRepositoryImpl
6+
import dagger.hilt.android.HiltAndroidApp
7+
import javax.inject.Inject
68

9+
@HiltAndroidApp
710
class Application: Application() {
11+
@Inject lateinit var remoteConfigRepository: RemoteConfigRepositoryImpl
812

913
init {
1014
instance = this
@@ -21,6 +25,6 @@ class Application: Application() {
2125
override fun onCreate() {
2226
super.onCreate()
2327

24-
initializeRemoteConfig()
28+
remoteConfigRepository.initializeRemoteConfig()
2529
}
2630
}

app/src/main/java/com/woozoo/menumonya/MainActivity.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,18 @@ import androidx.viewpager2.widget.ViewPager2
1818
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
1919
import com.woozoo.menumonya.MainViewModel.Event
2020
import com.woozoo.menumonya.databinding.ActivityMainBinding
21+
import com.woozoo.menumonya.repository.RemoteConfigRepository
22+
import com.woozoo.menumonya.util.AnalyticsUtils
2123
import com.woozoo.menumonya.util.PermissionUtils.Companion.ACCESS_FINE_LOCATION_REQUEST_CODE
2224
import com.woozoo.menumonya.util.PermissionUtils.Companion.requestLocationPermission
25+
import dagger.hilt.android.AndroidEntryPoint
26+
import javax.inject.Inject
2327

28+
@AndroidEntryPoint
2429
class MainActivity : AppCompatActivity(), View.OnClickListener {
30+
@Inject lateinit var remoteConfigRepository: RemoteConfigRepository
31+
@Inject lateinit var analyticsUtils: AnalyticsUtils
32+
2533
private val GPS_ENABLE_REQUEST_CODE = 2000
2634

2735
private val viewModel: MainViewModel by viewModels()
@@ -101,7 +109,8 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
101109
}
102110
is Event.ShowRestaurantView -> {
103111
if (viewPager.adapter == null) {
104-
viewPager.adapter = RestaurantAdapter(event.data, this)
112+
viewPager.adapter =
113+
RestaurantAdapter(event.data, this, remoteConfigRepository, analyticsUtils)
105114
if (event.markerIndex != -1) {
106115
viewPager.currentItem = event.markerIndex
107116
} else { }

app/src/main/java/com/woozoo/menumonya/MainViewModel.kt

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,30 @@ import com.woozoo.menumonya.Constants.Companion.LATLNG_YS
1919
import com.woozoo.menumonya.Constants.Companion.MAP_DEFAULT_ZOOM
2020
import com.woozoo.menumonya.Constants.Companion.MAP_MIN_ZOOM
2121
import com.woozoo.menumonya.model.Restaurant
22-
import com.woozoo.menumonya.repository.FireStoreRepository.getRestaurantInLocation
23-
import com.woozoo.menumonya.repository.RemoteConfigRepository.getFeedbackUrlConfig
24-
import com.woozoo.menumonya.repository.RemoteConfigRepository.getLatestAppVersionConfig
22+
import com.woozoo.menumonya.repository.FireStoreRepository
23+
import com.woozoo.menumonya.repository.RemoteConfigRepository
24+
import com.woozoo.menumonya.util.AnalyticsUtils
25+
import com.woozoo.menumonya.util.AnalyticsUtils.Companion.CONTENT_TYPE_LOCATION
26+
import com.woozoo.menumonya.util.AnalyticsUtils.Companion.CONTENT_TYPE_MARKER
27+
import com.woozoo.menumonya.util.AnalyticsUtils.Companion.CONTENT_TYPE_VIEW_PAGER
2528
import com.woozoo.menumonya.util.LocationUtils.Companion.requestLocationUpdateOnce
2629
import com.woozoo.menumonya.util.PermissionUtils.Companion.isGpsPermissionAllowed
2730
import com.woozoo.menumonya.util.PermissionUtils.Companion.isLocationPermissionAllowed
31+
import dagger.hilt.android.lifecycle.HiltViewModel
2832
import kotlinx.coroutines.flow.MutableSharedFlow
2933
import kotlinx.coroutines.flow.asSharedFlow
3034
import kotlinx.coroutines.launch
3135
import java.lang.Double.parseDouble
36+
import javax.inject.Inject
37+
38+
@HiltViewModel
39+
class MainViewModel @Inject constructor(
40+
application: Application,
41+
private val fireStoreRepository: FireStoreRepository,
42+
private val remoteConfigRepository: RemoteConfigRepository,
43+
private val analyticsUtils: AnalyticsUtils
44+
): AndroidViewModel(Application()) {
3245

33-
class MainViewModel(application: Application): AndroidViewModel(Application()) {
3446
private val LOCATION_PERMISSION_REQUEST_CODE = 1000
3547

3648
private val _eventFlow = MutableSharedFlow<Event>()
@@ -99,6 +111,8 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
99111

100112
naverMap.setContentPadding(0, 0, 0, context().resources.getDimensionPixelOffset(R.dimen.restaurant_item_height))
101113
naverMap.moveCamera(CameraUpdate.scrollTo(coord).animate(CameraAnimation.None))
114+
115+
analyticsUtils.saveContentSelectionLog(CONTENT_TYPE_VIEW_PAGER, mRestaurantInfoArray[markerIndex].name)
102116
}
103117
}
104118

@@ -131,9 +145,10 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
131145
"역삼" -> moveCameraCoord(LATLNG_YS.latitude, LATLNG_YS.longitude)
132146
}
133147

134-
mRestaurantInfoArray = getRestaurantInLocation(location)
135-
148+
mRestaurantInfoArray = fireStoreRepository.getRestaurantInLocation(location)
136149
setMarkers(mRestaurantInfoArray)
150+
151+
analyticsUtils.saveContentSelectionLog(CONTENT_TYPE_LOCATION, location)
137152
}
138153
}
139154

@@ -158,6 +173,7 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
158173
icon = OverlayImage.fromResource(R.drawable.restaurant_marker)
159174
setOnClickListener {
160175
onMarkerClicked(index, selectedLocation)
176+
analyticsUtils.saveContentSelectionLog(CONTENT_TYPE_MARKER, restaurant.name)
161177
true
162178
}
163179
}
@@ -203,7 +219,7 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
203219
}
204220

205221
fun checkLatestAppVersion() {
206-
val latestAppVersion = getLatestAppVersionConfig()
222+
val latestAppVersion = remoteConfigRepository.getLatestAppVersionConfig()
207223
val currentAppVersion = BuildConfig.VERSION_CODE
208224

209225
if (latestAppVersion.toInt() > currentAppVersion) {
@@ -212,7 +228,7 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
212228
}
213229

214230
fun getFeedbackUrl(): String {
215-
return getFeedbackUrlConfig()
231+
return remoteConfigRepository.getFeedbackUrlConfig()
216232
}
217233

218234
private fun showToast(text: String) {

app/src/main/java/com/woozoo/menumonya/RestaurantAdapter.kt

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,33 @@ import com.woozoo.menumonya.Constants.Companion.GLIDE_IMAGE_SIZE_WIDTH
1414
import com.woozoo.menumonya.databinding.ItemRestaurantBinding
1515
import com.woozoo.menumonya.model.Restaurant
1616
import com.woozoo.menumonya.repository.RemoteConfigRepository
17+
import com.woozoo.menumonya.util.AnalyticsUtils
18+
import com.woozoo.menumonya.util.AnalyticsUtils.Companion.CONTENT_TYPE_REPORT_BUTTON
19+
import com.woozoo.menumonya.util.DateUtils.Companion.getTodayDate
1720
import com.woozoo.menumonya.util.DateUtils.Companion.getTodayMenuDateText
1821

19-
class RestaurantAdapter(private val restaurantInfoArray: ArrayList<Restaurant>, private val context: Context) :
20-
21-
RecyclerView.Adapter<RestaurantAdapter.ItemViewHolder>() {
22+
class RestaurantAdapter(private val restaurantInfoArray: ArrayList<Restaurant>,
23+
private val context: Context,
24+
private val remoteConfigRepository: RemoteConfigRepository,
25+
private val analyticsUtils: AnalyticsUtils
26+
) : RecyclerView.Adapter<RestaurantAdapter.ItemViewHolder>() {
2227

2328
private lateinit var binding: ItemRestaurantBinding
2429

25-
class ItemViewHolder(val binding: ItemRestaurantBinding, private val context: Context): RecyclerView.ViewHolder(binding.root) {
30+
class ItemViewHolder(val binding: ItemRestaurantBinding,
31+
private val context: Context,
32+
private val remoteConfigRepository: RemoteConfigRepository,
33+
private val analyticsUtils: AnalyticsUtils
34+
): RecyclerView.ViewHolder(binding.root) {
35+
2636
fun bind(data: Restaurant) {
2737
binding.restaurantNameTv.text = data.name
2838
binding.restaurantPriceTv.text = data.price.cardPrice + ""
2939
binding.restaurantTimeTv.text = data.time.openTime + " ~ " + data.time.closeTime
3040
binding.restaurantPhoneNumberTv.text = data.phoneNumber
3141
binding.restaurantLocationDescriptionTv.text = data.location.description
3242

33-
if (data.todayMenu.main != "") {
43+
if (data.todayMenu.date == getTodayDate()) { // 오늘 메뉴인 경우에만 표시함.
3444
// (1) 메뉴 레이아웃 표시
3545
binding.menuReportLayout.visibility = View.GONE
3646
binding.restaurantMenuLayout.visibility = View.VISIBLE
@@ -57,7 +67,9 @@ class RestaurantAdapter(private val restaurantInfoArray: ArrayList<Restaurant>,
5767
binding.restaurantMenuLayout.visibility = View.GONE
5868
binding.restaurantMenuMoreTv.visibility = View.GONE
5969
binding.menuReportBtn.setOnClickListener {
60-
val menuReportUrl = RemoteConfigRepository.getReportMenuUrlConfig()
70+
analyticsUtils.saveContentSelectionLog(CONTENT_TYPE_REPORT_BUTTON, data.name)
71+
72+
val menuReportUrl = remoteConfigRepository.getReportMenuUrlConfig()
6173
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(menuReportUrl))
6274
context.startActivity(intent)
6375
}
@@ -77,7 +89,7 @@ class RestaurantAdapter(private val restaurantInfoArray: ArrayList<Restaurant>,
7789
viewType: Int
7890
): ItemViewHolder {
7991
binding = ItemRestaurantBinding.inflate(LayoutInflater.from(parent.context), parent, false)
80-
return ItemViewHolder(binding, context)
92+
return ItemViewHolder(binding, context, remoteConfigRepository, analyticsUtils)
8193
}
8294

8395
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.woozoo.menumonya.di
2+
3+
import com.google.firebase.firestore.FirebaseFirestore
4+
import com.google.firebase.firestore.ktx.firestore
5+
import com.google.firebase.ktx.Firebase
6+
import com.google.firebase.remoteconfig.FirebaseRemoteConfig
7+
import dagger.Module
8+
import dagger.Provides
9+
import dagger.hilt.InstallIn
10+
import dagger.hilt.components.SingletonComponent
11+
import javax.inject.Singleton
12+
13+
@Module
14+
@InstallIn(SingletonComponent::class)
15+
object LibraryModule {
16+
17+
@Singleton
18+
@Provides
19+
fun provideFirebaseRemoteConfig(): FirebaseRemoteConfig {
20+
return FirebaseRemoteConfig.getInstance()
21+
}
22+
23+
@Singleton
24+
@Provides
25+
fun provideFirebaseFireStoreDb(): FirebaseFirestore {
26+
return Firebase.firestore
27+
}
28+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.woozoo.menumonya.di
2+
3+
import com.woozoo.menumonya.repository.FireStoreRepository
4+
import com.woozoo.menumonya.repository.FireStoreRepositoryImpl
5+
import com.woozoo.menumonya.repository.RemoteConfigRepository
6+
import com.woozoo.menumonya.repository.RemoteConfigRepositoryImpl
7+
import dagger.Binds
8+
import dagger.Module
9+
import dagger.hilt.InstallIn
10+
import dagger.hilt.components.SingletonComponent
11+
import javax.inject.Singleton
12+
13+
@Module
14+
@InstallIn(SingletonComponent::class)
15+
abstract class RepositoryModule {
16+
17+
@Singleton
18+
@Binds
19+
abstract fun bindFireStoreRepository(impl: FireStoreRepositoryImpl): FireStoreRepository
20+
21+
@Singleton
22+
@Binds
23+
abstract fun bindRemoteConfigRepository(impl: RemoteConfigRepositoryImpl): RemoteConfigRepository
24+
}

app/src/main/java/com/woozoo/menumonya/model/Food.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.woozoo.menumonya.model
22

33
data class Food(
4+
val date: String = "",
45
val main: String = "",
56
val side: String = "",
67
val dessert: String = "",

0 commit comments

Comments
 (0)