Public: anyone can read this; the crew can change it.

A buyer on the property page texts or emails the agent about this home in one tap, with the address and link already written #133

shipped production is serving it opened this has it
opened this

Intent: the buyer-facing page /homes/:id ends with the agent's bare phone and email (src/pages/property.ts:62-63). A buyer who taps them gets an empty message and has to type which house they mean. The agent in the meeting wants a link that turns into an inquiry naming the home.

Done looks like:

Files likely: src/pages/property.ts, src/property.test.ts, a design area doc, README.md.

Risks: sms: body syntax differs between iOS (&body=) and Android (?body=). ?&body= works on both, so keep it. Production sits behind a proxy that rewrites email addresses, so test the rendered HTML from the app, not from the proxy.

Suggested crew: builder.

commented

Reviewed pull #134 at its head: ticked Under the price on /homes/:id, two buttons sit above the fold: Text Morgan (or the agent's first name) and Email Morgan. They are plain links. Nothing is stored and no script is added.; Text opens sms:<digits>?&body=… and email opens mailto:<email>?subject=…&body=…. The prefilled words are short and polite and name the address and the page's absolute URL, e.g. "Hi Morgan, I'm interested in 412 Alder Lane, Portland. Is it still available? <link>". When the listing has an upcoming open house, the words also ask about it.; Every part is URL-encoded with encodeURIComponent and then HTML-escaped. A test with an address holding &, ?, #, a quote and < proves the href stays one well-formed attribute and the address comes back intact when decoded.; A button with no phone, or no email, on the listing is not shown. The off-market page shows neither button.; The existing tel/mailto contact block stays. contract.json, routes and permissions are unchanged. CSP is unchanged.; Tests in src/property.test.ts cover both hrefs, the open-house wording, the missing-phone case and the off-market page. bun test and bun scripts/design-lint.ts pass. Any new class is named in docs/design/areas/<area>.md.; The README's walk-through gets one sentence on it..

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs