Skip to content

Conversation

@pinocchio22
Copy link
Contributor

📌 이슈

✅ 작업 사항

  • 북마크 비었을때 필터UI 제거
  • 도감 / 검색에서 북마크 로그인 분기
  • 도감 메인 / 상세 / 검색 북마크 아이콘 로그인 분기처리

@pinocchio22 pinocchio22 self-assigned this Nov 2, 2025
@pinocchio22 pinocchio22 added feat 새로운 기능을 추가 fix 버그 수정, 잔잔바리 수정, 병합 시 충돌 해결 labels Nov 2, 2025
@pinocchio22 pinocchio22 changed the title Fix/#264 bookmark dictionary UI 북마크 / 도감 UI 수정 Nov 2, 2025
@pinocchio22 pinocchio22 marked this pull request as draft November 2, 2025 16:32
@pinocchio22 pinocchio22 changed the base branch from main to dev November 2, 2025 16:32
@pinocchio22 pinocchio22 linked an issue Nov 2, 2025 that may be closed by this pull request
4 tasks
@gemini-code-assist
Copy link

Summary of Changes

Hello @pinocchio22, 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!

이 Pull Request는 애플리케이션의 핵심 기능을 대폭 확장하고 개선하는 데 중점을 둡니다. 특히 북마크, 도감 정보 표시, 사용자 인증 및 알림 관리와 관련된 백엔드 통합을 심화하고, 사용자 경험을 향상시키기 위한 새로운 UI/UX 플로우를 도입했습니다. 코드베이스 전반에 걸쳐 데이터 모델, API 연동, 비즈니스 로직, 그리고 프레젠테이션 계층에 이르는 광범위한 변경 사항이 포함되어 있으며, 재사용 가능한 컴포넌트와 모듈화를 통해 향후 개발의 효율성을 높였습니다.

Highlights

  • 북마크 기능 개선 및 로그인 연동: 북마크가 비어있을 때 필터 UI를 제거하고, 도감 및 검색 화면에서 북마크 아이콘의 로그인 분기 처리를 구현했습니다. 이는 사용자 로그인 상태에 따라 북마크 기능을 유연하게 제공하기 위함입니다.
  • 새로운 API 엔드포인트 및 데이터 모델 추가: 알림, 북마크, 도감 상세 및 목록, 인증 관련하여 수많은 새로운 API 엔드포인트와 이에 대응하는 DTO(Data Transfer Object), Repository, UseCase가 추가되었습니다. 이는 애플리케이션의 기능 확장을 위한 백엔드 연동을 강화합니다.
  • 온보딩 알림 설정 플로우 도입: 사용자 온보딩 과정에서 알림 권한 및 동의를 처리하는 새로운 플로우가 추가되었습니다. 이는 사용자에게 알림 설정에 대한 명확한 안내와 제어권을 제공합니다.
  • 재사용 가능한 UI 컴포넌트 및 레이아웃 시스템 강화: BaseListView, CharacterInputView와 같은 새로운 기본 UI 컴포넌트와 MyPage, 이미지 선택을 위한 레이아웃 팩토리가 추가되어 UI 일관성을 높이고 코드 중복을 줄였습니다. 기존 CardList, DropDownBox, GuideAlert 등도 기능이 확장되었습니다.
  • SwiftLint 규칙 조정: 코드 가독성 및 유지보수성 향상을 위해 SwiftLint의 라인 길이 및 함수 본문 길이 규칙이 조정되었습니다.
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은 북마크와 도감 기능의 UI 및 로직을 개선하는 데 중점을 두었습니다. 전반적으로 Reactor를 사용하여 상태 관리를 개선하고, 로그인 상태에 따른 분기 처리를 명확하게 한 점이 인상적입니다. 특히 BookmarkListViewController와 관련 파일들의 리팩토링을 통해 코드의 응집도를 높이고 재사용성을 개선한 점이 좋습니다. 몇 가지 잠재적인 문제점과 개선 사항을 리뷰에 남겼으니 확인 부탁드립니다.

Comment on lines +173 to +176
case .dataTapped(let index):
let item = currentState.items[index]
guard let type = item.type.toDictionaryType else { return .empty() }
return .just(.toNavagate(.detail(type, item.originalId)))

Choose a reason for hiding this comment

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

high

