Skip to content

Commit 87f3bda

Browse files
authored
Merge pull request #371 from simeunseok/feature/#348
슬라이스 수정, 삭제 오류 수정
2 parents 941005a + 29a566f commit 87f3bda

File tree

5 files changed

+40
-8
lines changed

5 files changed

+40
-8
lines changed

app/src/main/java/com/drunkenboys/calendarun/data/slice/local/SliceDao.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.drunkenboys.calendarun.data.slice.local
22

3-
import androidx.room.Dao
4-
import androidx.room.Insert
5-
import androidx.room.Query
6-
import androidx.room.Update
3+
import androidx.room.*
74
import com.drunkenboys.calendarun.data.slice.entity.Slice
85
import kotlinx.coroutines.flow.Flow
96

@@ -19,7 +16,7 @@ interface SliceDao {
1916
@Query("SELECT * FROM `Slice` WHERE id == :id")
2017
suspend fun fetchSlice(id: Long): Slice
2118

22-
@Query("SELECT * FROM `Slice` WHERE calendarId == :calendarId")
19+
@Query("SELECT * FROM `Slice` WHERE calendarId == :calendarId ORDER BY startDate ASC")
2320
fun fetchCalendarSliceList(calendarId: Long): Flow<List<Slice>>
2421

2522
@Update
@@ -28,4 +25,10 @@ interface SliceDao {
2825
@Query("DELETE FROM `Slice` WHERE calendarId == :calendarId")
2926
suspend fun deleteSliceList(calendarId: Long)
3027

28+
@Delete
29+
suspend fun deleteSlice(slice: Slice)
30+
31+
@Query("DELETE FROM `Slice` WHERE id == :id")
32+
suspend fun deleteSliceById(id: Long)
33+
3134
}

app/src/main/java/com/drunkenboys/calendarun/data/slice/local/SliceLocalDataSource.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,9 @@ interface SliceLocalDataSource {
1616
suspend fun updateSlice(slice: Slice)
1717

1818
suspend fun deleteSliceList(calendarId: Long)
19+
20+
suspend fun deleteSlice(slice: Slice)
21+
22+
suspend fun deleteSliceById(id: Long)
23+
1924
}

app/src/main/java/com/drunkenboys/calendarun/data/slice/local/SliceLocalDataSourceImpl.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,12 @@ class SliceLocalDataSourceImpl @Inject constructor(
3232
override suspend fun deleteSliceList(calendarId: Long) {
3333
sliceDao.deleteSliceList(calendarId)
3434
}
35+
36+
override suspend fun deleteSlice(slice: Slice) {
37+
sliceDao.deleteSlice(slice)
38+
}
39+
40+
override suspend fun deleteSliceById(id: Long) {
41+
sliceDao.deleteSliceById(id)
42+
}
3543
}

app/src/main/java/com/drunkenboys/calendarun/ui/maincalendar/MainCalendarViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class MainCalendarViewModel @Inject constructor(
6767
scheduleList.map { schedule -> schedule.toCalendarScheduleObject() }
6868
}
6969
}.combine(holidayList) { scheduleList, holidayList ->
70-
scheduleList + holidayList
70+
holidayList + scheduleList
7171
}.stateIn(viewModelScope, SharingStarted.Eagerly, emptyList())
7272

7373

app/src/main/java/com/drunkenboys/calendarun/ui/savecalendar/SaveCalendarViewModel.kt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ class SaveCalendarViewModel @Inject constructor(
3838
private val _blankTitleEvent = MutableSharedFlow<Unit>()
3939
val blankTitleEvent: SharedFlow<Unit> = _blankTitleEvent
4040

41+
private val deleteSliceIdList = mutableListOf<Long>()
42+
4143
init {
4244
viewModelScope.launch {
4345
val calendar = calendarLocalDataSource.fetchCalendar(calendarId) ?: return@launch
@@ -84,8 +86,12 @@ class SaveCalendarViewModel @Inject constructor(
8486

8587
fun deleteSliceItem(currentSliceItemList: List<SliceItem>) {
8688
viewModelScope.launch {
87-
val newSliceItemList = currentSliceItemList.filter { sliceItem -> !sliceItem.check }
88-
_sliceItemList.emit(newSliceItemList.toMutableList())
89+
deleteSliceIdList.addAll(currentSliceItemList
90+
.filter { sliceItem -> sliceItem.check }
91+
.map { sliceItem -> sliceItem.id }
92+
)
93+
94+
_sliceItemList.emit(currentSliceItemList.filter { sliceItem -> !sliceItem.check })
8995
}
9096
}
9197

@@ -157,6 +163,8 @@ class SaveCalendarViewModel @Inject constructor(
157163
saveSlice(item, newCalendarId)
158164
}
159165

166+
deleteSlice()
167+
160168
return true
161169
}
162170

@@ -205,6 +213,14 @@ class SaveCalendarViewModel @Inject constructor(
205213
}
206214
}
207215

216+
private fun deleteSlice() {
217+
viewModelScope.launch {
218+
deleteSliceIdList.forEach { id ->
219+
sliceLocalDataSource.deleteSliceById(id)
220+
}
221+
}
222+
}
223+
208224
private fun emitBlankSliceNameEvent(item: SliceItem) {
209225
viewModelScope.launch {
210226
item.isNameBlank.emit(Unit)

0 commit comments

Comments
 (0)