Skip to content

Commit 93e8e03

Browse files
authored
release: 0.0.5(5) 버전 배포 (#30)
release: 0.0.5(5) 버전 배포
2 parents 225fd88 + b1d8cf2 commit 93e8e03

File tree

14 files changed

+334
-223
lines changed

14 files changed

+334
-223
lines changed

app/build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ android {
1616
applicationId "com.woozoo.menumonya"
1717
minSdk 24
1818
targetSdk 33
19-
versionCode 4
20-
versionName "0.0.4"
19+
versionCode 5
20+
versionName "0.0.5"
2121

2222
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2323
}
@@ -83,4 +83,7 @@ dependencies {
8383

8484
// Glide
8585
implementation 'com.github.bumptech.glide:glide:4.15.1'
86+
87+
// Lottie
88+
implementation 'com.airbnb.android:lottie:6.0.0'
8689
}

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
4646
binding.locationYsBtn.setOnClickListener(this)
4747
binding.feedbackIv.setOnClickListener(this)
4848
binding.currentLocationBtn.setOnClickListener(this)
49+
binding.loadingView.setOnClickListener { } // 로딩 화면 아래의 뷰에 대한 터치를 막기 위함
4950

5051
// 좌우로 item이 보이도록 설정
5152
viewPager.apply {
@@ -94,7 +95,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
9495
if (viewPager.adapter != null) {
9596
viewPager.currentItem = event.markerIndex
9697
} else {
97-
viewModel.showLocationViewPager(event.location, event.markerIndex)
98+
viewModel.showLocationViewPager(event.markerIndex)
9899
}
99100
}
100101
is Event.ShowRestaurantView -> {
@@ -131,6 +132,13 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
131132
binding.currentLocationTv.setTextColor(resources.getColor(R.color.colorSecondary))
132133
binding.currentLocationIv.setColorFilter(resources.getColor(R.color.colorSecondary))
133134
}
135+
is Event.ShowLoading -> {
136+
if (event.visibility) {
137+
binding.loadingView.visibility = View.VISIBLE
138+
} else {
139+
binding.loadingView.visibility = View.GONE
140+
}
141+
}
134142
}
135143

136144
override fun onStart() {

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ 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
2222
import com.woozoo.menumonya.repository.FireStoreRepository.getRestaurantInLocation
23-
import com.woozoo.menumonya.repository.RemoteConfigRepository
2423
import com.woozoo.menumonya.repository.RemoteConfigRepository.getFeedbackUrlConfig
2524
import com.woozoo.menumonya.util.LocationUtils.Companion.requestLocationUpdateOnce
2625
import com.woozoo.menumonya.util.PermissionUtils.Companion.isGpsPermissionAllowed
@@ -116,7 +115,7 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
116115
* 하단의 식당 정보 가로 스크롤 뷰를 표시함.
117116
* - (중요) 지도에 마커를 표시하기 위한 식당 정보를 이미 fetch하였다는 전제 하에 작동함.
118117
*/
119-
fun showLocationViewPager(location: String, markerIndex: Int = -1) {
118+
fun showLocationViewPager(markerIndex: Int = -1) {
120119
if (mRestaurantInfoArray.size > 0) {
121120
showRestaurantView(mRestaurantInfoArray, markerIndex)
122121
}
@@ -185,6 +184,7 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
185184
if (!isLocationPermissionAllowed()) {
186185
requestLocationPermission()
187186
} else {
187+
showLoading(true)
188188
requestLocationUpdateOnce(
189189
locationManager,
190190
LocationListener { location ->
@@ -195,6 +195,7 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
195195
locationTrackingMode = LocationTrackingMode.Follow
196196
}
197197
moveToCurrentLocation()
198+
showLoading(false)
198199
})
199200
}
200201
}
@@ -227,6 +228,10 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
227228
event(Event.MoveToCurrentLocation(""))
228229
}
229230

