Skip to content

Commit 01bb9f2

Browse files
authored
Merge pull request #166 from YAPP-Github/fix/#161-archive-result
[fix] #161 ArchiveResult 화면별 Result 타입 분리
2 parents f1b39eb + 5f9dec3 commit 01bb9f2

File tree

31 files changed

+869
-129
lines changed

31 files changed

+869
-129
lines changed

app/src/main/java/com/neki/android/app/main/MainScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import androidx.core.net.toUri
3737
import kotlinx.collections.immutable.ImmutableList
3838
import kotlinx.collections.immutable.persistentListOf
3939
import com.neki.android.feature.archive.api.ArchiveNavKey
40-
import com.neki.android.feature.archive.api.ArchiveResult
40+
import com.neki.android.feature.archive.api.PhotoUploadedResult
4141
import com.neki.android.feature.map.api.MapNavKey
4242
import com.neki.android.feature.mypage.api.MyPageNavKey
4343
import com.neki.android.feature.photo_upload.api.PhotoUploadNavKey
@@ -99,7 +99,7 @@ fun MainRoute(
9999
is MainSideEffect.NavigateToUploadAlbumWithGallery -> navigateToUploadAlbumWithGallery(sideEffect.uriStrings)
100100
is MainSideEffect.NavigateToUploadAlbumWithQRScan -> navigateToUploadAlbumWithQRScan(sideEffect.imageUrl)
101101
is MainSideEffect.ShowToast -> nekiToast.showToast(sideEffect.message)
102-
MainSideEffect.RefreshArchive -> resultBus.sendResult<ArchiveResult>(result = ArchiveResult.PhotoUploaded)
102+
MainSideEffect.RefreshArchive -> resultBus.sendResult(result = PhotoUploadedResult, allowDuplicate = false)
103103
}
104104
}
105105