dataTapped 액션 처리 시 currentState.items 배열에 index로 직접 접근하고 있습니다. 만약 index가 배열의 범위를 벗어날 경우 앱이 강제 종료될 수 있습니다. 안전한 접근을 위해 인덱스 유효성을 검사하는 로직을 추가하는 것이 좋습니다.

Suggested change
case .dataTapped(let index):
let item = currentState.items[index]
guard let type = item.type.toDictionaryType else { return .empty() }
return .just(.toNavagate(.detail(type, item.originalId)))
case .dataTapped(let index):
guard currentState.items.indices.contains(index) else { return .empty() }
let item = currentState.items[index]
guard let type = item.type.toDictionaryType else { return .empty() }
return .just(.toNavagate(.detail(type, item.originalId)))

Copy link
Contributor Author

Choose a reason for hiding this comment

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

tapped intdex가 items 배열 기반이기떄문에 인덱스 에러 날 경우가 x

mainText: "북마크를 하려면 로그인이 필요해요.",
ctaText: "로그인 하기",
cancelText: "취소",
ctaAction: { print("로그인 화면으로 이동") },

Choose a reason for hiding this comment

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

high

bindBookmarkButton 메서드 내에서 로그인이 필요할 때 표시되는 GuideAlertFactoryctaActionprint문으로 구현되어 있어 실제 로그인 화면으로 이동하지 않습니다. 사용자 경험을 위해 실제 로그인 화면으로 이동하는 로직을 구현해야 합니다.

BookmarkListViewController에서 처리하는 방식과 유사하게 DictionaryDetailBaseViewControllerLoginFactory를 의존성으로 주입받도록 수정하고, ctaAction에서 해당 팩토리를 사용하여 로그인 화면으로 전환하는 것을 권장합니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

수정완료

private let subLabel = UILabel()

private let button = CommonButton(style: .normal, title: "북마크하러 가기", disabledTitle: nil)
public let button = CommonButton(style: .normal, title: " 가기", disabledTitle: nil)

Choose a reason for hiding this comment

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

medium

CommonButton의 초기 타이틀이 "ㅌ 가기"로 설정되어 있습니다. 오타로 보이며, 앱 실행 시 잠시 잘못된 텍스트가 보일 수 있습니다. 이후 updateTitle을 통해 올바른 텍스트로 변경되지만, 초기값도 의미 있는 값(예: "북마크하러 가기")으로 설정하는 것이 좋습니다.

Suggested change
public let button = CommonButton(style: .normal, title: " 가기", disabledTitle: nil)
public let button = CommonButton(style: .normal, title: "북마크하러 가기", disabledTitle: nil)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

수정완료

@pinocchio22 pinocchio22 marked this pull request as ready for review November 12, 2025 12:41
github-actions bot and others added 3 commits November 12, 2025 12:41
…kmark-Dictionary-UI

# Conflicts:
#	MLS/Data/Data/Repository/UserDefaultsRepositoryImpl.swift
#	MLS/Presentation/DictionaryFeature/DictionaryFeature/DictionaryDetail/DictionaryDetailBaseViewController.swift
#	MLS/Presentation/DictionaryFeature/DictionaryFeature/DictionaryDetail/Item/ItemDictionaryDetailViewController.swift
#	MLS/Presentation/DictionaryFeature/DictionaryFeature/DictionaryDetail/Monster/MonsterDictionaryDetailViewController.swift
#	MLS/Presentation/DictionaryFeature/DictionaryFeature/DictionaryList/DictionaryListFactoryImpl.swift
#	MLS/Presentation/DictionaryFeature/DictionaryFeature/DictionaryList/DictionaryListReactor.swift
#	MLS/Presentation/DictionaryFeature/DictionaryFeature/DictionaryList/DictionaryListViewController.swift
#	MLS/Presentation/DictionaryFeature/DictionaryFeature/DictionarySearch/DictionarySearchViewController.swift
@pinocchio22 pinocchio22 merged commit 816623d into dev Nov 13, 2025
@pinocchio22 pinocchio22 deleted the fix/#264-Bookmark-Dictionary-UI branch November 14, 2025 11:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat 새로운 기능을 추가 fix 버그 수정, 잔잔바리 수정, 병합 시 충돌 해결

Projects

None yet

Development

Successfully merging this pull request may close these issues.

북마크 / 도감 UI 수정

2 participants