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

Update v4.0.9 #485

Merged
merged 72 commits into from
Nov 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
9496f5a
[Add] 학기 편집 다이얼로그 ui 추가
nodobi Nov 14, 2024
3c30a83
[Add] 학기 텍스트 string.xml 리소스로 추가
nodobi Nov 14, 2024
66c8993
[fix] 시간표 디테일 수정
Jokwanhee Nov 14, 2024
a110921
[Add] 비로그인 유저 시간표 프레임 가져오는 로직 추가
nodobi Nov 14, 2024
a43f37e
[Add] 클릭한 시간표 정보 TimetableActivity 로 전달하는 로직 추가
nodobi Nov 14, 2024
a8bae9d
[add] TimetableActivityV2 진입점 추가
Jokwanhee Nov 14, 2024
e1cfb3f
[fix] 학부 리스트 수정
Jokwanhee Nov 14, 2024
eb0b96c
[fix] 요청 DTO 변경
Jokwanhee Nov 14, 2024
ebf8330
[fix] 시간표 진입 변경
Jokwanhee Nov 14, 2024
9c4f013
[fix] 요청 DTO 변경
Jokwanhee Nov 15, 2024
79fecd0
[fix] grade 요청 값 0 설정
Jokwanhee Nov 15, 2024
15f679e
[Add] 작업 과정1
nodobi Nov 17, 2024
8f4c971
Merge branch 'develop' into feature/timetable_semester
nodobi Nov 17, 2024
c24e8ec
Merge remote-tracking branch 'origin/feature/timetable_semester' into…
Jokwanhee Nov 17, 2024
8d7a672
[del] GetSemesterUseCase 삭제
Jokwanhee Nov 17, 2024
95af304
[add] 로딩 추가
Jokwanhee Nov 17, 2024
d482740
[add] 로그인 네비게이션 연결
Jokwanhee Nov 17, 2024
6f009f4
[add] 학기 텍스트 추가
Jokwanhee Nov 17, 2024
e5e2850
[fix] noRippleClickable로 변경
Jokwanhee Nov 17, 2024
8786637
[del] import 문 삭제
Jokwanhee Nov 17, 2024
111c343
[fix] snackbar 애니메이션 수정
Jokwanhee Nov 17, 2024
6cdee91
[fix] bottom padding
Jokwanhee Nov 17, 2024
ffc9e40
[add] timetable v2 navigation 연결
Jokwanhee Nov 18, 2024
c20f408
Merge pull request #479 from BCSDLab/release
ThirFir Nov 18, 2024
57a4a15
[Add] 학기 수정 완료시 시간표 이름을 번들에 추가
nodobi Nov 19, 2024
2ef1212
[Fix] 학기 삭제 확인 모달 제대로 안뜨는 문제 수정
nodobi Nov 19, 2024
e699751
[Fix] 학기 추가 시 정렬 안되는 문제 수정, 변수명 정리
nodobi Nov 19, 2024
56299cc
[Fix] 프레임 편집 다이얼로그 제대로 안뜨는거 수정
nodobi Nov 19, 2024
199be65
[Add] 시간표 삭제 되돌리기 기능 추가
nodobi Nov 19, 2024
345c299
[Add] 스낵바 Action 콜백 파라미터 추가
nodobi Nov 19, 2024
3244e11
[Add] 시간표 삭제 되돌리기 스낵바 추가
nodobi Nov 19, 2024
4056cf8
[Add] 시간표 비로그인 유저 대응
nodobi Nov 19, 2024
2b780a2
[Add] TextCheckBox 비활성화 색상 추가
nodobi Nov 19, 2024
b853dc9
[Add] 시간표 편집 다이얼로그 체크박스 비활성화 추가
nodobi Nov 19, 2024
f1e4335
[Fix] 시간표 삭제 스낵바 ui 수정
nodobi Nov 19, 2024
a3f72b4
[Fix] 보여지는 시간표 이름 최대 길이 수정
nodobi Nov 19, 2024
e239bc2
[Fix] TODO 제거
nodobi Nov 20, 2024
3c6da5b
[Add] 학기 추가 에러 메세지 추가
nodobi Nov 20, 2024
1254373
[Add] SemesterSideEffect 추가
nodobi Nov 20, 2024
9440050
[Add] 에러 토스트 추가
nodobi Nov 20, 2024
d64437d
[Fix] 테스트로 변경한 이동 복구
nodobi Nov 20, 2024
d7c691c
Merge remote-tracking branch 'origin/feature/timetable_semester' into…
Jokwanhee Nov 20, 2024
d18347c
[fix] custombarhost
Jokwanhee Nov 20, 2024
569b09a
[fix] 가보자
Jokwanhee Nov 20, 2024
e8a3032
[Add] 학기 -> 시간표 데이터 작업 1
nodobi Nov 20, 2024
faf77ee
[add] loading false
Jokwanhee Nov 20, 2024
de61fdc
[add] 비었을 때, 학기 추가하기 글씨 적용
Jokwanhee Nov 20, 2024
e11dc6f
[Fix] 학기 empty 인 경우 처리
nodobi Nov 20, 2024
ff158f1
[add] empty 처리
Jokwanhee Nov 20, 2024
dfd4b3a
[fix] 빈 학기 로직 수정
Jokwanhee Nov 20, 2024
a52967c
[Fix] 최근 학기 시간표가 반환되지 않는 문제 수정
nodobi Nov 20, 2024
033ce56
[fix] 힘들어 이제
Jokwanhee Nov 20, 2024
572173a
[fix] 찐막
Jokwanhee Nov 20, 2024
2f19411
[fix] default value 수정
Jokwanhee Nov 20, 2024
53ce18a
[fix] 비로그인 시간표 정보 초기화 프로퍼티 추가
Jokwanhee Nov 20, 2024
1c5dbd5
[fix] 시간표 화면 네비게이션 변경
Jokwanhee Nov 22, 2024
fa1d7ca
Merge pull request #474 from BCSDLab/feature/timetable_api_v4
Jokwanhee Nov 22, 2024
e29afb1
add: 키워드 알림 배너 ui 추가
wateralsie Nov 19, 2024
56ff478
add: recyclerview에 키워드 알림 배너 추가
wateralsie Nov 21, 2024
1071391
chore: 네이밍 변경
wateralsie Nov 21, 2024
3d29819
add: 일주일마다 배너 텍스트 변경 구현
wateralsie Nov 22, 2024
1d055ba
add: AB테스트 추가
wateralsie Nov 22, 2024
d033389
add: 키워드 알림 AB테스트, 인기 공지 로깅
wateralsie Nov 23, 2024
d366d74
fix: AB테스트 activity에 제대로 반영 안되는 문제 수정
wateralsie Nov 23, 2024
3d3b65a
add: 키워드 알림 배너 클릭 로깅
wateralsie Nov 23, 2024
fdcb31a
Merge pull request #481 from BCSDLab/feature/keyword-noti-abtest
wateralsie Nov 24, 2024
eabec76
fix: 일주일마다 배너 텍스트 변경이 되지 않는 문제 해결
wateralsie Nov 24, 2024
e2126fc
Update v4.0.8
wateralsie Nov 24, 2024
bd83b62
fix: (최종) 배너 텍스트 일주일마다 변경되지 않는 문제 해결
wateralsie Nov 25, 2024
88b82e3
fix: 무조건적인 초기값 emit 방지
wateralsie Nov 25, 2024
62bc35b
add: 알림 이벤트 카테고리 추가
wateralsie Nov 27, 2024
4536dca
add: 키워드 푸시알림 로깅 추가
wateralsie Nov 27, 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
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ buildscript {
}

