Skip to content

Conversation

@stopstone
Copy link
Contributor

작업 내용

  • 바텀시트에서 설정한 주기에 따라 날짜가 변경되지 않는 현상을 수정하였습니다.
  • 매일 매주 2주 매달 6개월에 따라 주기를 확인할 수 있습니다.
  • NearBottomSheet를 분리하여 바텀시트를 공통화 하였습니다.

확인 방법

NearBottomSheet
friendcontactcycle/CycleSettingBottomSheet
friendprofileeditor/CycleSettingBottomSheet

참고 사항

friendprofileedittor의
프로필 수정의 연락 주기에 표시되는
매주, 2주는 요일
매달 6개월은 13일 같은 일자로 표기해야하는지 코멘트 받은 후 수정하면 좋을 것 같습니다!

관련 이슈

- 기존에 '매주'로 고정되어 있던 주기 설정 바텀 시트의 텍스트를 `selectedInterval` 값에 따라 '매주', '2주마다', '매달'로 동적으로 변경되도록 수정했습니다.
- `DateExtension.getCycleText()`를 사용하여 선택된 주기에 맞는 텍스트를 가져오도록 구현했습니다.
- 주기 텍스트에서 요일 부분에만 다른 스타일이 적용되도록 로직을 개선했습니다.
- 재사용 가능한 `NearBottomSheet` 컴포posable을 구현했습니다.
- 기존 `FriendProfileEditor` 화면에서만 사용하던 `ReminderIntervalBottomSheet`를 삭제했습니다.
- 여러 화면에서 재사용 가능하도록 `CycleSettingBottomSheet`라는 이름의 공용 컴포넌트를 새로 만들었습니다.
- 새로운 BottomSheet는 상태 관리를 개선하고, 선택된 주기에 따라 미리보기 UI가 동적으로 변경되도록 수정했습니다.
- `FriendProfileEditorScreen`에서 기존 BottomSheet를 새로운 `CycleSettingBottomSheet`로 교체 적용했습니다.
- `CycleSettingBottomSheet` 컴포넌트에서 "다음 연락 주기:" 접두사와 날짜 사이에 공백을 추가하여 가독성을 개선했습니다.
`@Preview` 어노테이션을 사용하여 `NearBottomSheet` 컴포저블의 미리보기를 추가했습니다.
- NearBottomSheet 핸들러의 모서리 둥글기 값을 100.dp에서 2.5.dp로 수정했습니다.
@stopstone stopstone linked an issue Nov 12, 2025 that may be closed by this pull request
@gemini-code-assist
Copy link

Summary of Changes

Hello @stopstone, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 연락처 주기 설정 바텀시트에서 선택된 주기에 따라 날짜가 올바르게 업데이트되지 않던 버그를 해결합니다. 또한, NearBottomSheet라는 공통 컴포넌트를 도입하여 바텀시트 구현을 대대적으로 리팩토링함으로써 애플리케이션 전반의 재사용성과 유지보수성을 향상시켰습니다.

Highlights

  • 날짜 형식 수정: 연락처 주기 설정 바텀시트에서 선택된 주기에 따라 날짜가 올바르게 변경되지 않던 문제를 수정했습니다.
  • 바텀시트 공통화: NearBottomSheet 컴포넌트를 분리하여 바텀시트 로직을 공통화하고 재사용성을 높였습니다.
  • UI 개선: 친구 프로필 편집 화면에서 새로운 공통 CycleSettingBottomSheet를 사용하도록 업데이트하고, 사용자 아이콘 및 검색 아이콘 색상, 간격 등 UI 요소를 개선했습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

안녕하세요. 연락처 주기 설정 바텀시트 리팩토링 및 기능 개선 PR 잘 보았습니다. 공통 NearBottomSheet 컴포넌트를 추출하여 코드 재사용성을 높이고, 바텀시트에서 설정한 주기에 따라 날짜가 올바르게 표시되도록 수정한 점이 인상적입니다. 전반적으로 코드 품질을 향상시키는 좋은 변경이라고 생각합니다. 몇 가지 추가 개선을 위해 아래와 같이 리뷰 코멘트를 남깁니다. 중복 파일 제거, 컴포넌트 API 개선, 그리고 사소한 문자열 처리 오류에 대한 내용입니다. 확인 부탁드립니다.

