110 lines
6.6 KiB
Markdown
110 lines
6.6 KiB
Markdown
|
|
# tryst-profile-editor.screen
|
|||
|
|
|
|||
|
|
The structured profile editor for Tryst — about-me + rates + services + hours + tour cities + photos slot picker. Implements [surface-tryst.brief.md §3, §11](./surface-tryst.brief.md). Extends [brief H §H2](./H-recurring-chores.brief.md) diff-card pattern for tabular fields. Voice: working.
|
|||
|
|
|
|||
|
|
## Layout (full-screen, sectioned and scrollable)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────┐
|
|||
|
|
│ Cancel Edit Tryst profile Preview │ 56pt
|
|||
|
|
├─────────────────────────────────────────────────┤
|
|||
|
|
│ │
|
|||
|
|
│ ─── About-me ─── │
|
|||
|
|
│ ╭───────────────────────────────────────╮ │
|
|||
|
|
│ │ Independent escort based in the Bay │ │
|
|||
|
|
│ │ Area. Trans, femme, real, no rush. │ │
|
|||
|
|
│ ╰───────────────────────────────────────╯ │
|
|||
|
|
│ 432 / 500 ✓ no banned phrases per K2 │
|
|||
|
|
│ │
|
|||
|
|
│ ─── Rates ─── │
|
|||
|
|
│ Incall 1h: [ $400 ] 2h: [ $700 ] │
|
|||
|
|
│ Outcall 1h: [ $500 ] 2h: [ $850 ] │
|
|||
|
|
│ Overnight: [ $2,500 ] │
|
|||
|
|
│ Currency: [ USD ▼ ] │
|
|||
|
|
│ │
|
|||
|
|
│ ─── Services ─── │
|
|||
|
|
│ [☑ GFE] [☑ Companionship] [☐ Couples] │
|
|||
|
|
│ [☑ Tours] [☐ Overnight] [☑ Multi-hour] │
|
|||
|
|
│ (chips from Tryst-side taxonomy) │
|
|||
|
|
│ │
|
|||
|
|
│ ─── Hours ─── │
|
|||
|
|
│ Mon: [ 10:00–02:00 ] Tue: [ closed ] │
|
|||
|
|
│ Wed: [ 12:00–22:00 ] … │
|
|||
|
|
│ │
|
|||
|
|
│ ─── Tour cities (next 14d) ─── │
|
|||
|
|
│ • Berlin (Oct 3–7) · pending publish │
|
|||
|
|
│ [ Edit tours → ] │ routes to H §H3
|
|||
|
|
│ │
|
|||
|
|
│ ─── Photos ─── │
|
|||
|
|
│ [ Manage photos → ] │ routes to tryst-photo-manager
|
|||
|
|
│ │
|
|||
|
|
└─────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Components
|
|||
|
|
|
|||
|
|
| Component | Notes |
|
|||
|
|
|---|---|
|
|||
|
|
| About-me | Free-text with char count + K2 phrase-blocklist check (per [brief K §K2](./K-safety-blocklist.brief.md)). Tabular fields below. |
|
|||
|
|
| Rates | Per-tier numeric inputs with currency picker. Validates positive integers. |
|
|||
|
|
| Services | Multi-select chips from Tryst's fixed taxonomy. |
|
|||
|
|
| Hours | Per-weekday time-range pickers; "closed" toggle per day. |
|
|||
|
|
| Tour cities | Read-only summary; edits route to [H §H3 multi-surface fan-out](./H-recurring-chores.brief.md). |
|
|||
|
|
| Photos | Read-only count; edits route to [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md). |
|
|||
|
|
|
|||
|
|
## States
|
|||
|
|
|
|||
|
|
1. **Loaded (no edits)** — current values shown; Preview disabled, Cancel = Done.
|
|||
|
|
2. **Editing** — at least one field changed; Preview enabled (route to [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md)); Cancel warns "Discard?"
|
|||
|
|
3. **K2 phrase hit** — yellow chip inline: "Your about-me contains 'real name' (per your blocklist). Edit or override?"
|
|||
|
|
4. **Validation error** — rate ≤ 0, time-range invalid, etc. Inline.
|
|||
|
|
5. **Saving (after Preview → Approve)** — banner: "Pushing to Tryst..."
|
|||
|
|
6. **Save success** — sheet dismisses; receipt: "Tryst profile updated. Live in ~2 minutes."
|
|||
|
|
7. **Save failed** — per brief M: banner with retry.
|
|||
|
|
8. **Conflict** (concurrent edit from another device) — per M §M7 3-way diff.
|
|||
|
|
9. **Tryst-side rejection** (photo / phrase / format) — inline error on the affected field.
|
|||
|
|
10. **VoiceOver** — sections read in declared order; rates announce as table rows.
|
|||
|
|
|
|||
|
|
## Interactions
|
|||
|
|
|
|||
|
|
- **Tap any field** → opens its editor.
|
|||
|
|
- **Tap "Preview"** → [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md) with the proposed state.
|
|||
|
|
- **Tap "Edit tours →"** → [tour-leg-detail.screen.md](./tour-leg-detail.screen.md) or H §H3 compose.
|
|||
|
|
- **Tap "Manage photos →"** → [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md).
|
|||
|
|
- **Swipe-down** → "Discard?" if dirty.
|
|||
|
|
|
|||
|
|
## Edge cases
|
|||
|
|
|
|||
|
|
- **Tryst's taxonomy changes** (new service added / removed) — chip set re-pulled at sheet-open; deprecated chips greyed.
|
|||
|
|
- **Currency mismatch** (Quinn's setting says USD but Tryst's market is EUR) — inline warning.
|
|||
|
|
- **K2 blocklist phrase appearing only after edit** — chip pulses to draw attention before save.
|
|||
|
|
- **Multi-tier rate inconsistency** (overnight cheaper than 2h) — inline warning: "Your overnight is less than 2h. Confirm?"
|
|||
|
|
- **Profile too short** (about-me < 50 chars) — Tryst-side rejection; warn before save.
|
|||
|
|
|
|||
|
|
## *Generalization callout*
|
|||
|
|
|
|||
|
|
Other directories' profile editors are structurally similar but with different field sets:
|
|||
|
|
|
|||
|
|
- **TS4Rent**: rates table similar; adds Sumsub-verified-name handling.
|
|||
|
|
- **Slixa**: simpler rates (no incall/outcall split).
|
|||
|
|
- **Eros**: city-tier rates (per neighborhood).
|
|||
|
|
- **OnlyFans**: subscription tiers + PPV pricing (totally different schema; profile-editor variant is much more involved).
|
|||
|
|
|
|||
|
|
Per-surface brief documents the schema; this screen pattern generalizes to *any* tabular profile editor.
|
|||
|
|
|
|||
|
|
## Related
|
|||
|
|
|
|||
|
|
- [surface-tryst.brief.md §3, §11](./surface-tryst.brief.md) — parent.
|
|||
|
|
- [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md) — preview/approve target.
|
|||
|
|
- [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md) — photos sub-editor.
|
|||
|
|
- [Brief H §H2](./H-recurring-chores.brief.md) — diff-card pattern parent.
|
|||
|
|
- [Brief K §K2](./K-safety-blocklist.brief.md) — phrase blocklist enforcement.
|
|||
|
|
- [Brief M §M7](./M-error-degraded-modes.brief.md) — conflict resolution.
|
|||
|
|
- [Brief I](./I-audit-trust-replay.brief.md) — every save = audit row.
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- Photo upload UX (separate screen).
|
|||
|
|
- Tour compose (H §H3 / tour-leg-detail).
|
|||
|
|
- A/B-testing variants of profile copy (P3+).
|