extra.apply {
set("versionName", "4.0.7")
set("versionCode", 40007)
set("versionName", "4.0.9")
set("versionCode", 40009)
// 코인 버전 관리

set("versionBusinessName", "1.0.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHost
Expand All @@ -22,6 +20,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
Expand All @@ -32,35 +31,46 @@ import `in`.koreatech.koin.core.designsystem.theme.KoinTheme
@Composable
fun CustomSnackBarHost(
hotState: SnackbarHostState,
radius: Dp = 0.dp,
messageTextStyle: TextStyle = KoinTheme.typography.regular12.copy(
color = Color.White
modifier: Modifier = Modifier,
radius: Dp = 6.dp,

messageTextStyle: TextStyle =KoinTheme.typography.regular14.copy(
color = KoinTheme.colors.neutral0
),
actionLabelTextStyle: TextStyle = KoinTheme.typography.regular12.copy(
color = Color.White
actionLabelTextStyle: TextStyle = KoinTheme.typography.regular14.copy(
color = KoinTheme.colors.sub500
),
background: Color = Color.Black,
background: Color = KoinTheme.colors.primary700,
alignment: Alignment = Alignment.BottomCenter,
paddingValues: PaddingValues = PaddingValues(bottom = 20.dp, start = 10.dp, end = 10.dp),
innerPaddingValues: PaddingValues = PaddingValues(horizontal = 10.dp, vertical = 16.dp)
innerPaddingValues: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 20.dp),
onAction: (() -> Unit)? = null
) {
SnackbarHost(
hostState = hotState,
) { snackbarData ->
SnackBarContent(
messageText = snackbarData.visuals.message,
actionLabelText = snackbarData.visuals.actionLabel ?: "",
radius = radius,
background = background,
messageTextStyle = messageTextStyle,
actionLabelTextStyle = actionLabelTextStyle,
alignment = alignment,
paddingValues = paddingValues,
innerPaddingValues = innerPaddingValues,
onAction = { snackbarData.dismiss() }
)
}
Box(
modifier = modifier
.fillMaxSize()
.padding(paddingValues),
contentAlignment = alignment
) {
SnackbarHost(
hostState = hotState,
) { snackbarData ->
SnackBarContent(
messageText = snackbarData.visuals.message,
actionLabelText = snackbarData.visuals.actionLabel ?: "",
radius = radius,
background = background,
messageTextStyle = messageTextStyle,
actionLabelTextStyle = actionLabelTextStyle,
innerPaddingValues = innerPaddingValues,
onAction = {
onAction?.invoke()
snackbarData.dismiss()
}
)
}

}
}

@Composable
Expand All @@ -76,42 +86,35 @@ private fun SnackBarContent(
actionLabelTextStyle: TextStyle = KoinTheme.typography.regular12.copy(
color = Color.White
),
alignment: Alignment = Alignment.BottomCenter,
paddingValues: PaddingValues = PaddingValues(bottom = 20.dp, start = 10.dp, end = 10.dp),
innerPaddingValues: PaddingValues = PaddingValues(horizontal = 10.dp, vertical = 16.dp),
onAction: () -> Unit = {}
) {
Box(
modifier = modifier
.fillMaxSize()
.padding(paddingValues),
contentAlignment = alignment
.fillMaxWidth()
.clip(RoundedCornerShape(radius))
.background(background)
.padding(innerPaddingValues)
) {
Box(
modifier = modifier
.fillMaxWidth()
.clip(RoundedCornerShape(radius))
.background(background)
.padding(innerPaddingValues)
Row(
verticalAlignment = Alignment.CenterVertically,
) {
Row(
verticalAlignment = Alignment.CenterVertically,
) {
Spacer(modifier = Modifier.width(4.dp))
Spacer(modifier = Modifier.width(4.dp))
Text(
text = messageText,
style = messageTextStyle,
modifier = Modifier.weight(1f),
)
Spacer(modifier = Modifier.weight(0.05f))
if (actionLabelText.isNotEmpty()) {
Text(
text = messageText,
style = messageTextStyle,
modifier = Modifier.weight(1f),
modifier = Modifier
.weight(0.2f)
.noRippleClickable { onAction() },
text = actionLabelText,
style = actionLabelTextStyle,
textAlign = TextAlign.End
)
Spacer(modifier = Modifier.weight(0.05f))
if (actionLabelText.isNotEmpty()) {
Text(
text = actionLabelText,
style = actionLabelTextStyle,
modifier = Modifier.weight(0.1f).noRippleClickable { onAction() }
)
}

}
}
}
Expand Down Expand Up @@ -143,4 +146,4 @@ private fun SnackBarContentPreview() {
messageText = "스낵바 메시지",
actionLabelText = "닫기",
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ enum class Experiment(

BENEFIT_STORE("Benefit", ExperimentGroup.A, ExperimentGroup.B),
DINING_SHARE("campus_share_v1", ExperimentGroup.SHARE_ORIGINAL, ExperimentGroup.SHARE_NEW),
MAIN_DINING_SEE_MORE("c_main_dining_v1", ExperimentGroup.MAIN_DINING_ORIGINAL, ExperimentGroup.MAIN_DINING_NEW);
MAIN_DINING_SEE_MORE("c_main_dining_v1", ExperimentGroup.MAIN_DINING_ORIGINAL, ExperimentGroup.MAIN_DINING_NEW),
MAIN_ARTICLE_KEYWORD_BANNER("c_keyword_ banner_v1", ExperimentGroup.MAIN_BANNER_ORIGINAL, ExperimentGroup.MAIN_BANNER_NEW);

init {
require(experimentGroups.isNotEmpty()) { "Experiment should have at least one group" }
Expand All @@ -23,4 +24,7 @@ object ExperimentGroup {

const val MAIN_DINING_ORIGINAL = "main_dining_original"
const val MAIN_DINING_NEW = "main_dining_new"

const val MAIN_BANNER_ORIGINAL = "banner_original"
const val MAIN_BANNER_NEW = "banner_new"
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,17 @@ object EventLogger {
logEvent(action, EventCategory.SWIPE, label, value, *extras)
}

/**
* 푸시알림 접속 이벤트 로깅
* @param action: 이벤트 발생 도메인(BUSINESS, CAMPUS, USER)
* @param label: 이벤트 소분류
* @param value: 이벤트 값
* @param extras: 추가 이벤트 값
*/
fun logNotificationEvent(action: EventAction, label: String, value: String, vararg extras: EventExtra) {
logEvent(action, EventCategory.NOTIFICATION, label, value, *extras)
}

/**
* @param action: 커스텀 이벤트 발생(EventAction 이외에 action)
* @param category: 커스텀 이벤트 종류(EventCategory 이외에 category)
Expand Down Expand Up @@ -107,7 +118,8 @@ enum class EventAction(val value: String) {
enum class EventCategory(val value: String) {
CLICK("click"),
SCROLL("scroll"),
SWIPE("swipe") // 하단 뒤로가기(아이폰의 swipe 뒤로가기와 대응)
SWIPE("swipe"), // 하단 뒤로가기(아이폰의 swipe 뒤로가기와 대응)
NOTIFICATION("notification")
}

data class EventExtra(val key: String, val value: String)
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ object AnalyticsConstant {

const val CAMPUS_DINING_1 = "CAMPUS_dining_1"
const val CAMPUS_NOTICE_1 = "CAMPUS_notice_1"
const val POPULAR_NOTICE_BANNER = "popular_notice_banner"
const val TO_MANAGE_KEYWORD = "to_manage_keyword"
}

const val PREVIOUS_PAGE = "previous_page"
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions core/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@
<color name="primary_100">#CFF1F9</color>
<!-- Sub -->
<color name="sub_sub500">#F7941E</color>
<color name="sub_sub600">#D47415</color>
<!-- Neutral -->
<color name="neutral_800">#000000</color>
<color name="neutral_700">#1F1F1F</color>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ interface TimetableAuthApi {
): TimetableFrameResponse

@DELETE("/v2/timetables/frame")
suspend fun deleteTimetableFrame()
suspend fun deleteTimetableFrame(
@Query("id") frameId: Int
): Response<Unit>

@GET("/v2/timetables/frames")
suspend fun getTimetableFrames(
Expand All @@ -71,5 +73,7 @@ interface TimetableAuthApi {
): Response<Unit>

@DELETE("/v2/all/timetables/frame")
suspend fun deleteAllTimetableFrame()
suspend fun deleteAllTimetableFrame(
@Query("semester") semester: String,
): Response<Unit>
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ const val BUS_REQUEST_TIME_FORMAT = "HH:mm"

const val STORE_OPEN_TIME_FORMAT = "HH:mm"
const val STORE_CLOSE_TIME_FORMAT = "HH:mm"
const val STORE_UPDATED_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss" // 2018-03-23 20:25:24
const val STORE_UPDATED_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss" // 2018-03-23 20:25:24

const val WEEK_IN_MILLIS = 7 * 24 * 60 * 60 * 1000L
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import `in`.koreatech.koin.data.source.local.ArticleLocalDataSource
import `in`.koreatech.koin.data.source.remote.ArticleRemoteDataSource
import `in`.koreatech.koin.domain.model.article.Article
import `in`.koreatech.koin.domain.model.article.ArticleHeader
import `in`.koreatech.koin.domain.model.article.ArticleNoti
import `in`.koreatech.koin.domain.model.article.ArticlePagination
import `in`.koreatech.koin.domain.model.article.articleNotiContent
import `in`.koreatech.koin.domain.model.user.User
import `in`.koreatech.koin.domain.repository.ArticleRepository
import `in`.koreatech.koin.domain.repository.UserRepository
Expand Down Expand Up @@ -149,6 +151,18 @@ class ArticleRepositoryImpl @Inject constructor(
}
}

override fun fetchKeywordNotiIndex(): Flow<Int> {
return flow {
emit(articleLocalDataSource.fetchKeywordNotiIndex())
}
}

override fun saveKeywordNotiIndex(): Flow<Unit> {
return flow {
emit(articleLocalDataSource.saveKeywordNotiIndex())
}
}

override fun fetchSearchedArticles(
query: String,
boardId: Int,
Expand Down
Loading