Skip to content

Commit d4b823d

Browse files
authored
feat: 읽을 수 없는 쪽지 삭제
* refactor: 쪽지 폴링 로직 수정 * style: 코드 정리 * feat: 주변 쪽지를 모두 읽을 수 있는 쪽지로 변경 * feat: 변수명 변경 * feat: 사용하지 않는 drawable 삭제 * feat: 오타 수정
1 parent fd4e0d5 commit d4b823d

File tree

5 files changed

+29
-47
lines changed

5 files changed

+29
-47
lines changed

android/app/src/main/java/com/now/naaga/presentation/onadventure/NaverMapSettingDelegate.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -130,25 +130,15 @@ class DefaultNaverMapSettingDelegate() : NaverMapSettingDelegate, DefaultLifecyc
130130
override fun addLetter(letter: LetterPreview, action: (id: Long) -> Unit) {
131131
Marker().apply {
132132
position = LatLng(letter.coordinate.latitude, letter.coordinate.longitude)
133-
icon = selectLetterIcon(letter.isNearBy)
134-
if (letter.isNearBy) {
135-
setOnSingleClickListener {
136-
action(letter.id)
137-
}
133+
icon = OverlayImage.fromResource(R.drawable.ic_letter)
134+
setOnSingleClickListener {
135+
action(letter.id)
138136
}
139137
map = naverMap
140138
letterMarkers.add(this)
141139
}
142140
}
143141

144-
private fun selectLetterIcon(isNearBy: Boolean): OverlayImage {
145-
return if (isNearBy) {
146-
OverlayImage.fromResource(R.drawable.ic_letter)
147-
} else {
148-
OverlayImage.fromResource(R.drawable.ic_letter_preview)
149-
}
150-
}
151-
152142
override fun removeLetters() {
153143
letterMarkers.forEach { letterMarker ->
154144
letterMarker.map = null

android/app/src/main/java/com/now/naaga/presentation/onadventure/OnAdventureActivity.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ class OnAdventureActivity :
110110
private fun subscribe() {
111111
viewModel.startCoordinate.observe(this) {
112112
beginAdventure(it)
113+
viewModel.fetchLetters()
113114
}
114115
viewModel.adventure.observe(this) {
115116
isAdventureDone(it.adventureStatus)
@@ -125,11 +126,11 @@ class OnAdventureActivity :
125126
viewModel.isSendLetterSuccess.observe(this) {
126127
supportFragmentManager.findFragmentByTag(LetterSendDialog.TAG)?.onDestroyView()
127128
when (it) {
128-
true -> { binding.root.showSnackbar(getString(R.string.OnAdventure_send_letter_success)) }
129-
false -> { binding.root.showSnackbar(getString(R.string.OnAdventure_send_letter_fail)) }
129+
true -> binding.root.showSnackbar(getString(R.string.OnAdventure_send_letter_success))
130+
false -> binding.root.showSnackbar(getString(R.string.OnAdventure_send_letter_fail))
130131
}
131132
}
132-
viewModel.letters.observe(this) {
133+
viewModel.nearbyLetters.observe(this) {
133134
drawLetters(it)
134135
}
135136
viewModel.letter.observe(this) {
@@ -149,8 +150,7 @@ class OnAdventureActivity :
149150
}
150151

151152
OnAdventureViewModel.TRY_COUNT_OVER -> showToast(getString(R.string.onAdventure_try_count_over))
152-
153-
DataThrowable.NETWORK_THROWABLE_CODE -> { showToast(getString(R.string.network_error_message)) }
153+
DataThrowable.NETWORK_THROWABLE_CODE -> showToast(getString(R.string.network_error_message))
154154

155155
else -> shortSnackbar(throwable.message ?: return@observe)
156156
}

android/app/src/main/java/com/now/naaga/presentation/onadventure/OnAdventureViewModel.kt

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.now.naaga.presentation.onadventure
33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
55
import androidx.lifecycle.ViewModel
6-
import androidx.lifecycle.liveData
76
import androidx.lifecycle.map
87
import androidx.lifecycle.viewModelScope
98
import com.now.domain.model.Adventure
@@ -47,19 +46,8 @@ class OnAdventureViewModel @Inject constructor(
4746
private val _lastHint = MutableLiveData<Hint>()
4847
val lastHint: LiveData<Hint> = _lastHint
4948

50-
val letters: LiveData<List<LetterPreview>> = liveData {
51-
while (true) {
52-
myCoordinate.value?.let { coordinate ->
53-
emit(
54-
letterRepository.fetchNearbyLetters(
55-
latitude = coordinate.latitude,
56-
longitude = coordinate.longitude,
57-
).map { it.copy(isNearBy = coordinate.isNearBy(it.coordinate)) },
58-
)
59-
} ?: emit(emptyList())
60-
delay(5000)
61-
}
62-
}
49+
private val _nearbyLetters = MutableLiveData<List<LetterPreview>>()
50+
val nearbyLetters: LiveData<List<LetterPreview>> = _nearbyLetters
6351

6452
private val _letter = MutableLiveData<LetterUiModel>()
6553
val letter: LiveData<LetterUiModel> = _letter
@@ -102,6 +90,22 @@ class OnAdventureViewModel @Inject constructor(
10290
}
10391
}
10492

93+
fun fetchLetters() {
94+
viewModelScope.launch {
95+
while (true) {
96+
val coordinate = requireNotNull(myCoordinate.value) { "나의 좌표가 null 입니다." }
97+
runCatching {
98+
letterRepository.fetchNearbyLetters(coordinate.latitude, coordinate.longitude)
99+
}.onSuccess {
100+
_nearbyLetters.value = it
101+
}.onFailure {
102+
setThrowable(it)
103+
}
104+
delay(5000L)
105+
}
106+
}
107+
}
108+
105109
fun openHint() {
106110
if (isAllHintsUsed()) {
107111
setThrowable(hintThrowable)
@@ -148,11 +152,13 @@ class OnAdventureViewModel @Inject constructor(
148152
_adventure.value = adventure.value?.copy(adventureStatus = AdventureStatus.DONE)
149153
_throwable.value = throwable
150154
}
155+
151156
NOT_ARRIVED -> {
152157
val currentRemainingTryCount = adventure.value?.remainingTryCount ?: return
153158
_adventure.value = adventure.value?.copy(remainingTryCount = currentRemainingTryCount - 1)
154159
_throwable.value = throwable
155160
}
161+
156162
else -> {
157163
_throwable.value = throwable
158164
}

android/app/src/main/res/drawable/ic_letter_preview.xml

Lines changed: 0 additions & 14 deletions
This file was deleted.

android/domain/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ tasks {
2020
test {
2121
useJUnitPlatform()
2222
}
23-
}
23+
}

0 commit comments

Comments
 (0)