From cc2cab5449d1c27b7fc3c61f15ec2a2bd686a85c Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Tue, 8 Sep 2026 13:48:37 -0400 Subject: [PATCH] fix(chat): say "Reply" in the composer hint while replying The composer's hint read "Message" no matter what the field was aimed at, so an empty field under an open reply strip named the wrong action. `fieldPrompt` switches on the composer's mode: "Reply" while replying, "Message" otherwise. Editing keeps "Message" because an edit loads the existing text into the field, so its hint never shows. --- .../Screens/Conversation/ConversationBottomBar.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Flipcash/Core/Screens/Conversation/ConversationBottomBar.swift b/Flipcash/Core/Screens/Conversation/ConversationBottomBar.swift index e0c2a1405..795140fa5 100644 --- a/Flipcash/Core/Screens/Conversation/ConversationBottomBar.swift +++ b/Flipcash/Core/Screens/Conversation/ConversationBottomBar.swift @@ -265,7 +265,7 @@ struct ConversationComposer: View { var body: some View { let field = HStack(alignment: .bottom, spacing: 10) { - TextField("Message", text: $composer.draft, axis: .vertical) + TextField(fieldPrompt, text: $composer.draft, axis: .vertical) .font(.appTextMessage) .foregroundStyle(Color.textMain) .tint(.white) @@ -323,6 +323,15 @@ struct ConversationComposer: View { } } + /// The hint names what the field will send. An edit arrives with the existing text already in + /// the field, so its hint is never on screen and stays the new-message one. + private var fieldPrompt: String { + switch composer.mode { + case .new, .editing: "Message" + case .replying: "Reply" + } + } + /// The confirm button is up for the whole of an edit, as it is in WhatsApp, and only once /// there's text to send otherwise. private var showsSubmit: Bool { composer.isEditing || composer.canSubmit }