feat(block2): messaging UI — private 1:1 chat (NIP-17)

- MessagesCubit: 1:1 conversation over MessageTransport. Filters the shared
  inbox to the peer; tags our own sends with our pubkey (NIP-17 wraps don't come
  back to the sender) so the UI can align bubbles; degrades gracefully offline.
- ChatScreen (mockup 10): message bubbles (mine right / peer left) + a composer;
  opens a session lazily, shows 'set up sharing' when there's no relay.
- Entry point: a 'Message' button on each offer card (hidden on your own
  listings) → /chat/:pubkey.
- Routing + i18n en/es/pt.

Tests: 5 cubit (send/receive/order/filter/offline) + chat offline + market, green.
This commit is contained in:
vjrj 2026-07-10 10:59:47 +02:00
parent 0dd7c28039
commit efd64c4da4
13 changed files with 627 additions and 9 deletions

View file

@ -342,6 +342,7 @@
"searching": "Buscando por tu zona…",
"empty": "Aún no hay semillas compartidas cerca de ti",
"near": "Cerca de ti",
"contact": "Mensaje",
"configTitle": "Configuración de compartir",
"setupIntro": "Compartir con gente cercana es opcional. Para activarlo, indica tu zona aproximada y únete a una comunidad de confianza — una red de semillas o un colectivo que mantiene un punto de encuentro compartido para pasar mensajes. Sin ninguna empresa en medio.",
"areaLabel": "Tu zona",
@ -358,5 +359,12 @@
"useLocation": "Usar mi ubicación aproximada",
"locationFailed": "No se pudo obtener tu ubicación",
"queued": "Guardado — las compartiremos cuando tengas conexión"
},
"chat": {
"title": "Chat",
"hint": "Escribe un mensaje…",
"send": "Enviar",
"empty": "Aún no hay mensajes — saluda",
"offline": "Configura el compartir para enviar mensajes"
}
}