@@ -0,0 +1,210 @@
package com.alarmy.near.presentation.feature.friendprofileedittor.component

Choose a reason for hiding this comment

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

high

이 파일은 friendcontactcycle 기능에 있는 CycleSettingBottomSheet.kt와 내용이 완전히 동일합니다. FriendProfileEditorScreen에서는 friendcontactcycleCycleSettingBottomSheet를 이미 사용하고 있으므로, 이 파일은 중복된 코드로 보입니다. 코드 중복을 피하고 유지보수성을 높이기 위해 이 파일을 삭제하는 것이 좋겠습니다.

Comment on lines 132 to 136
stringResource(R.string.friend_contact_cycle_next_cycle_prefix) + " " +
(
selectedInterval?.let { DateExtension.getNextCycleDate(it) }
?: DateExtension.getNextWeekSameDay()
),

Choose a reason for hiding this comment

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

medium

R.string.friend_contact_cycle_next_cycle_prefix 리소스 문자열("다음 주기 : ") 끝에 공백이 포함되어 있습니다. 코드에서 + " "를 사용하여 공백을 추가로 연결하고 있어, 결과적으로 "다음 주기 : "와 같이 두 개의 공백이 생기게 됩니다. 불필요한 공백을 제거하기 위해 코드에서 + " " 부분을 삭제하는 것이 좋겠습니다.

Suggested change
stringResource(R.string.friend_contact_cycle_next_cycle_prefix) + " " +
(
selectedInterval?.let { DateExtension.getNextCycleDate(it) }
?: DateExtension.getNextWeekSameDay()
),
stringResource(R.string.friend_contact_cycle_next_cycle_prefix) +
(
selectedInterval?.let { DateExtension.getNextCycleDate(it) }
?: DateExtension.getNextWeekSameDay()
),

Copy link
Contributor Author

@stopstone stopstone Nov 12, 2025

Choose a reason for hiding this comment

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

리소스 마지막 공백을 받아오지 못하고 있어 공백을 추가하였습니다
제가 알기론 Android의 XML 리소스 파서는 기본적으로 trailing whitespace(끝 공백)를 제거하여 공백을 별도로 추가했습니다

isVisible: Boolean,
onDismiss: () -> Unit,
modifier: Modifier = Modifier,
content: @Composable () -> Unit,

Choose a reason for hiding this comment

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

medium

content 파라미터의 타입을 @Composable () -> Unit 대신 @Composable ColumnScope.() -> Unit으로 변경하는 것을 고려해보세요. ModalBottomSheet의 컨텐츠는 이미 ColumnScope 내에서 실행되므로, 이 스코프를 호출자에게 전달하면 Modifier.weight()와 같은 ColumnScope 한정 수정자를 사용할 수 있어 컴포넌트의 유연성과 재사용성이 향상됩니다.

Suggested change
content: @Composable () -> Unit,
content: @Composable ColumnScope.() -> Unit,

- `friendcontactcycle`과 `friendprofileedittor` 피처에서 각각 사용하던 `CycleSettingBottomSheet`를 `ui/component/bottomsheet` 패키지로 이동하여 공용 컴포넌트로 만들었습니다.
- 중복 코드를 제거하고 재사용성을 높였습니다.
Copy link
Contributor

@rhkrwngud445 rhkrwngud445 left a comment

Choose a reason for hiding this comment

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

잘 작업주셨네요!👍 바로 머지해도 될 것 같습니다!

@rhkrwngud445 rhkrwngud445 merged commit c7ed1aa into dev Nov 18, 2025
1 check passed
@rhkrwngud445 rhkrwngud445 deleted the qa/#57-feature-contact-cycle branch November 18, 2025 12:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[QA] 연락처 주기 설정 UI, 기능 QA 반영

3 participants