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

[feat #93] :: 로그인 퍼블리싱 #94

Merged
merged 6 commits into from
Jan 2, 2025

Conversation

parkuiery
Copy link
Member

@parkuiery parkuiery commented Jan 2, 2025

개요

로그인 화면을 퍼블리싱 하였습니다.

Android iOS Desktop

작업사항

추가 로 할 말

Summary by CodeRabbit

  • 새로운 기능

    • 패딩 설정 기능 확장
    • 버튼 컴포넌트 디자인 및 상호작용성 개선
    • 로그인 화면 UI 리디자인
    • 사용자 정보 입력 필드 및 회원가입 액션 추가
  • 버그 수정

    • 버튼 상태 및 색상 관리 최적화
  • 사용자 경험 개선

    • 로그인 화면에 ID 찾기 및 비밀번호 재설정 기능 추가
    • 더욱 직관적이고 상호작용이 용이한 버튼 컴포넌트 제공
    • 텍스트 필드의 상호작용 처리 개선

@parkuiery parkuiery added feat 새로운 기능을 추가 할 경우 refactor 코드 리팩토링 할 경우 labels Jan 2, 2025
@parkuiery parkuiery self-assigned this Jan 2, 2025
@parkuiery parkuiery linked an issue Jan 2, 2025 that may be closed by this pull request
Copy link
Contributor

coderabbitai bot commented Jan 2, 2025

Warning

Rate limit exceeded

@parkuiery has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 18 minutes and 49 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 76463f0 and 98ad627.

📒 Files selected for processing (1)
  • feature/home/src/commonMain/kotlin/team/aliens/dms/kmp/feature/home/ui/HomeScreen.kt (1 hunks)

Walkthrough

이 풀 리퀘스트는 UI 컴포넌트의 패딩 및 버튼 스타일링을 개선하는 세 가지 주요 파일의 변경 사항을 포함합니다. PaddingDefaults.kt에서는 새로운 시작 및 끝 패딩 확장 함수를 추가하고, DmsButton.kt에서는 버튼 구성을 더욱 유연하게 만들었으며, SignInScreen.kt에서는 로그인 화면의 사용자 경험을 향상시키는 새로운 컴포저블 함수를 도입했습니다.

Changes

파일 변경 요약
core/common/.../PaddingDefaults.kt - startPadding()endPadding() 확장 함수 추가
core/design-system/.../DmsButton.kt - DmsButtonBasicButton 함수 서명 업데이트
- 배경색, 테두리색, 버튼 유형 파라미터 추가
feature/signin/.../SignInScreen.kt - UserInformationInputs 컴포저블 추가
- SignupActions 컴포저블 추가
- 로그인 화면 UI 개선
core/design-system/.../DmsTextField.kt - TextField 함수에 interactionSource 파라미터 추가

Sequence Diagram

sequenceDiagram
    participant User
    participant SignInScreen
    participant UserInput
    participant Button
    
    User->>SignInScreen: 로그인 화면 접근
    SignInScreen->>UserInput: 아이디/비밀번호 입력
    UserInput-->>SignInScreen: 입력 데이터
    SignInScreen->>Button: 버튼 상태 확인
    Button-->>SignInScreen: 버튼 활성화/비활성화
    User->>Button: 클릭
    Button->>SignInScreen: 로그인 처리
Loading

Possibly related PRs

Poem

🐰 패딩과 버튼의 춤

코드의 숲에 새 기능이 피어나고
확장 함수들이 경쾌하게 춤을 추네
사용자 경험, 한 단계 더 높이
토끼의 눈빛으로 UI를 바라보며
기술의 아름다움을 노래하네! 🎨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (4)
core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/button/DmsButton.kt (2)

133-134: 비활성화(disabled) 상태 색상 재확인
primaryContainer를 비활성화 상태에 적용했을 때, 배경과의 대비가 적절한지 확인이 필요합니다.


346-346: 키보드 상태별 버튼 외형 변경
키보드가 나타날 때 버튼 모양을 달리 처리하는 점이 특이하고 유용하지만, 사용자 혼동 여지가 있으니 주의하시기 바랍니다.

feature/signin/src/commonMain/kotlin/team/aliens/dms/kmp/feature/signin/ui/SignInScreen.kt (2)

98-98: 마무리 여백 혹은 추가 구성 가능성
90줄대 이후에 Spacer나 다른 레이아웃 요소로 추가 조정이 가능해 보입니다.


157-157: 추가 Composable 분리 안내
추가적인 기능이 있다면 별도 함수로 분리하여 가독성을 더욱 높일 수 있습니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 10491bf and 3230151.

📒 Files selected for processing (3)
  • core/common/src/commonMain/kotlin/team/aliens/dms/kmp/core/common/ui/PaddingDefaults.kt (1 hunks)
  • core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/button/DmsButton.kt (5 hunks)
  • feature/signin/src/commonMain/kotlin/team/aliens/dms/kmp/feature/signin/ui/SignInScreen.kt (2 hunks)
🔇 Additional comments (31)
core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/button/DmsButton.kt (9)

125-126: Primary 버튼에서 텍스트와 테두리에 secondary 색상 적용
버튼이 활성 상태일 때 secondary 색상을 사용해 시각적으로 명확해졌습니다. 다른 버튼 컬러와의 일관성을 함께 검토하시면 좋겠습니다.


129-130: Pressed 상태에서 onSecondaryContainer 사용
onSecondaryContainer 색상이 pressed 상태에서 충분히 대비되는지 UI 테스트가 필요해 보입니다.


319-319: backgroundColor 파라미터 도입
버튼 배경색을 외부에서 주입 가능하게 하여, 다양한 색상 사용이 가능해졌습니다.


322-323: borderColor 및 buttonType 파라미터 추가
테두리 색상과 버튼 유형을 상세히 지정할 수 있어 커스텀이 용이합니다.


350-357: Outlined 버튼 분기 처리 적절
Outlined 버튼일 때만 border를 적용하는 것이 명확하여 유지보수에 용이합니다.


364-364: 콘텐츠 중앙 정렬 확인
contentAlignment가 중앙에 설정되어 시인성이 좋습니다.


424-424: 기존 로직과의 연동성 확인
backgroundColor가 상단에서 계산된 값을 그대로 적용받아 일관성이 유지됩니다.


427-428: buttonType과 borderColor 파라미터 동기화
버튼 타입에 따른 테두리 로직 처리가 명확하므로, 유지보수 시 혼동이 줄어듭니다.


433-438: 버튼 내부 텍스트 스타일 설정
padding, 스타일, 색상, 밑줄 여부가 버튼 상태에 맞춰 적용되어 일관된 UI를 제공합니다.

core/common/src/commonMain/kotlin/team/aliens/dms/kmp/core/common/ui/PaddingDefaults.kt (2)

18-19: startPadding 함수 추가
스타트 방향에만 패딩을 줄 수 있어 레이아웃 제어가 한층 유연해졌습니다.


20-21: endPadding 함수 추가
엔드 방향에 패딩 적용이 가능해져 가로 레이아웃 구성 시 정확도가 높아집니다.

feature/signin/src/commonMain/kotlin/team/aliens/dms/kmp/feature/signin/ui/SignInScreen.kt (20)

4-5: 클릭 가능한 영역 추가
clickable을 통해 특정 텍스트나 아이콘을 터치 가능하게 개선되었습니다.


7-8: Row 사용으로 수평 레이아웃 활용
안정적인 가로 방향 배치 구성이 가능해졌습니다.


10-11: fillMaxWidth 활용
가로 공간을 전부 활용해서 배치를 쉽게 조정할 수 있습니다.


12-14: 여백 지정으로 UI 간격 조절
padding, height 등을 활용하여 요소 간 거리가 명확해졌습니다.


18-18: Composable 내 collectAsState 사용
ViewModel의 상태를 실시간으로 수신하여 UI 반영이 깔끔합니다.


20-20: Alignment 선언
수직 정렬 옵션이 명시되어 있어 레이아웃 파악이 수월합니다.


22-26: 새로운 UI 패딩 함수 활용
startPadding, endPadding 등을 통해 양옆 여백을 세밀하게 조정함으로써 디자인 품질이 향상됩니다.


27-31: DmsButton 관련 Import
ButtonColor, ButtonType 등 다양하게 관리되어, UI 확장성이 높습니다.


33-35: 텍스트, 텍스트필드 사용 준비
DmsText, DmsTextField를 적절히 가져오며 공통 디자인 시스템을 잘 활용합니다.


71-72: DmsTopAppBar 추가
상단 앱 바로 화면 타이틀을 명시해 UX 가이드에 부합합니다.


73-76: DmsSymbol 배치
로고나 심볼로 식별성을 높여 브랜드 경험을 개선할 수 있습니다.


77-85: UserInformationInputs 호출
계정 정보 입력을 캡슐화한 컴포저블을 활용해 재사용성과 가독성을 높였습니다.


86-86: Spacer로 가변 공간 확보
UI 구성 시 배치 여유를 나타낼 수 있어 유용합니다.


87-87: 회원가입 유도 섹션 배치
하단에 SignupActions를 배치해 자연스러운 회원가입 유도 동선을 만듭니다.


88-97: 로그인 버튼 구현
버튼 유형, 색상, 클릭 시점이 모두 명확히 정의되어 있으며, state.buttonEnabled로 활성 상태를 제어합니다.


99-99: Column 맞춤 종료
Column 블록이 명확하게 끝나며 가독성이 좋습니다.


100-100: 다음 Composable 정의 전 구분
화면 관련 Composable이 단계적으로 구분되어 있습니다.


101-110: UserInformationInputs 시그니처
ID와 비밀번호 입력 콜백을 분리해 확장성을 높였으며, 찾기/재설정 기능도 별도 콜백으로 제공됩니다.


111-156: UserInformationInputs 내부 구성
TextField, 클릭 가능한 Text, Divider 등을 모아 한 컴포넌트로 유지하여 화면 구성이 깔끔해졌습니다.


158-181: SignupActions 구현
회원가입 유도 UI를 독립된 Composable로 정의하여 재사용성과 유지보수성을 확보했습니다.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
feature/signin/src/commonMain/kotlin/team/aliens/dms/kmp/feature/signin/ui/SignInScreen.kt (2)

121-121: 오타 수정 필요

"비빌번호"를 "비밀번호"로 수정해야 합니다.

-            hint = "비빌번호",
+            hint = "비밀번호",

129-150: 접근성 개선 제안

클릭 가능한 텍스트에 대한 접근성을 개선하기 위해 다음 사항을 고려해 주세요:

  • 시맨틱 의미를 가진 컴포넌트 사용 (예: Button)
  • 터치 영역 확장
  • 클릭 피드백 추가
-            DmsText(
-                modifier = Modifier.clickable(
-                    onClick = onFindId,
-                ),
+            DmsText(
+                modifier = Modifier
+                    .padding(vertical = 8.dp)  // 터치 영역 확장
+                    .clickable(
+                        onClick = onFindId,
+                        indication = rememberRipple(),  // 클릭 피드백
+                    ),
core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/button/DmsButton.kt (1)

351-359: Border 로직 모듈화 제안

Outlined 버튼의 테두리 스타일링 로직을 재사용 가능한 확장 함수로 분리하면 코드의 가독성과 재사용성이 향상될 것 같습니다.

+ private fun Modifier.outlinedBorder(
+     enabled: Boolean,
+     shape: Shape,
+     borderColor: Color
+ ) = then(
+     if (enabled) {
+         Modifier.border(1.dp, borderColor, shape)
+     } else {
+         Modifier
+     }
+ )

- .then(
-     if (buttonType == ButtonType.Outlined) {
-         Modifier.border(
-             1.dp,
-             color = borderColor,
-             shapeByKeyboardShow,
-         )
-     } else {
-         Modifier
-     },
- )
+ .outlinedBorder(
+     enabled = buttonType == ButtonType.Outlined,
+     shape = shapeByKeyboardShow,
+     borderColor = borderColor
+ )
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3230151 and 76463f0.

📒 Files selected for processing (3)
  • core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/button/DmsButton.kt (5 hunks)
  • core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/textfield/DmsTextField.kt (0 hunks)
  • feature/signin/src/commonMain/kotlin/team/aliens/dms/kmp/feature/signin/ui/SignInScreen.kt (2 hunks)
💤 Files with no reviewable changes (1)
  • core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/textfield/DmsTextField.kt
🔇 Additional comments (4)
feature/signin/src/commonMain/kotlin/team/aliens/dms/kmp/feature/signin/ui/SignInScreen.kt (2)

68-95: 레이아웃 구조가 잘 구성되어 있습니다!

  • 상단 앱바, 로고, 입력 필드, 하단 버튼의 배치가 Material Design 가이드라인을 잘 따르고 있습니다.
  • Spacer를 사용한 flexible spacing이 적절합니다.

155-178: 회원가입 섹션이 깔끔하게 구현되었습니다!

레이아웃과 텍스트 스타일링이 일관성 있게 적용되었습니다.

core/design-system/src/commonMain/kotlin/team/aliens/dms/kmp/core/designsystem/button/DmsButton.kt (2)

124-133: 버튼 색상 변경이 적절합니다!

Primary 버튼의 Outlined 상태에서 색상을 secondary로 변경한 것이 더 나은 대비를 제공합니다.


436-442: 텍스트 스타일링이 잘 구현되었습니다!

버튼 타입에 따른 텍스트 스타일과 장식이 적절하게 처리되었습니다.

Comment on lines +80 to +81
onFindId = {},
onResetPassword = {},
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Codebase verification

네비게이션 콜백이 구현되지 않음

SignInScreen에서 사용되는 onFindIdonResetPassword 콜백이 상위 컴포넌트인 AuthNavigation에서 빈 람다로 구현되어 있습니다. 이는 아이디 찾기와 비밀번호 재설정 기능이 아직 구현되지 않았음을 의미합니다.

다음 위치에서 네비게이션 구현이 필요합니다:

  • composeApp/src/commonMain/kotlin/team/aliens/dms/kmp/navigation/authorized/AuthNavigation.ktnavigateToFindIdnavigateToFindPassword 콜백
🔗 Analysis chain

빈 콜백 함수 구현 필요

onFindIdonResetPassword 콜백이 비어 있습니다. 이는 사용자가 ID 찾기나 비밀번호 재설정 버튼을 클릭했을 때 아무런 동작이 없다는 것을 의미합니다.


Let me check if there are any navigation-related implementations for these callbacks.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if these callbacks are implemented elsewhere
rg "onFindId|onResetPassword" -A 5

Length of output: 3258


Script:

#!/bin/bash
# Check for navigation-related implementations
rg "navigateTo.*(?i)(findid|resetpassword|password)" -A 5

Length of output: 11150

@parkuiery parkuiery merged commit a7ce323 into develop Jan 2, 2025
2 of 5 checks passed
@parkuiery parkuiery deleted the feature/93-feat-로그인-퍼블리싱 branch January 2, 2025 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat 새로운 기능을 추가 할 경우 refactor 코드 리팩토링 할 경우
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

[Feat]: 로그인 퍼블리싱
1 participant