Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature/home: 홈화면 수정사항 반영#2 #128

Merged
merged 15 commits into from
May 7, 2024
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 @@ -7,9 +7,9 @@ data class AnnouncementHomeResponseItem(
val arrivalLoc: String,
val departureLoc: String,
val endDate: String,
val intermediaryName: String,
val isKennel: Boolean,
val mainImage: String,
val postId: Int,
val startDate: String
val startDate: String,
val dogName: String,
val pickUpTime: String
)
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ data class AnnouncementSearchResponseItem(
val arrivalLoc: String,
val startDate: String,
val endDate: String,
val intermediaryName: String,
val isKennel: Boolean,
val mainImage: String
val mainImage: String,
val dogSize: String,
val pickUpTime: String,
val dogName: String
)
Original file line number Diff line number Diff line change
@@ -1,12 +1,27 @@
package com.kusitms.connectdog.core.data.api.model.volunteer

import com.kusitms.connectdog.core.model.AnnouncementSearch

data class BookmarkResponseItem(
val dogName: String,
val pickUpTime: String,
val dogSize: String,
val arrivalLoc: String,
val departureLoc: String,
val endDate: String,
val intermediaryName: String,
val mainImage: String,
val postId: Long,
val startDate: String,
val isKennel: Boolean
)
) {
fun toData() = AnnouncementSearch(
imageUrl = mainImage,
location = "$departureLoc → $arrivalLoc",
date = startDate,
postId = postId.toInt(),
dogName = dogName,
dogSize = dogSize,
isKennel = isKennel,
pickUpTime = pickUpTime
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,29 @@ package com.kusitms.connectdog.core.data.mapper.volunteer
import com.kusitms.connectdog.core.data.api.model.volunteer.AnnouncementHomeResponseItem
import com.kusitms.connectdog.core.data.api.model.volunteer.AnnouncementSearchResponseItem
import com.kusitms.connectdog.core.model.Announcement
import com.kusitms.connectdog.core.model.AnnouncementSearch
import com.kusitms.connectdog.core.util.dateRangeFormat

internal fun AnnouncementHomeResponseItem.toData(): Announcement {
return Announcement(
imageUrl = this.mainImage,
location = "${this.departureLoc} → ${this.arrivalLoc}",
date = dateRangeFormat(startDate, endDate),
organization = this.intermediaryName,
hasKennel = this.isKennel,
postId = this.postId
postId = this.postId,
dogName = this.dogName,
pickUpTime = this.pickUpTime
)
}

internal fun AnnouncementSearchResponseItem.toData(): Announcement {
return Announcement(
internal fun AnnouncementSearchResponseItem.toData(): AnnouncementSearch {
return AnnouncementSearch(
imageUrl = this.mainImage,
location = "${this.departureLoc} → ${this.arrivalLoc}",
date = dateRangeFormat(startDate, endDate),
organization = this.intermediaryName,
hasKennel = this.isKennel,
postId = this.postId
dogName = this.dogName,
pickUpTime = this.pickUpTime,
postId = this.postId,
isKennel = this.isKennel,
dogSize = this.dogSize
)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.kusitms.connectdog.core.data.repository

import com.kusitms.connectdog.core.model.Announcement
import com.kusitms.connectdog.core.model.AnnouncementSearch
import com.kusitms.connectdog.core.model.Review

interface HomeRepository {
Expand All @@ -18,7 +19,7 @@ interface HomeRepository {
orderCondition: String? = null,
page: Int? = 0,
size: Int? = 50
): List<Announcement>
): List<AnnouncementSearch>

suspend fun getReviewList(page: Int? = 0, size: Int? = 5): List<Review>
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.kusitms.connectdog.core.data.api.ApiService
import com.kusitms.connectdog.core.data.mapper.toData
import com.kusitms.connectdog.core.data.mapper.volunteer.toData
import com.kusitms.connectdog.core.model.Announcement
import com.kusitms.connectdog.core.model.AnnouncementSearch
import com.kusitms.connectdog.core.model.Review
import javax.inject.Inject

Expand All @@ -26,7 +27,7 @@ internal class HomeRepositoryImpl @Inject constructor(
orderCondition: String?,
page: Int?,
size: Int?
): List<Announcement> {
): List<AnnouncementSearch> {
var depart = departureLoc
if (depart != null) {
if ("전체" in depart) depart = depart.take(2)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
package com.kusitms.connectdog.core.designsystem.component

import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.kusitms.connectdog.core.designsystem.theme.Gray1
import com.kusitms.connectdog.core.designsystem.theme.Gray2
import com.kusitms.connectdog.core.designsystem.theme.Gray3

@Composable
Expand All @@ -31,3 +36,27 @@ fun DetailInfo(
)
}
}

@Composable
fun TextWithIcon(
text: String,
iconId: Int,
size: Int = 12
) {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Icon(
painter = painterResource(id = iconId),
contentDescription = null,
tint = Gray2
)
Spacer(modifier = Modifier.width(6.dp))
Text(
text = text,
fontSize = size.sp,
fontWeight = FontWeight.Medium,
color = Gray2
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ data class Announcement(
val imageUrl: String,
val location: String,
val date: String,
val organization: String,
val hasKennel: Boolean,
val postId: Int
val postId: Int,
val dogName: String,
val pickUpTime: String
)
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ import com.kusitms.connectdog.core.designsystem.component.ConnectDogTagWithIcon
import com.kusitms.connectdog.core.designsystem.component.ConnectDogTopAppBar
import com.kusitms.connectdog.core.designsystem.component.DetailInfo
import com.kusitms.connectdog.core.designsystem.component.NetworkImage
import com.kusitms.connectdog.core.designsystem.component.TextWithIcon
import com.kusitms.connectdog.core.designsystem.component.TopAppBarNavigationType
import com.kusitms.connectdog.core.designsystem.theme.Gray2
import com.kusitms.connectdog.core.designsystem.theme.Gray3
Expand Down Expand Up @@ -282,10 +283,9 @@ private fun BasicInfo(
color = Gray3
)
Spacer(modifier = Modifier.height(6.dp))

test(iconId = R.drawable.ic_clock, text = detail.startDate)
TextWithIcon(iconId = R.drawable.ic_clock, text = detail.startDate, size = 14)
Spacer(modifier = Modifier.height(8.dp))
test(iconId = R.drawable.ic_clock, text = detail.pickUpTime)
TextWithIcon(iconId = R.drawable.ic_clock, text = detail.pickUpTime, size = 14)
Spacer(modifier = Modifier.height(17.dp))
Row {
ConnectDogTagWithIcon(
Expand All @@ -309,20 +309,6 @@ private fun BasicInfo(
}
}

@Composable
private fun test(
iconId: Int,
text: String
) {
Row(
verticalAlignment = Alignment.CenterVertically
) {
Icon(painter = painterResource(id = iconId), contentDescription = null, tint = Gray2)
Spacer(modifier = Modifier.width(6.dp))
Text(text = text, fontSize = 14.sp, fontWeight = FontWeight.Medium, color = Gray2)
}
}

@Composable
fun VolunteerInfo(detail: NoticeDetailResponseItem) {
Column(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import com.kusitms.connectdog.core.designsystem.component.BannerGuideline
import com.kusitms.connectdog.core.designsystem.component.ConnectDogReview
import com.kusitms.connectdog.core.designsystem.component.NetworkImage
import com.kusitms.connectdog.core.designsystem.component.ReviewType
import com.kusitms.connectdog.core.designsystem.component.TextWithIcon
import com.kusitms.connectdog.core.designsystem.theme.ConnectDogTheme
import com.kusitms.connectdog.core.designsystem.theme.Gray1
import com.kusitms.connectdog.core.designsystem.theme.Gray2
Expand Down Expand Up @@ -377,7 +378,7 @@ fun AnnouncementLoading(
arrangement: Arrangement.Horizontal
) {
val list = List(4) {
Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", "단체이름", false, -1)
Announcement("", "이동봉사 위치", "YY.mm.dd(요일)", -1, "", "")
}
LazyRow(horizontalArrangement = arrangement, modifier = modifier) {
items(list) {
Expand Down Expand Up @@ -406,12 +407,12 @@ private fun ReviewLoading(modifier: Modifier, arrangement: Arrangement.Horizonta
profileNum = 0,
dogName = "멍멍이",
userName = "츄",
mainImage = "",
date = "23.10.19(목)",
location = "서울 강남구 -> 서울 도봉구",
organization = "단체이름",
content = "진짜 천사같은 아기와 하루를 함께해서 행복했습니다 너무 감사드려요 봉사 또 해야징 ><",
contentImages = null
contentImages = null,
mainImage = ""
)
}
LazyRow(horizontalArrangement = arrangement, modifier = modifier) {
Expand Down Expand Up @@ -440,18 +441,22 @@ private fun AnnouncementCardContent(
.shadow(shape = RoundedCornerShape(12.dp), elevation = 1.dp)
)
Text(
text = announcement.location,
text = announcement.dogName,
maxLines = 2,
style = MaterialTheme.typography.bodyMedium,
fontWeight = FontWeight.SemiBold,
modifier = Modifier.padding(start = 1.dp, top = 10.dp, bottom = 8.dp)
)
AnnouncementContent(
date = announcement.date,
organization = announcement.organization,
hasKennel = announcement.hasKennel,
style = MaterialTheme.typography.labelMedium
Text(
text = announcement.location,
color = Gray3,
fontSize = 12.sp,
fontWeight = FontWeight.Normal
)
Spacer(modifier = Modifier.height(8.dp))
TextWithIcon(text = announcement.date.substringBefore(" "), iconId = R.drawable.ic_clock)
Spacer(modifier = Modifier.height(5.dp))
TextWithIcon(text = announcement.pickUpTime, iconId = R.drawable.ic_clock)
}
}

Expand Down Expand Up @@ -485,19 +490,19 @@ private fun HomeScreenPreview() {
}
}

@Preview
@Composable
private fun AnnouncementPreview() {
ConnectDogTheme {
AnnouncementCardContent(
announcement = Announcement(
"",
"서울시 강남구 -> 서울시 도봉구",
"23.10.19(수)",
"단체이름이름",
true,
-1
)
)
}
}
// @Preview
// @Composable
// private fun AnnouncementPreview() {
// ConnectDogTheme {
// AnnouncementCardContent(
// announcement = Announcement(
// "",
// "서울시 강남구 -> 서울시 도봉구",
// "23.10.19(수)",
// "단체이름이름",
// true,
// -1
// )
// )
// }
// }
4 changes: 2 additions & 2 deletions feature/home/src/main/res/values/string.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@
<string name="home_dog_unit">마리</string>
<string name="home_need_move_description">이동이 필요해요</string>
<string name="home_moved_description">이동했어요!</string>
<string name="home_navigate_search">이번주 이동봉사 공고</string>
<string name="home_navigate_review">생생 이동봉사 후기</string>
<string name="home_navigate_search">지금 필요한 이동봉사 공고</string>
<string name="home_navigate_review">생생한 이동봉사 후기</string>
<string name="search_bar_title_1">딱 맞는 이동봉사를 찾아보세요!\n</string>
<string name="search_bar_title_2">출발지·도착지·일정</string>
<!-- review -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,9 @@ private fun Content(
.fillMaxSize()
.padding(top = 48.dp)
) {
Spacer(modifier = Modifier.height(30.dp))
BadgeGrid(titleRes = R.string.volunteer_title, volunteerItems)
Spacer(modifier = Modifier.height(30.dp))
BadgeGrid(titleRes = R.string.review_title, reviewItems)
}
}
Expand All @@ -185,7 +187,7 @@ private fun BadgeGrid(
Column(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 20.dp, vertical = 30.dp)
.padding(horizontal = 20.dp)
) {
Text(
text = stringResource(id = titleRes),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import com.kusitms.connectdog.core.designsystem.component.ListForUserItem
import com.kusitms.connectdog.core.designsystem.component.TopAppBarNavigationType
import com.kusitms.connectdog.core.designsystem.theme.ConnectDogTheme
import com.kusitms.connectdog.core.designsystem.theme.Gray7
import com.kusitms.connectdog.feature.home.screen.AnnouncementContent
import com.kusitms.connectdog.feature.mypage.R
import com.kusitms.connectdog.feature.mypage.viewmodel.MyPageViewModel

Expand Down Expand Up @@ -56,12 +57,16 @@ private fun Content(
item: List<BookmarkResponseItem>,
onDetailClick: (Long) -> Unit
) {
LazyColumn(
modifier = Modifier.padding(top = 48.dp),
verticalArrangement = Arrangement.Top
) {
items(item) {
BookmarkContent(item = it, onDetailClick = onDetailClick)
if (item.isEmpty()) {
// TODO 저장된 공고가 비어있는 경우 표시될 UI 추가
} else {
LazyColumn(
modifier = Modifier.padding(top = 48.dp),
verticalArrangement = Arrangement.Top
) {
items(item) {
AnnouncementContent(announcement = it.toData(), onClick = onDetailClick)
}
}
}
}
Expand All @@ -78,7 +83,7 @@ private fun BookmarkContent(
imageUrl = item.mainImage,
location = "${item.departureLoc} → ${item.arrivalLoc}",
date = "${item.startDate} - ${item.endDate}",
organization = item.intermediaryName,
organization = item.dogName,
hasKennel = item.isKennel
)
Divider(thickness = 8.dp, color = Gray7)
Expand Down
Loading
Loading