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

[UI/#204] 홈 뷰 / UI 수정사항 반영 및 리팩토링 #232

Merged
merged 42 commits into from
Sep 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
3c3cdd5
[UI/#204] 홈 뷰 곧 마감되는 공고 아이템 수정
Hyobeen-Park Aug 28, 2024
2ae81c5
[UI/#204] 홈 뷰 곧 마감되는 공고 아이템 padding 값 수정
Hyobeen-Park Aug 30, 2024
879e51f
[UI/#204] 홈 뷰 필터링 버튼 수정
Hyobeen-Park Aug 30, 2024
11b4442
[UI/#204] 홈 뷰 필터링 정보 수정
Hyobeen-Park Aug 30, 2024
50ab00e
Merge remote-tracking branch 'origin/develop' into ui/#204-home-view
Hyobeen-Park Aug 30, 2024
85ccbe4
[CHORE/#204] 변수명 및 함수 파라미터 수정
Hyobeen-Park Aug 30, 2024
b5b99f0
[UI/#204] divider 삭제
Hyobeen-Park Aug 30, 2024
61496e0
[UI/#204] 정렬버튼 컴포넌트 패딩 수정
Hyobeen-Park Aug 30, 2024
e885a11
[UI/#204] 공고 개수 표시 UI 구현
Hyobeen-Park Aug 30, 2024
6318b9a
[UI/#204] theme 색상 추가
Hyobeen-Park Aug 30, 2024
edc307f
[UI/#204] domain/type에 enum class 추가
Hyobeen-Park Aug 30, 2024
f67afb8
[UI/#204] string 수정
Hyobeen-Park Aug 30, 2024
356d985
[UI/#204] 필터링 재설정 바텀시트 구현
Hyobeen-Park Aug 30, 2024
b329364
[UI/#204] 필터링 재설정 화면 버튼 색상 수정
Hyobeen-Park Aug 30, 2024
384fe8e
[UI/#204] 바텀시트 관련 로직 수정
Hyobeen-Park Aug 30, 2024
28f8b72
[DELETE/#204] 기존 필터링 재설정 뷰 삭제
Hyobeen-Park Aug 30, 2024
735354d
Merge remote-tracking branch 'origin/develop' into ui/#204-home-view
Hyobeen-Park Sep 6, 2024
ca9f314
[UI/#204] 필터링 정보 표시
Hyobeen-Park Sep 6, 2024
f0ae573
[MOD/#204] enum class 패키지 이동 및 파라미터 수정
Hyobeen-Park Sep 6, 2024
5327a86
[MOD/#204] 곧 마감되는 공고 서버통신 수정
Hyobeen-Park Sep 6, 2024
8a58059
[CHORE/#204] 패키지 이동
Hyobeen-Park Sep 7, 2024
91f8762
Merge remote-tracking branch 'origin/develop' into ui/#204-home-view
Hyobeen-Park Sep 7, 2024
33d3dd3
[REFACTOR/#204] 맞춤 공고 API 수정사항 반영
Hyobeen-Park Sep 7, 2024
76521ad
[CHORE/#204] 근무 기간 enum 수정
Hyobeen-Park Sep 8, 2024
f8718ff
Merge remote-tracking branch 'origin/develop' into ui/#204-home-view
Hyobeen-Park Sep 8, 2024
b3f3efb
[MOD/#204] enum 함수 추가
Hyobeen-Park Sep 8, 2024
a58d6b0
[REFACTOR/#204] 필터링 재설정 API 수정사항 반영
Hyobeen-Park Sep 8, 2024
8a72727
[REFACTOR/#204] 곧 마감 정보 리팩토링
Hyobeen-Park Sep 8, 2024
0907e8a
[CHORE/#204] test style 적용
Hyobeen-Park Sep 8, 2024
aaadc13
[REFACTOR/#204] 곧 마감 공고 로직 수정
Hyobeen-Park Sep 8, 2024
6a02360
[CHORE/#204] 코드 정리
Hyobeen-Park Sep 8, 2024
58b7425
[CHORE/#204] 필터링 인덱스 int로 수정
Hyobeen-Park Sep 9, 2024
631ec67
Merge remote-tracking branch 'origin/develop' into ui/#204-home-view
Hyobeen-Park Sep 9, 2024
1cfe864
[FEAT/#204] 맞춤 공고 스크랩 다이얼로그 연결
Hyobeen-Park Sep 9, 2024
e849735
[FEAT/#204] 곧 마감 공고 스크랩 다이얼로그 연결
Hyobeen-Park Sep 9, 2024
a4b1cab
[DELETE/#204] 기존 홈 뷰 다이얼로그 삭제
Hyobeen-Park Sep 9, 2024
f3ba7bc
[MOD/#204] 데이트피커 수정
Hyobeen-Park Sep 9, 2024
27adb74
[CHORE/#204] string 추출
Hyobeen-Park Sep 9, 2024
2c207d9
[CHORE/#204] 함수 전달 방식 수정
Hyobeen-Park Sep 9, 2024
34f73a8
[CHORE/#204] 색상 수정
Hyobeen-Park Sep 9, 2024
f103667
Merge remote-tracking branch 'origin/develop' into ui/#204-home-view
Hyobeen-Park Sep 9, 2024
ec25157
[FEAT/#204] 버튼 캘린더로 연결
Hyobeen-Park Sep 9, 2024
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

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import com.terning.core.designsystem.theme.Grey400
import com.terning.core.designsystem.theme.TerningMain
import com.terning.core.designsystem.theme.TerningTheme
import com.terning.core.extension.noRippleClickable
import com.terning.core.type.SortBy
import kotlinx.coroutines.launch

@OptIn(ExperimentalMaterial3Api::class)
Expand Down Expand Up @@ -64,7 +65,7 @@ fun SortingBottomSheet(
) {
items(sortByCount) { sortIndex ->
Text(
text = stringResource(id = SortBy.entries[sortIndex].type),
text = stringResource(id = SortBy.entries[sortIndex].sortBy),
style = TerningTheme.typography.button3,
color = if (currentSortBy == sortIndex) TerningMain else Grey400,
textAlign = TextAlign.Start,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.terning.core.designsystem.theme.Grey400
import com.terning.core.designsystem.theme.Grey150
import com.terning.core.designsystem.theme.Grey200
import com.terning.core.designsystem.theme.Grey375
import com.terning.core.designsystem.theme.Grey50
import com.terning.core.designsystem.theme.TerningMain
import com.terning.core.designsystem.theme.TerningSub1
import com.terning.core.designsystem.theme.TerningSub5
import com.terning.core.designsystem.theme.TerningTheme
import com.terning.core.designsystem.theme.White
import com.terning.core.util.NoRippleTheme
Expand All @@ -42,16 +43,16 @@ fun ChangeFilterButton(
val isPressed by interactionSource.collectIsPressedAsState()
val backgroundColor = when {
!isSelected && !isPressed -> White
!isSelected && isPressed -> TerningSub5
else -> TerningMain
!isSelected && isPressed -> Grey50
else -> White
}
val textColor = when {
!isSelected -> Grey400
else -> White
!isSelected -> Grey375
else -> TerningMain
}
val borderColor = when {
!isSelected && !isPressed -> TerningMain
!isSelected && isPressed -> TerningSub1
!isSelected && !isPressed -> Grey150
!isSelected && isPressed -> Grey200
else -> TerningMain
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,43 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.terning.core.R
import com.terning.core.designsystem.component.bottomsheet.SortBy
import com.terning.core.type.SortBy
import com.terning.core.designsystem.theme.Black
import com.terning.core.designsystem.theme.TerningTheme
import com.terning.core.extension.noRippleClickable

@Composable
fun SortingButton(
sortBy: Int = 0,
modifier: Modifier = Modifier,
sortBy: Int = 0,
onCLick: () -> Unit,
) {
Row(
modifier = modifier
.noRippleClickable { onCLick() }
.noRippleClickable(onCLick),
) {
Text(
text = stringResource(
id = SortBy.entries[sortBy].type
id = SortBy.entries[sortBy].sortBy
),
style = TerningTheme.typography.button3,
color = Black,
modifier = modifier
modifier = Modifier
.padding(
top = 6.dp,
bottom = 5.dp,
start = 12.dp,
bottom = 6.dp,
)
)
Image(
painter = painterResource(id = R.drawable.ic_down_18),
contentDescription = stringResource(id = R.string.sort_button_description),
modifier = modifier
.padding(vertical = 5.dp)
.padding(end = 2.dp)
modifier = Modifier
.padding(
start = 2.dp,
end = 2.dp,
top = 6.dp,
bottom = 4.dp,
)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import androidx.compose.ui.graphics.Color

// Grey Scale
val White = Color(0xFFFFFFFF)
val Grey50 = Color(0xFFFCFCFC)
val Grey100 = Color(0xFFF5F5F5)
val Grey150 = Color(0xFFE9E9E9)
val Grey200 = Color(0xFFDDDDDD)
Expand Down
24 changes: 24 additions & 0 deletions core/src/main/java/com/terning/core/type/Grade.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.terning.core.type

import androidx.annotation.StringRes
import com.terning.core.R

enum class Grade(
val stringValue: String,
@StringRes val stringResId: Int,
) {
FRESHMAN("freshman", R.string.change_filter_grade_1),
SOPHOMORE("sophomore", R.string.change_filter_grade_2),
JUNIOR("junior", R.string.change_filter_grade_3),
SENIOR("senior", R.string.change_filter_grade_4);

companion object {
fun fromString(value: String?): Grade = when (value) {
"freshman" -> FRESHMAN
"sophomore" -> SOPHOMORE
"junior" -> JUNIOR
"senior" -> SENIOR
else -> FRESHMAN
}
Comment on lines +15 to +22
Copy link
Member

Choose a reason for hiding this comment

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

단순 궁금증인데 value 값이 nullable인 이유가 궁금해요..!

Copy link
Member Author

Choose a reason for hiding this comment

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

사용자 필터링 정보가 없을 때 null로 저장이 돼서 nullable하게 만들었습니다!! null 처리를 screen에서 하니까 코드가 너무 복잡해지더라구요😅

}
}
15 changes: 15 additions & 0 deletions core/src/main/java/com/terning/core/type/SortBy.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.terning.core.type

import androidx.annotation.StringRes
import com.terning.core.R

enum class SortBy(
@StringRes val sortBy: Int,
val type: String,
) {
EARLIEST(R.string.sort_by_earliest, "deadlineSoon"),
SHORTEST(R.string.sort_by_shortest, "shortestDuration"),
LONGEST(R.string.sort_by_longest, "longestDuration"),
SCRAP(R.string.sort_by_scrap, "mostScrapped"),
VIEW_COUNT(R.string.sort_by_view_count, "mostViewed"),
}
22 changes: 22 additions & 0 deletions core/src/main/java/com/terning/core/type/WorkingPeriod.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.terning.core.type

import androidx.annotation.StringRes
import com.terning.core.R

enum class WorkingPeriod(
val stringValue: String,
@StringRes val stringResId: Int,
) {
SHORT("short", R.string.change_filter_period_1),
MIDDLE("middle", R.string.change_filter_period_2),
LONG("long", R.string.change_filter_period_3);

companion object {
fun fromString(value: String?): WorkingPeriod = when (value) {
"short" -> SHORT
"middle" -> MIDDLE
"long" -> LONG
else -> SHORT
}
}
}
14 changes: 14 additions & 0 deletions core/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,18 @@
<string name="sign_up_helper_available">사용 가능한 이름이에요</string>
<string name="sign_up_helper_out">이름은 12자리 이내로 설정해 주세요</string>

<!--ChangeFilter-->
<string name="change_filter_top_bar_title">필터링 재설정</string>
<string name="change_filter_grade_title">재학 상태</string>
<string name="change_filter_save">저장하기</string>
<string name="change_filter_grade_1">1학년</string>
<string name="change_filter_grade_2">2학년</string>
<string name="change_filter_grade_3">3학년</string>
<string name="change_filter_grade_4">4학년</string>
<string name="change_filter_period_title">희망 근무 기간</string>
<string name="change_filter_period_1">1개월 ~ 3개월</string>
<string name="change_filter_period_2">4개월 ~ 6개월</string>
<string name="change_filter_period_3">7개월 이상</string>
<string name="change_filter_start_work_title">근무 시작 시기</string>

</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ import com.terning.data.dto.NonDataBaseResponse
import com.terning.data.dto.request.ChangeFilterRequestDto
import com.terning.data.dto.response.HomeFilteringInfoResponseDto
import com.terning.data.dto.response.HomeRecommendInternResponseDto
import com.terning.data.dto.response.HomeTodayInternResponseDto
import com.terning.data.dto.response.HomeUpcomingInternResponseDto

interface HomeDataSource {
suspend fun getTodayIntern(): BaseResponse<List<HomeTodayInternResponseDto>>
suspend fun getUpcomingIntern(): BaseResponse<List<HomeUpcomingInternResponseDto>>

suspend fun getRecommendIntern(
sortBy: String,
startYear: Int,
startMonth: Int
): BaseResponse<List<HomeRecommendInternResponseDto>>
): BaseResponse<HomeRecommendInternResponseDto>

suspend fun getFilteringInfo(): BaseResponse<HomeFilteringInfoResponseDto>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,21 @@ import com.terning.data.dto.NonDataBaseResponse
import com.terning.data.dto.request.ChangeFilterRequestDto
import com.terning.data.dto.response.HomeFilteringInfoResponseDto
import com.terning.data.dto.response.HomeRecommendInternResponseDto
import com.terning.data.dto.response.HomeTodayInternResponseDto
import com.terning.data.dto.response.HomeUpcomingInternResponseDto
import com.terning.data.service.HomeService
import javax.inject.Inject

class HomeDataSourceImpl @Inject constructor(
private val homeService: HomeService,
) : HomeDataSource {
override suspend fun getTodayIntern(): BaseResponse<List<HomeTodayInternResponseDto>> =
homeService.getHomeTodayIntern()
override suspend fun getUpcomingIntern(): BaseResponse<List<HomeUpcomingInternResponseDto>> =
homeService.getHomeUpcomingIntern()

override suspend fun getRecommendIntern(
sortBy: String,
startYear: Int,
startMonth: Int
): BaseResponse<List<HomeRecommendInternResponseDto>> =
): BaseResponse<HomeRecommendInternResponseDto> =
homeService.getRecommendIntern(
sortBy = sortBy,
startYear = startYear,
Expand All @@ -30,6 +30,6 @@ class HomeDataSourceImpl @Inject constructor(
override suspend fun getFilteringInfo(): BaseResponse<HomeFilteringInfoResponseDto> =
homeService.getFilteringInfo()

override suspend fun putFilteringInfo(request: ChangeFilterRequestDto): NonDataBaseResponse =
homeService.putFilteringInfo(request)
override suspend fun putFilteringInfo(changeFilterRequestDto: ChangeFilterRequestDto): NonDataBaseResponse =
homeService.putFilteringInfo(changeFilterRequestDto)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,30 @@ import kotlinx.serialization.Serializable

@Serializable
data class HomeRecommendInternResponseDto(
@SerialName("scrapId")
val scrapId: Long?,
@SerialName("intershipAnnouncementId")
val internshipAnnouncementId: Long,
@SerialName("title")
val title: String,
@SerialName("dDay")
val dDay: String,
@SerialName("deadline")
val deadline: String,
@SerialName("workingPeriod")
val workingPeriod: String,
@SerialName("startYearMonth")
val startYearMonth: String,
@SerialName("companyImage")
val companyImage: String,
@SerialName("isScrapped")
val isScrapped: Boolean,
)
@SerialName("totalCount")
val totalCount: Int,
@SerialName("result")
val result: List<Result>
) {
@Serializable
data class Result(
@SerialName("intershipAnnouncementId")
val internshipAnnouncementId: Long,
@SerialName("title")
val title: String,
@SerialName("dDay")
val dDay: String,
@SerialName("deadline")
val deadline: String,
@SerialName("workingPeriod")
val workingPeriod: String,
@SerialName("startYearMonth")
val startYearMonth: String,
@SerialName("companyImage")
val companyImage: String,
@SerialName("isScrapped")
val isScrapped: Boolean,
@SerialName("color")
val color: String?,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class HomeTodayInternResponseDto(
@SerialName("scrapId")
val scrapId: Long,
data class HomeUpcomingInternResponseDto(
@SerialName("internshipAnnouncementId")
val internshipAnnouncementId: Long,
@SerialName("companyImage")
Expand All @@ -19,9 +17,10 @@ data class HomeTodayInternResponseDto(
val deadline: String,
@SerialName("workingPeriod")
val workingPeriod: String,
@SerialName("isScrapped")
val isScrapped: Boolean,
@SerialName("color")
val color: String,
@SerialName("startYearMonth")
val startYearMonth: String,

)
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,14 @@ import com.terning.domain.entity.home.HomeRecommendIntern

fun HomeRecommendInternResponseDto.toHomeRecommendInternList(): HomeRecommendIntern =
HomeRecommendIntern(
scrapId = this.scrapId,
totalCount = this.totalCount,
homeRecommendInternDetail = this.result.map {
it.toHomeRecommendInternDetail()
}
)

fun HomeRecommendInternResponseDto.Result.toHomeRecommendInternDetail(): HomeRecommendIntern.HomeRecommendInternDetail =
HomeRecommendIntern.HomeRecommendInternDetail(
internshipAnnouncementId = this.internshipAnnouncementId,
title = this.title,
dDay = this.dDay,
Expand All @@ -14,4 +21,5 @@ fun HomeRecommendInternResponseDto.toHomeRecommendInternList(): HomeRecommendInt
startYearMonth = this.startYearMonth,
companyImage = this.companyImage,
isScrapped = this.isScrapped,
)
color = this.color,
)
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.terning.data.mapper.home

import com.terning.data.dto.response.HomeTodayInternResponseDto
import com.terning.domain.entity.home.HomeTodayIntern
import com.terning.data.dto.response.HomeUpcomingInternResponseDto
import com.terning.domain.entity.home.HomeUpcomingIntern

fun HomeTodayInternResponseDto.toHomeTodayInternList(): HomeTodayIntern =
HomeTodayIntern(
scrapId = this.scrapId,
fun HomeUpcomingInternResponseDto.toHomeUpcomingInternList(): HomeUpcomingIntern =
HomeUpcomingIntern(
internshipAnnouncementId = this.internshipAnnouncementId,
companyImage = this.companyImage,
title = this.title,
dDay = this.dDay,
deadline = this.deadline,
workingPeriod = this.workingPeriod,
isScrapped = this.isScrapped,
startYearMonth = this.startYearMonth,
color = this.color,
)
Loading
Loading