From 51b6a26e770809e9d178cd7a4578b05ff0413145 Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Mon, 27 Jul 2026 16:22:24 -0400 Subject: [PATCH] chore(tips): remove profile photo from tip card setup for now Skip the photo-capture step in tip card setup (name -> card directly) and gate the card's avatar behind an includePhoto flag defaulting to off, so no tip card surface (My Tip Card screen or scanned recipient card) renders the profile photo for now. Mirrors Android #1160. The avatar rendering and load paths are kept behind the flag so re-enabling is a one-line change. --- .../Main/Profile/ProfileNameScreen.swift | 4 +++- .../Core/Screens/Main/Tips/TipcardView.swift | 19 +++++++++++++------ .../Core/Screens/Main/Tips/TipsScreen.swift | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Flipcash/Core/Screens/Main/Profile/ProfileNameScreen.swift b/Flipcash/Core/Screens/Main/Profile/ProfileNameScreen.swift index 60d2d984..c6714fa0 100644 --- a/Flipcash/Core/Screens/Main/Profile/ProfileNameScreen.swift +++ b/Flipcash/Core/Screens/Main/Profile/ProfileNameScreen.swift @@ -95,7 +95,9 @@ struct ProfileNameScreen: View { // RPCs — by now the user may have swapped to another sheet, whose // stack has no profile-creation state to mount against. guard !Task.isCancelled, router.presentedSheet?.stack == .tips else { return } - router.push(.profilePhoto) + // The photo-capture step is skipped for now — the card omits the + // profile photo, so setup goes straight from the name to the card. + router.push(.tipcard) } catch ErrorProfile.moderated(let category) { logger.info("Display name moderation denied", metadata: ["category": "\(category)"]) diff --git a/Flipcash/Core/Screens/Main/Tips/TipcardView.swift b/Flipcash/Core/Screens/Main/Tips/TipcardView.swift index 509eb5a8..2c50694b 100644 --- a/Flipcash/Core/Screens/Main/Tips/TipcardView.swift +++ b/Flipcash/Core/Screens/Main/Tips/TipcardView.swift @@ -26,6 +26,11 @@ struct TipcardView: View { /// contrast against different surfaces (share sheet vs. live camera). var tintOpacity: Double = 0.72 + /// The profile photo is intentionally omitted from the card for now, so the + /// avatar is gated off by default. Kept as a flag (rather than deleted) so + /// re-enabling it is a one-line change once the product decision reverts. + var includePhoto: Bool = false + var body: some View { VStack(spacing: 0) { CodeView(data: codeData) @@ -35,12 +40,14 @@ struct TipcardView: View { HStack(spacing: 8) { Text("Tip") - avatarImage - .resizable() - .scaledToFill() - .frame(width: avatarDimension, height: avatarDimension) - .foregroundStyle(Color.textSecondary) - .clipShape(Circle()) + if includePhoto { + avatarImage + .resizable() + .scaledToFill() + .frame(width: avatarDimension, height: avatarDimension) + .foregroundStyle(Color.textSecondary) + .clipShape(Circle()) + } Text(name) .lineLimit(1) diff --git a/Flipcash/Core/Screens/Main/Tips/TipsScreen.swift b/Flipcash/Core/Screens/Main/Tips/TipsScreen.swift index b12873e1..cc3f3f03 100644 --- a/Flipcash/Core/Screens/Main/Tips/TipsScreen.swift +++ b/Flipcash/Core/Screens/Main/Tips/TipsScreen.swift @@ -47,7 +47,7 @@ private struct TipsIntroScreen: View { .multilineTextAlignment(.center) .padding(.top, 32) - Text("Add your name and a picture to receive tips") + Text("Add your name to receive tips") .font(.appTextSmall) .foregroundStyle(Color.textSecondary) .multilineTextAlignment(.center)