Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,17 @@ import kotlinx.serialization.Serializable

@Serializable
data class CommentsCreateResponse(
val commentId: Int,
val commentId: Int?,
val creatorId: Int?,
val creatorProfileImageUrl: String?,
val creatorNickname: String?,
val aliasName: String?,
val aliasColor: String?,
val postDate: String?,
val content: String?,
val likeCount: Int,
val isDeleted: Boolean,
val isWriter: Boolean,
val isLike: Boolean,
val replyList: List<ReplyList>,
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ package com.texthip.thip.data.model.rooms.request
import kotlinx.serialization.Serializable

@Serializable
data class RoomsDailyGreetingRequest(
data class RoomsCreateDailyGreetingRequest(
val content: String,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.texthip.thip.data.model.rooms.response

import kotlinx.serialization.Serializable

@Serializable
data class RoomsCreateDailyGreetingResponse(
val attendanceCheckId: Long,
val roomId: Long,
val isFirstWrite: Boolean,
)
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,19 @@ import kotlinx.serialization.Serializable

@Serializable
data class RoomsDailyGreetingResponse(
val attendanceCheckId: Long,
val roomId: Long,
val isFirstWrite: Boolean,
val todayCommentList: List<TodayCommentList>,
val nextCursor: String?,
val isLast: Boolean
)

@Serializable
data class TodayCommentList(
val attendanceCheckId: Int,
val creatorId: Int,
val creatorNickname: String,
val creatorProfileImageUrl: String,
val todayComment: String,
val postDate: String,
val date: String,
val isWriter: Boolean,
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import com.texthip.thip.data.model.base.handleBaseResponse
import com.texthip.thip.data.model.rooms.request.CreateRoomRequest
import com.texthip.thip.data.model.rooms.request.RoomJoinRequest
import com.texthip.thip.data.model.rooms.request.RoomSecretRoomRequest
import com.texthip.thip.data.model.rooms.request.RoomsCreateDailyGreetingRequest
import com.texthip.thip.data.model.rooms.request.RoomsCreateVoteRequest
import com.texthip.thip.data.model.rooms.request.RoomsDailyGreetingRequest
import com.texthip.thip.data.model.rooms.request.RoomsPostsLikesRequest
import com.texthip.thip.data.model.rooms.request.RoomsRecordRequest
import com.texthip.thip.data.model.rooms.request.RoomsVoteRequest
Expand All @@ -29,23 +29,23 @@ class RoomsRepository @Inject constructor(
private val genreManager: GenreManager,
private val userDataManager: UserDataManager
) {

/** 장르 목록 조회 */
fun getGenres(): Result<List<Genre>> = runCatching {
genreManager.getGenres()
}

/** 사용자 이름 조회(캐싱 데이터 사용)*/
fun getUserName(): Result<String> = runCatching {
userDataManager.getUserName()
}

/** 내가 참여 중인 모임방 목록 조회 */
suspend fun getMyJoinedRooms(page: Int): Result<JoinedRoomListResponse?> = runCatching {
val response = roomsService.getJoinedRooms(page)
.handleBaseResponse()
.getOrThrow()

response?.let { joinedRoomsDto ->
userDataManager.cacheUserName(joinedRoomsDto.nickname)
}
Expand All @@ -56,19 +56,22 @@ class RoomsRepository @Inject constructor(
suspend fun getRoomSections(genre: Genre? = null): Result<RoomMainList?> = runCatching {
val selectedGenre = genre ?: genreManager.getDefaultGenre()
val apiCategory = genreManager.mapGenreToApiCategory(selectedGenre)

roomsService.getRooms(apiCategory)
.handleBaseResponse()
.getOrThrow()
}

/** 타입별 내 모임방 목록 조회 */
suspend fun getMyRoomsByType(type: String?, cursor: String? = null): Result<MyRoomListResponse?> = runCatching {
suspend fun getMyRoomsByType(
type: String?,
cursor: String? = null
): Result<MyRoomListResponse?> = runCatching {
roomsService.getMyRooms(type, cursor)
.handleBaseResponse()
.getOrThrow()
}

/** 모집중인 모임방 상세 정보 조회 */
suspend fun getRoomRecruiting(roomId: Int): Result<RoomRecruitingResponse?> = runCatching {
roomsService.getRoomRecruiting(roomId)
Expand Down Expand Up @@ -96,7 +99,10 @@ class RoomsRepository @Inject constructor(
}

/** 비밀번호 입력 */
suspend fun postParticipateSecretRoom(roomId: Int, password: String): Result<RoomSecretRoomResponse> = runCatching {
suspend fun postParticipateSecretRoom(
roomId: Int,
password: String
): Result<RoomSecretRoomResponse> = runCatching {
val request = RoomSecretRoomRequest(password = password)
val response = roomsService.postParticipateSecretRoom(roomId, request)
.handleBaseResponse()
Expand All @@ -116,7 +122,6 @@ class RoomsRepository @Inject constructor(
}



/** 기록장 API들 */
suspend fun getRoomsPlaying(
roomId: Int
Expand Down Expand Up @@ -248,13 +253,23 @@ class RoomsRepository @Inject constructor(
).handleBaseResponse().getOrThrow()
}

suspend fun getRoomsDailyGreeting(
roomId: Int,
cursor: String?
) = runCatching {
roomsService.getRoomsDailyGreeting(
roomId = roomId,
cursor = cursor
).handleBaseResponse().getOrThrow()
}

suspend fun postRoomsDailyGreeting(
roomId: Int,
content: String
) = runCatching {
roomsService.postRoomsDailyGreeting(
roomId = roomId,
request = RoomsDailyGreetingRequest(
request = RoomsCreateDailyGreetingRequest(
content = content
)
).handleBaseResponse().getOrThrow()
Expand Down
13 changes: 10 additions & 3 deletions app/src/main/java/com/texthip/thip/data/service/RoomsService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import com.texthip.thip.data.model.base.BaseResponse
import com.texthip.thip.data.model.rooms.request.CreateRoomRequest
import com.texthip.thip.data.model.rooms.request.RoomJoinRequest
import com.texthip.thip.data.model.rooms.request.RoomSecretRoomRequest
import com.texthip.thip.data.model.rooms.request.RoomsCreateDailyGreetingRequest
import com.texthip.thip.data.model.rooms.request.RoomsCreateVoteRequest
import com.texthip.thip.data.model.rooms.request.RoomsDailyGreetingRequest
import com.texthip.thip.data.model.rooms.request.RoomsPostsLikesRequest
import com.texthip.thip.data.model.rooms.request.RoomsRecordRequest
import com.texthip.thip.data.model.rooms.request.RoomsVoteRequest
Expand All @@ -18,6 +18,7 @@ import com.texthip.thip.data.model.rooms.response.RoomMainList
import com.texthip.thip.data.model.rooms.response.RoomRecruitingResponse
import com.texthip.thip.data.model.rooms.response.RoomSecretRoomResponse
import com.texthip.thip.data.model.rooms.response.RoomsBookPageResponse
import com.texthip.thip.data.model.rooms.response.RoomsCreateDailyGreetingResponse
import com.texthip.thip.data.model.rooms.response.RoomsCreateVoteResponse
import com.texthip.thip.data.model.rooms.response.RoomsDailyGreetingResponse
import com.texthip.thip.data.model.rooms.response.RoomsDeleteRecordResponse
Expand Down Expand Up @@ -154,11 +155,17 @@ interface RoomsService {
@Body request: RoomsPostsLikesRequest
): BaseResponse<RoomsPostsLikesResponse>

@GET("rooms/{roomId}/daily-greeting")
suspend fun getRoomsDailyGreeting(
@Path("roomId") roomId: Int,
@Query("cursor") cursor: String? = null
): BaseResponse<RoomsDailyGreetingResponse>

@POST("rooms/{roomId}/daily-greeting")
suspend fun postRoomsDailyGreeting(
@Path("roomId") roomId: Int,
@Body request: RoomsDailyGreetingRequest
): BaseResponse<RoomsDailyGreetingResponse>
@Body request: RoomsCreateDailyGreetingRequest
): BaseResponse<RoomsCreateDailyGreetingResponse>

@GET("rooms/{roomId}/records/{recordId}/pin")
suspend fun getRoomsRecordsPin(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.texthip.thip.ui.common

enum class CommentActionMode {
POPUP,
BOTTOM_SHEET
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.texthip.thip.data.model.rooms.response.TodayCommentList
import com.texthip.thip.ui.common.header.ProfileBarWithDate
import com.texthip.thip.ui.group.room.mock.GroupRoomChatData
import com.texthip.thip.ui.theme.ThipTheme.colors
import com.texthip.thip.ui.theme.ThipTheme.typography

@Composable
fun CardCommentGroup(
data: GroupRoomChatData,
data: TodayCommentList,
onMenuClick: () -> Unit
) {
Column(
Expand All @@ -26,14 +26,14 @@ fun CardCommentGroup(
.padding(horizontal = 20.dp)
) {
ProfileBarWithDate(
profileImage = data.profileImage,
nickname = data.nickname,
dateText = data.date,
profileImage = data.creatorProfileImageUrl,
nickname = data.creatorNickname,
dateText = data.postDate,
onMenuClick = onMenuClick
)
Spacer(Modifier.height(8.dp))
Text(
text = data.content,
text = data.todayComment,
style = typography.feedcopy_r400_s14_h20,
color = colors.Grey

Expand All @@ -45,12 +45,15 @@ fun CardCommentGroup(
@Composable
private fun CardCommentGroupPreview() {
CardCommentGroup(
data = GroupRoomChatData(
profileImage = null,
nickname = "user.01",
date = "11시간 전",
content = "이것은 그룹 채팅의 댓글입니다. 이곳에 댓글 내용을 작성할 수 있습니다. 여러 줄로 작성해도 됩니다.",
isMine = false
data = TodayCommentList(
attendanceCheckId = 1,
creatorId = 1,
creatorProfileImageUrl = "",
creatorNickname = "user.01",
todayComment = "이것은 그룹 채팅의 댓글입니다. 이곳에 댓글 내용을 작성할 수 있습니다. 여러 줄로 작성해도 됩니다.",
postDate = "11시간 전",
date = "2025-08-18",
isWriter = false
),
onMenuClick = {}
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package com.texthip.thip.ui.common.header

import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
Expand All @@ -20,18 +17,18 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage
import com.texthip.thip.R
import com.texthip.thip.ui.theme.ThipTheme
import com.texthip.thip.ui.theme.ThipTheme.colors
import com.texthip.thip.ui.theme.ThipTheme.typography

@Composable
fun ProfileBarWithDate(
profileImage: Painter?,
profileImage: String,
nickname: String,
dateText: String,
onMenuClick: () -> Unit = {}
Expand All @@ -43,22 +40,13 @@ fun ProfileBarWithDate(
horizontalArrangement = Arrangement.SpaceBetween
) {
Row {
if (profileImage != null) {
Image(
painter = profileImage,
contentDescription = "프로필 이미지",
modifier = Modifier
.size(24.dp)
.clip(CircleShape)
)
} else {
Box(
modifier = Modifier
.size(24.dp)
.clip(CircleShape)
.background(colors.Grey)
)
}
AsyncImage(
model = profileImage,
contentDescription = "프로필 이미지",
modifier = Modifier
.size(24.dp)
.clip(CircleShape)
)
Spacer(modifier = Modifier.width(4.dp))
Column {
Text(
Expand Down Expand Up @@ -91,7 +79,7 @@ fun ProfileBarWithDate(
fun PreviewProfileBarWithDate() {
ThipTheme {
ProfileBarWithDate(
profileImage = null,
profileImage = "https://example.com",
nickname = "user.01",
dateText = "2025.01.12"
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.texthip.thip.ui.common.modal

import android.widget.Toast
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Arrangement
Expand All @@ -14,6 +13,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -24,7 +24,8 @@ import com.texthip.thip.ui.theme.ThipTheme.typography
@Composable
fun ToastWithDate(
modifier: Modifier = Modifier,
message: String,
message: String = stringResource(R.string.group_room_chat_max),
color: Color = colors.White,
date: String? = null
) {
Comment on lines +27 to 30

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Composable 기본 파라미터에서 stringResource 사용은 컴파일 에러를 유발합니다

@composable 컨텍스트가 아닌 기본 인자(default argument)에서 stringResource를 호출하면 Compose 컴파일러가 허용하지 않습니다. 메시지는 null 허용으로 바꾸고, 함수 본문에서 stringResource로 대체값을 적용하세요.

-@Composable
-fun ToastWithDate(
-    modifier: Modifier = Modifier,
-    message: String = stringResource(R.string.group_room_chat_max),
-    color: Color = colors.White,
-    date: String? = null
-) {
+@Composable
+fun ToastWithDate(
+    modifier: Modifier = Modifier,
+    message: String? = null,
+    color: Color = colors.White,
+    date: String? = null
+) {
+    val resolvedMessage = message ?: stringResource(R.string.group_room_chat_max)
     ...
-            Text(
-                text = message,
+            Text(
+                text = resolvedMessage,
                 color = color,
                 style = typography.view_m500_s12_h20
             )

Also applies to: 47-51

Box(
Expand All @@ -45,7 +46,7 @@ fun ToastWithDate(
) {
Text(
text = message,
color = colors.White,
color = color,
style = typography.view_m500_s12_h20
)
if (date != null) {
Expand Down
Loading