Replace per-VC activity indicators with a ref-counted GlobalLoadingManager, and resolve duplicate show/hide calls on Profile, Statistics, and Home tabs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Load role-permission on first visit to drive menus, role-based layout, store card, and location reporting with account-scoped persistence and unit tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align display name, icon, and launch screen with suixinkan_ios_new, and tolerate nested sale_user and empty travel objects in listv2 responses.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add role-based order/deposit lists, AVFoundation QR scanning, verify dialogs, and ViewModel tests so photographers, scenic admins, and store admins match Android behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add role-based analyse APIs, summary/daily UI with date range sheet, and flexible parsing for string refund amounts from the backend.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align app and test targets on nonisolated defaults so ViewModels stay off MainActor by default, and capture the resulting patterns in AGENTS.md.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use content-driven card height with safe area insets so the form no longer stretches to the screen bottom.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce APIClient/AuthAPI, complete login with multi-account selection, and polish the login card UI with shadow and keyboard dismiss.
Co-authored-by: Cursor <cursoragent@cursor.com>
Integrate SnapKit and Kingfisher, add BaseViewController and NotificationName, and streamline AGENTS.md with Android-aligned conventions.
Co-authored-by: Cursor <cursoragent@cursor.com>