231+
private fun showLoading(visibility: Boolean) {
232+
event(Event.ShowLoading(visibility))
233+
}
234+
230235
sealed class Event {
231236
/**
232237
* MainActivity에 전달할 이벤트를 이곳에 정
@@ -239,5 +244,6 @@ class MainViewModel(application: Application): AndroidViewModel(Application()) {
239244
data class RequestLocationPermission(val data: String): Event()
240245
data class ShowGpsPermissionAlert(val data: String): Event()
241246
data class MoveToCurrentLocation(val data: String): Event()
247+
data class ShowLoading(val visibility: Boolean): Event()
242248
}
243249
}

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.woozoo.menumonya
22

33
import android.content.Context
4+
import android.content.Intent
5+
import android.net.Uri
46
import android.view.LayoutInflater
57
import android.view.View
68
import android.view.ViewGroup
@@ -11,6 +13,7 @@ import com.woozoo.menumonya.Constants.Companion.GLIDE_IMAGE_SIZE_HEIGHT
1113
import com.woozoo.menumonya.Constants.Companion.GLIDE_IMAGE_SIZE_WIDTH
1214
import com.woozoo.menumonya.databinding.ItemRestaurantBinding
1315
import com.woozoo.menumonya.model.Restaurant
16+
import com.woozoo.menumonya.repository.RemoteConfigRepository
1417

1518
class RestaurantAdapter(private val restaurantInfoArray: ArrayList<Restaurant>, private val context: Context) :
1619

@@ -27,17 +30,28 @@ class RestaurantAdapter(private val restaurantInfoArray: ArrayList<Restaurant>,
2730
binding.restaurantLocationDescriptionTv.text = data.location.description
2831

2932
if (data.todayMenu.main != "") {
33+
// (1) 메뉴 레이아웃 표시
34+
binding.menuReportLayout.visibility = View.GONE
3035
binding.restaurantMenuLayout.visibility = View.VISIBLE
3136
binding.restaurantMenuMoreTv.visibility = View.VISIBLE
3237
binding.restaurantMenuMoreTv.setOnClickListener {
33-
// TODO: 다이얼로그 표시
3438
val menuDialog = MenuDialog(context, data)
3539
menuDialog.show()
3640
}
3741

3842
binding.restaurantMenuMainTv.text = data.todayMenu.main.replace(",", ", ")
3943
binding.restaurantMenuSideTv.text = data.todayMenu.side.replace(",", ", ")
4044
binding.restaurantMenuDessertTv.text = data.todayMenu.dessert.replace(",", ", ")
45+
} else {
46+
// (2) 제보하기 레이아웃 표시
47+
binding.menuReportLayout.visibility = View.VISIBLE
48+
binding.restaurantMenuLayout.visibility = View.GONE
49+
binding.restaurantMenuMoreTv.visibility = View.GONE
50+
binding.menuReportBtn.setOnClickListener {
51+
val menuReportUrl = RemoteConfigRepository.getReportMenuUrlConfig()
52+
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(menuReportUrl))
53+
context.startActivity(intent)
54+
}
4155
}
4256

4357
Glide.with(binding.root)

app/src/main/java/com/woozoo/menumonya/repository/FireStoreRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.woozoo.menumonya.model.Menu
77
import com.woozoo.menumonya.model.Restaurant
88
import com.woozoo.menumonya.repository.RemoteConfigRepository.getMenuCollectionNameConfig
99
import com.woozoo.menumonya.repository.RemoteConfigRepository.getRestaurantsCollectionNameConfig
10-
import com.woozoo.menumonya.util.DateUtils
10+
import com.woozoo.menumonya.util.DateUtils.Companion.getTodayDate
1111
import kotlinx.coroutines.Dispatchers
1212
import kotlinx.coroutines.tasks.await
1313
import kotlinx.coroutines.withContext
@@ -36,7 +36,7 @@ object FireStoreRepository {
3636
// 메뉴 정보 조회
3737
val menu = getMenu(document.id)
3838

39-
val todayMenu = menu.date.get(DateUtils.getTodayDate())
39+
val todayMenu = menu.date.get(getTodayDate())
4040
if (todayMenu != null) restaurant.todayMenu = todayMenu
4141

4242
restaurantInfo.add(restaurant)

app/src/main/java/com/woozoo/menumonya/repository/RemoteConfigRepository.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,10 @@ object RemoteConfigRepository {
6363
remoteConfig.getString("FEEDBACK_URL_PROD")
6464
}
6565
}
66+
67+
fun getReportMenuUrlConfig(): String {
68+
val remoteConfig = FirebaseRemoteConfig.getInstance()
69+
70+
return remoteConfig.getString("REPORT_MENU_URL")
71+
}
6672
}

app/src/main/java/com/woozoo/menumonya/util/LocationUtils.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,10 @@ class LocationUtils {
2929
*/
3030
@SuppressLint("MissingPermission")
3131
fun requestLocationUpdateOnce(locationManager: LocationManager, listener: LocationListener) {
32-
locationManager.requestLocationUpdates(
32+
locationManager.requestSingleUpdate(
3333
LocationManager.NETWORK_PROVIDER,
34-
1000,
35-
10f,
36-
listener.apply {
37-
locationManager.removeUpdates(this) // 위치 업데이트를 반복하지 않도록 리스너 제거
38-
}
34+
listener,
35+
null
3936
)
4037
}
4138
}

app/src/main/res/layout/activity_main.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,26 @@
110110
android:layout_marginBottom="14dp"
111111
/>
112112

113+
<!--로딩 화면(평상시에는 GONE)-->
114+
<LinearLayout
115+
android:id="@+id/loading_view"
116+
android:layout_width="match_parent"
117+
android:layout_height="match_parent"
118+
android:visibility="gone"
119+
android:background="@color/blackTransparent"
120+
android:gravity="center"
121+
>
122+
123+
<com.airbnb.lottie.LottieAnimationView
124+
android:layout_width="@dimen/current_location_loading_icon_size"
125+
android:layout_height="@dimen/current_location_loading_icon_size"
126+
app:lottie_rawRes="@raw/loading"
127+
app:lottie_loop="true"
128+
app:lottie_autoPlay="true"
129+
/>
130+
131+
</LinearLayout>
132+
113133
</FrameLayout>
114134

115135
</LinearLayout>

0 commit comments

Comments
 (0)