feat(block2): messages inbox + drawer 'Chat' link (was unreachable)
Chat was only reachable via an offer's 'Message' button, and the drawer 'Chat' sat on 'coming soon' — so messaging/trust were effectively hidden. - MessageStore keeps a conversation index (the keystore has no key enumeration) and exposes conversations() — peers newest-active-first with their last line. - ChatListScreen: the messages inbox (tap a conversation → /chat/:pubkey). - Drawer 'Chat' is now a live destination -> /messages (gated like Market). - i18n en/es/pt. conversations() covered by a plain test (no widget hang). Analyzer clean.
This commit is contained in:
parent
6d16656911
commit
7f1c520960
12 changed files with 211 additions and 3 deletions
|
|
@ -361,6 +361,10 @@
|
|||
"locationFailed": "Couldn't get your location — check that location is on and the permission is granted",
|
||||
"queued": "Saved — we'll share these when you're connected"
|
||||
},
|
||||
"chatList": {
|
||||
"title": "Messages",
|
||||
"empty": "No conversations yet. Message someone from the market."
|
||||
},
|
||||
"chat": {
|
||||
"title": "Chat",
|
||||
"hint": "Write a message…",
|
||||
|
|
|
|||
|
|
@ -361,6 +361,10 @@
|
|||
"locationFailed": "No se pudo obtener tu ubicación — comprueba que la ubicación está activada y el permiso concedido",
|
||||
"queued": "Guardado — las compartiremos cuando tengas conexión"
|
||||
},
|
||||
"chatList": {
|
||||
"title": "Mensajes",
|
||||
"empty": "Aún no hay conversaciones. Escribe a alguien desde el mercado."
|
||||
},
|
||||
"chat": {
|
||||
"title": "Chat",
|
||||
"hint": "Escribe un mensaje…",
|
||||
|
|
|
|||
|
|
@ -357,6 +357,10 @@
|
|||
"locationFailed": "Não foi possível obter a tua localização — verifica se a localização está ativa e a permissão concedida",
|
||||
"queued": "Guardado — vamos partilhá-las quando tiveres ligação"
|
||||
},
|
||||
"chatList": {
|
||||
"title": "Mensagens",
|
||||
"empty": "Ainda não há conversas. Escreve a alguém a partir do mercado."
|
||||
},
|
||||
"chat": {
|
||||
"title": "Conversa",
|
||||
"hint": "Escreve uma mensagem…",
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 3
|
||||
/// Strings: 992 (330 per locale)
|
||||
/// Strings: 998 (332 per locale)
|
||||
///
|
||||
/// Built on 2026-07-10 at 10:09 UTC
|
||||
/// Built on 2026-07-10 at 10:26 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ class Translations with BaseTranslations<AppLocale, Translations> {
|
|||
late final Translations$desiccant$en desiccant = Translations$desiccant$en.internal(_root);
|
||||
late final Translations$unit$en unit = Translations$unit$en.internal(_root);
|
||||
late final Translations$market$en market = Translations$market$en.internal(_root);
|
||||
late final Translations$chatList$en chatList = Translations$chatList$en.internal(_root);
|
||||
late final Translations$chat$en chat = Translations$chat$en.internal(_root);
|
||||
late final Translations$trust$en trust = Translations$trust$en.internal(_root);
|
||||
}
|
||||
|
|
@ -1142,6 +1143,21 @@ class Translations$market$en {
|
|||
String get queued => 'Saved — we\'ll share these when you\'re connected';
|
||||
}
|
||||
|
||||
// Path: chatList
|
||||
class Translations$chatList$en {
|
||||
Translations$chatList$en.internal(this._root);
|
||||
|
||||
final Translations _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
|
||||
/// en: 'Messages'
|
||||
String get title => 'Messages';
|
||||
|
||||
/// en: 'No conversations yet. Message someone from the market.'
|
||||
String get empty => 'No conversations yet. Message someone from the market.';
|
||||
}
|
||||
|
||||
// Path: chat
|
||||
class Translations$chat$en {
|
||||
Translations$chat$en.internal(this._root);
|
||||
|
|
@ -1969,6 +1985,8 @@ extension on Translations {
|
|||
'market.useLocation' => 'Use my approximate location',
|
||||
'market.locationFailed' => 'Couldn\'t get your location — check that location is on and the permission is granted',
|
||||
'market.queued' => 'Saved — we\'ll share these when you\'re connected',
|
||||
'chatList.title' => 'Messages',
|
||||
'chatList.empty' => 'No conversations yet. Message someone from the market.',
|
||||
'chat.title' => 'Chat',
|
||||
'chat.hint' => 'Write a message…',
|
||||
'chat.send' => 'Send',
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ class TranslationsEs extends Translations with BaseTranslations<AppLocale, Trans
|
|||
@override late final _Translations$desiccant$es desiccant = _Translations$desiccant$es._(_root);
|
||||
@override late final _Translations$unit$es unit = _Translations$unit$es._(_root);
|
||||
@override late final _Translations$market$es market = _Translations$market$es._(_root);
|
||||
@override late final _Translations$chatList$es chatList = _Translations$chatList$es._(_root);
|
||||
@override late final _Translations$chat$es chat = _Translations$chat$es._(_root);
|
||||
@override late final _Translations$trust$es trust = _Translations$trust$es._(_root);
|
||||
}
|
||||
|
|
@ -634,6 +635,17 @@ class _Translations$market$es extends Translations$market$en {
|
|||
@override String get queued => 'Guardado — las compartiremos cuando tengas conexión';
|
||||
}
|
||||
|
||||
// Path: chatList
|
||||
class _Translations$chatList$es extends Translations$chatList$en {
|
||||
_Translations$chatList$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsEs _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get title => 'Mensajes';
|
||||
@override String get empty => 'Aún no hay conversaciones. Escribe a alguien desde el mercado.';
|
||||
}
|
||||
|
||||
// Path: chat
|
||||
class _Translations$chat$es extends Translations$chat$en {
|
||||
_Translations$chat$es._(TranslationsEs root) : this._root = root, super.internal(root);
|
||||
|
|
@ -1325,6 +1337,8 @@ extension on TranslationsEs {
|
|||
'market.useLocation' => 'Usar mi ubicación aproximada',
|
||||
'market.locationFailed' => 'No se pudo obtener tu ubicación — comprueba que la ubicación está activada y el permiso concedido',
|
||||
'market.queued' => 'Guardado — las compartiremos cuando tengas conexión',
|
||||
'chatList.title' => 'Mensajes',
|
||||
'chatList.empty' => 'Aún no hay conversaciones. Escribe a alguien desde el mercado.',
|
||||
'chat.title' => 'Chat',
|
||||
'chat.hint' => 'Escribe un mensaje…',
|
||||
'chat.send' => 'Enviar',
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ class TranslationsPt extends Translations with BaseTranslations<AppLocale, Trans
|
|||
@override late final _Translations$desiccant$pt desiccant = _Translations$desiccant$pt._(_root);
|
||||
@override late final _Translations$unit$pt unit = _Translations$unit$pt._(_root);
|
||||
@override late final _Translations$market$pt market = _Translations$market$pt._(_root);
|
||||
@override late final _Translations$chatList$pt chatList = _Translations$chatList$pt._(_root);
|
||||
@override late final _Translations$chat$pt chat = _Translations$chat$pt._(_root);
|
||||
@override late final _Translations$trust$pt trust = _Translations$trust$pt._(_root);
|
||||
}
|
||||
|
|
@ -630,6 +631,17 @@ class _Translations$market$pt extends Translations$market$en {
|
|||
@override String get queued => 'Guardado — vamos partilhá-las quando tiveres ligação';
|
||||
}
|
||||
|
||||
// Path: chatList
|
||||
class _Translations$chatList$pt extends Translations$chatList$en {
|
||||
_Translations$chatList$pt._(TranslationsPt root) : this._root = root, super.internal(root);
|
||||
|
||||
final TranslationsPt _root; // ignore: unused_field
|
||||
|
||||
// Translations
|
||||
@override String get title => 'Mensagens';
|
||||
@override String get empty => 'Ainda não há conversas. Escreve a alguém a partir do mercado.';
|
||||
}
|
||||
|
||||
// Path: chat
|
||||
class _Translations$chat$pt extends Translations$chat$en {
|
||||
_Translations$chat$pt._(TranslationsPt root) : this._root = root, super.internal(root);
|
||||
|
|
@ -1317,6 +1329,8 @@ extension on TranslationsPt {
|
|||
'market.useLocation' => 'Usar a minha localização aproximada',
|
||||
'market.locationFailed' => 'Não foi possível obter a tua localização — verifica se a localização está ativa e a permissão concedida',
|
||||
'market.queued' => 'Guardado — vamos partilhá-las quando tiveres ligação',
|
||||
'chatList.title' => 'Mensagens',
|
||||
'chatList.empty' => 'Ainda não há conversas. Escreve a alguém a partir do mercado.',
|
||||
'chat.title' => 'Conversa',
|
||||
'chat.hint' => 'Escreve uma mensagem…',
|
||||
'chat.send' => 'Enviar',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue