Skip to content

feat: appstore deployment preparation#676

Merged
tkjftkjf merged 4 commits into
gsainfoteam:developmentfrom
tkjftkjf:tkjftkjf/zga-69
Mar 10, 2026
Merged

feat: appstore deployment preparation#676
tkjftkjf merged 4 commits into
gsainfoteam:developmentfrom
tkjftkjf:tkjftkjf/zga-69

Conversation

@tkjftkjf

@tkjftkjf tkjftkjf commented Mar 9, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • 새 기능
    • 공지 차단 기능 추가: 차단 전 확인 대화상자 표시 및 차단 완료 메시지 제공.
  • 개선사항
    • 다국어 텍스트 업데이트(영어·일본어·한국어·러시아어) — 차단 관련 문구 및 보고 문구 수정.
    • 공지 보고 후와 차단 후에 현재 화면이 닫히도록 동작 개선.
    • iOS 지원 URL 업데이트.

@tkjftkjf tkjftkjf changed the title feat: Appstore Deployment preparation feat: Appstore deployment preparation Mar 9, 2026
@coderabbitai

coderabbitai Bot commented Mar 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

공지 차단 기능 관련 다국어 문자열이 추가되고(notice.block, blockDescription, blocked), 분석 이벤트에 noticeBlock이 등록되었으며, 렌더러에 차단 액션/확인 다이얼로그가 추가되고 보고 플로우가 라우트 종료하도록 수정되었습니다. iOS 지원 URL이 변경되고 리스트 배너 항목이 삭제되었습니다.

Changes

Cohort / File(s) Summary
Internationalization
assets/i18n/en.i18n.json, assets/i18n/jp.i18n.json, assets/i18n/ko.i18n.json, assets/i18n/ru.i18n.json
notice.detailblock, blockDescription, blocked 키 추가. reported(en) 마침표 추가 및 reported(jp) 표현 변경. 러시아어 reportDescription 용어 변경.
iOS Metadata
ios/fastlane/metadata/default/support_url.txt
지원 URL을 https://ziggle.gistory.me에서 https://cs.gistory.me로 변경.
Analytics Event
lib/app/modules/core/data/models/analytics_event.dart
const factory AnalyticsEvent.noticeBlock(int id) = _NoticeBlock 추가.
Notice UI Widgets
lib/app/modules/notices/presentation/widgets/notice_renderer.dart, lib/app/modules/notices/presentation/widgets/list_layout.dart
notice_renderer에 차단 액션 칩 및 확인 다이얼로그 추가, 보고 후 라우트 종료(maybePop) 호출 추가. list_layout에서 배너 항목 제거.

Sequence Diagram(s)

sequenceDiagram
    participant User as User
    participant UI as NoticeRenderer
    participant Dialog as ConfirmationDialog
    participant Analytics as AnalyticsService
    participant Router as Router
    participant Toast as ToastService

    User->>UI: tap "Block" action chip
    UI->>Analytics: log noticeBlock(id)
    UI->>Dialog: show(title, blockDescription)
    Dialog-->>UI: confirm
    UI->>Toast: show("blocked")
    UI->>Router: maybePop()
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐇 제가 훌쩍 뛰어와 말하죠,
공지에 방패 하나 달았어요 🛡️,
여러 말들 번역되어 빛나고,
클릭하면 확인 받고, 조용히 닫히네,
토스트로 좋아요, 토끼가 응원해요 🥕✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive 제목이 변경사항과 부분적으로 관련되어 있습니다. 'appstore deployment preparation'은 일부 변경사항(support URL 업데이트)과는 맞지만, PR의 주요 변경사항인 공지 사항 차단 기능 추가, i18n 문자열 업데이트, 분석 이벤트 추가 등을 충분히 설명하지 못합니다. 제목을 더 구체적으로 수정하여 주요 변경사항을 반영하거나, 공지 차단 기능 추가와 관련된 모든 변경사항을 포함하도록 명확히 해주세요.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@lib/app/modules/notices/presentation/widgets/notice_renderer.dart`:
- Around line 331-352: The block button (_ChipButton) currently only logs
analytics and shows dialogs but lacks an authentication check and any backend
call; add the same auth guard used by the report flow (check
UserBloc.userOrNull(context) and if null show the login prompt/return) before
showing the confirmation dialog, and after confirming dispatch the appropriate
NoticeBloc event (e.g., NoticeBloc.add(BlockNotice(widget.notice.id)) or the
project's existing block event) to perform the API call, await success/failure,
then show success/failure toasts and pop only on success; also keep the
context.mounted checks and include widget.notice.id in the dispatched event for
identification.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 26311a56-29f0-4c81-98eb-8e34afedf376

📥 Commits

Reviewing files that changed from the base of the PR and between e2890f6 and c0393d6.

⛔ Files ignored due to path filters (2)
  • ios/Podfile.lock is excluded by !**/*.lock
  • pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (8)
  • assets/i18n/en.i18n.json
  • assets/i18n/jp.i18n.json
  • assets/i18n/ko.i18n.json
  • assets/i18n/ru.i18n.json
  • ios/fastlane/metadata/default/support_url.txt
  • lib/app/modules/core/data/models/analytics_event.dart
  • lib/app/modules/notices/presentation/widgets/list_layout.dart
  • lib/app/modules/notices/presentation/widgets/notice_renderer.dart
💤 Files with no reviewable changes (1)
  • lib/app/modules/notices/presentation/widgets/list_layout.dart

Comment thread lib/app/modules/notices/presentation/widgets/notice_renderer.dart

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
lib/app/modules/notices/presentation/widgets/notice_renderer.dart (1)

309-326: ⚠️ Potential issue | 🟠 Major

공유 위젯에서의 무조건 maybePop()은 프리뷰 플로우도 닫아버립니다.

NoticeRenderer는 상세 페이지 전용이 아니라 NoticeWritePreviewPage에서도 재사용됩니다. 그래서 Line 326과 Line 354의 context.router.maybePop()은 다이얼로그만 닫는 게 아니라 프리뷰 페이지 자체도 닫아 작성 플로우를 끊습니다. 라우트 종료는 이 위젯 내부에서 고정하지 말고, 상세 페이지에서만 콜백/플래그로 opt-in 하도록 분리하는 편이 안전합니다.

🔧 한 가지 수정 방향
-                      if (result != true || !context.mounted) return;
-                      context.showToast(context.t.notice.detail.reported);
-                      context.router.maybePop();
+                      if (result != true || !context.mounted) return;
+                      context.showToast(context.t.notice.detail.reported);
+                      if (widget.closeAfterModerationAction) {
+                        context.router.maybePop();
+                      }
-                      if (result != true || !context.mounted) return;
-                      context.showToast(context.t.notice.detail.blocked);
-                      context.router.maybePop();
+                      if (result != true || !context.mounted) return;
+                      context.showToast(context.t.notice.detail.blocked);
+                      if (widget.closeAfterModerationAction) {
+                        context.router.maybePop();
+                      }

그리고 NoticeRenderercloseAfterModerationAction(기본값 false) 같은 옵션을 추가하고, 실제로 닫아야 하는 DetailPage에서만 true를 넘기면 됩니다.

Also applies to: 331-357

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/app/modules/notices/presentation/widgets/notice_renderer.dart` around
lines 309 - 326, The share/report buttons in NoticeRenderer call
context.router.maybePop() unconditionally, which closes the preview flow; modify
NoticeRenderer to accept a boolean prop (e.g., closeAfterModerationAction,
default false) and use that flag instead of always calling
context.router.maybePop() inside the _ChipButton onPressed handlers (the report
and share handlers around the existing Navigator.pop and toast logic); update
DetailPage to pass true for closeAfterModerationAction while leaving preview
usages with the default so only the detail page will close the route after the
dialog action.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@lib/app/modules/notices/presentation/widgets/notice_renderer.dart`:
- Around line 309-326: The share/report buttons in NoticeRenderer call
context.router.maybePop() unconditionally, which closes the preview flow; modify
NoticeRenderer to accept a boolean prop (e.g., closeAfterModerationAction,
default false) and use that flag instead of always calling
context.router.maybePop() inside the _ChipButton onPressed handlers (the report
and share handlers around the existing Navigator.pop and toast logic); update
DetailPage to pass true for closeAfterModerationAction while leaving preview
usages with the default so only the detail page will close the route after the
dialog action.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 700a8795-f81b-4a8f-b4e9-1e451c8f220f

📥 Commits

Reviewing files that changed from the base of the PR and between c0393d6 and 41f8f19.

📒 Files selected for processing (1)
  • lib/app/modules/notices/presentation/widgets/notice_renderer.dart

@tkjftkjf tkjftkjf requested a review from a team March 9, 2026 18:32
@rhseung rhseung changed the title feat: Appstore deployment preparation feat: appstore deployment preparation Mar 10, 2026
@tkjftkjf tkjftkjf merged commit 565001e into gsainfoteam:development Mar 10, 2026
5 checks passed
@tkjftkjf tkjftkjf deleted the tkjftkjf/zga-69 branch March 10, 2026 10:19
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.

2 participants