core/data-api/src/main/java/com/neki/android/core/dataapi/repository/PhotoRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ interface PhotoRepository {
2525

2626
suspend fun updateFavorite(photoId: Long, favorite: Boolean): Result<Unit>
2727

28+
suspend fun updateMemo(photoId: Long, memo: String): Result<Unit>
29+
2830
suspend fun getPhotosPage(
2931
folderId: Long? = null,
3032
page: Int = 0,

core/data/src/main/java/com/neki/android/core/data/remote/api/PhotoService.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.neki.android.core.data.remote.api
33
import com.neki.android.core.data.remote.model.request.DeletePhotoRequest
44
import com.neki.android.core.data.remote.model.request.RegisterPhotoRequest
55
import com.neki.android.core.data.remote.model.request.UpdateFavoriteRequest
6+
import com.neki.android.core.data.remote.model.request.UpdateMemoRequest
67
import com.neki.android.core.data.remote.model.response.BasicNullableResponse
78
import com.neki.android.core.data.remote.model.response.BasicResponse
89
import com.neki.android.core.data.remote.model.response.FavoriteSummaryResponse
@@ -15,6 +16,7 @@ import io.ktor.client.request.get
1516
import io.ktor.client.request.parameter
1617
import io.ktor.client.request.patch
1718
import io.ktor.client.request.post
19+
import io.ktor.client.request.put
1820
import io.ktor.client.request.setBody
1921
import javax.inject.Inject
2022

@@ -53,6 +55,13 @@ class PhotoService @Inject constructor(
5355
}.body()
5456
}
5557

58+
// 메모 수정
59+
suspend fun updateMemo(photoId: Long, memo: String): BasicNullableResponse<Unit> {
60+
return client.put("/api/photos/$photoId") {
61+
setBody(UpdateMemoRequest(memo))
62+
}.body()
63+
}
64+
5665
// 즐겨찾는 앨범 조회
5766
suspend fun getFavoritePhotos(
5867
page: Int = 0,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.neki.android.core.data.remote.model.request
2+
3+
import kotlinx.serialization.SerialName
4+
import kotlinx.serialization.Serializable
5+
6+
@Serializable
7+
data class UpdateMemoRequest(
8+
@SerialName("memo") val memo: String,
9+
)

core/data/src/main/java/com/neki/android/core/data/remote/model/response/PhotoResponse.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ data class PhotoResponse(
2020
@SerialName("width") val width: Int? = null,
2121
@SerialName("height") val height: Int? = null,
2222
@SerialName("createdAt") val createdAt: String,
23+
@SerialName("memo") val memo: String? = null,
2324
) {
2425
internal fun toModel() = Photo(
2526
id = photoId,
@@ -29,6 +30,7 @@ data class PhotoResponse(
2930
height = height,
3031
date = createdAt.toFormattedDate(),
3132
contentType = ContentType.fromString(contentType),
33+
memo = memo.orEmpty(),
3234
)
3335
}
3436

core/data/src/main/java/com/neki/android/core/data/repository/impl/PhotoRepositoryImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ class PhotoRepositoryImpl @Inject constructor(
6565
photoService.updateFavorite(photoId, favorite)
6666
}
6767

68+
override suspend fun updateMemo(photoId: Long, memo: String): Result<Unit> = runSuspendCatching {
69+
photoService.updateMemo(photoId, memo)
70+
}
71+
6872
override suspend fun getPhotosPage(
6973
folderId: Long?,
7074
page: Int,
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="28dp"
3+
android:height="28dp"
4+
android:viewportWidth="28"
5+
android:viewportHeight="28">
6+
<path
7+
android:pathData="M11.698,22.845H4.45C3.649,22.845 3,22.196 3,21.396V11.849C3,11.464 3.153,11.095 3.425,10.824L9.824,4.425C10.095,4.153 10.464,4 10.849,4H20.396C21.196,4 21.845,4.649 21.845,5.45V11.248"
8+
android:strokeLineJoin="round"
9+
android:strokeWidth="1.93285"
10+
android:fillColor="#00000000"
11+
android:strokeColor="#4F525F"
12+
android:strokeLineCap="round"/>
13+
<path
14+
android:pathData="M3,11.731H8.315C9.116,11.731 9.765,11.082 9.765,10.282V4"
15+
android:strokeWidth="1.93285"
16+
android:fillColor="#00000000"
17+
android:strokeColor="#4F525F"/>
18+
<path
19+
android:pathData="M20.699,14.347L15.035,20.012C14.91,20.137 14.822,20.294 14.78,20.465L14.37,22.141C14.196,22.85 14.84,23.487 15.547,23.308L17.204,22.886C17.373,22.843 17.527,22.755 17.649,22.632L23.317,16.965C23.694,16.588 23.694,15.976 23.317,15.598L22.066,14.347C21.689,13.97 21.077,13.97 20.699,14.347Z"
20+
android:strokeWidth="1.93285"
21+
android:fillColor="#00000000"
22+
android:strokeColor="#4F525F"/>
23+
</vector>

core/model/src/main/java/com/neki/android/core/model/Photo.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ data class Photo(
1313
val width: Int? = null,
1414
val height: Int? = null,
1515
val contentType: ContentType = ContentType.JPEG,
16+
val memo: String = "",
1617
)
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.neki.android.feature.archive.api
22

3-
sealed interface ArchiveResult {
4-
data class PhotoDeleted(val photoId: List<Long>) : ArchiveResult {
5-
constructor(photoId: Long) : this(listOf(photoId))
6-
}
3+
sealed interface ArchiveResult
74

8-
data class FavoriteChanged(val photoId: Long, val isFavorite: Boolean) : ArchiveResult
5+
data object PhotoDetailResult : ArchiveResult
96

10-
data object PhotoUploaded : ArchiveResult
11-
}
7+
data object AlbumDetailResult : ArchiveResult
8+
9+
data object AllPhotoResult : ArchiveResult
10+
11+
data object AllAlbumResult : ArchiveResult
12+
13+
data object PhotoUploadedResult : ArchiveResult

feature/archive/impl/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ dependencies {
1212

1313
implementation(libs.androidx.activity.compose)
1414
implementation(libs.androidx.paging.compose)
15+
implementation(libs.zoomable)
1516
}

0 commit comments

Comments
 (0)