feat(block2): Ğ1 — publish a Ğ1 address + 'Pay in Ğ1' in chat (levels 1-2)
The optional Ğ1 (free currency) integration, per g1-integration.md. - Profile: an optional 'Ğ1 address' field, persisted locally and published in your NIP-01 kind:0 metadata (separate from the Nostr key). - commons_core: UserProfile/ProfileTransport carry a 'g1' field (round-trip tested). - Chat: when the peer published a Ğ1 address, a 'Pay in Ğ1' app-bar action opens their wallet (url_launcher) so value moves in the wallet, not the app — copies the address as a fallback. No payment rails in-app (sharing-model §4.3). NOTE (vjrj): the wallet deep-link uses the Cesium web wallet as a universal fallback; swap the URI in chat_screen._payG1 for the Ğ1nkgo/Ğecko scheme you prefer. Analyzer clean (both packages); profile transport test covers g1.
This commit is contained in:
parent
d0d2ecb132
commit
d7136ec2c2
13 changed files with 138 additions and 14 deletions
|
|
@ -367,6 +367,8 @@
|
|||
"nameHint": "How others see you",
|
||||
"about": "About",
|
||||
"aboutHint": "A short line — what you grow, where",
|
||||
"g1": "Ğ1 address (optional)",
|
||||
"g1Hint": "So people can pay you in Ğ1 — separate from your key",
|
||||
"yourId": "Your identity",
|
||||
"idHelp": "Share this so people can recognise you",
|
||||
"copy": "Copy",
|
||||
|
|
@ -383,7 +385,9 @@
|
|||
"hint": "Write a message…",
|
||||
"send": "Send",
|
||||
"empty": "No messages yet — say hello",
|
||||
"offline": "Set up sharing to send messages"
|
||||
"offline": "Set up sharing to send messages",
|
||||
"payG1": "Pay in Ğ1",
|
||||
"g1Copied": "Ğ1 address copied — paste it in your wallet"
|
||||
},
|
||||
"trust": {
|
||||
"none": "No one vouches for them yet",
|
||||
|
|
|
|||
|
|
@ -367,6 +367,8 @@
|
|||
"nameHint": "Cómo te ven los demás",
|
||||
"about": "Sobre ti",
|
||||
"aboutHint": "Una línea — qué cultivas, dónde",
|
||||
"g1": "Dirección Ğ1 (opcional)",
|
||||
"g1Hint": "Para que te paguen en Ğ1 — aparte de tu clave",
|
||||
"yourId": "Tu identidad",
|
||||
"idHelp": "Compártela para que te reconozcan",
|
||||
"copy": "Copiar",
|
||||
|
|
@ -383,7 +385,9 @@
|
|||
"hint": "Escribe un mensaje…",
|
||||
"send": "Enviar",
|
||||
"empty": "Aún no hay mensajes — saluda",
|
||||
"offline": "Configura el compartir para enviar mensajes"
|
||||
"offline": "Configura el compartir para enviar mensajes",
|
||||
"payG1": "Pagar en Ğ1",
|
||||
"g1Copied": "Dirección Ğ1 copiada — pégala en tu cartera"
|
||||
},
|
||||
"trust": {
|
||||
"none": "Nadie los avala aún",
|
||||
|
|
|
|||
|
|
@ -363,6 +363,8 @@
|
|||
"nameHint": "Como os outros te veem",
|
||||
"about": "Sobre ti",
|
||||
"aboutHint": "Uma linha — o que cultivas, onde",
|
||||
"g1": "Endereço Ğ1 (opcional)",
|
||||
"g1Hint": "Para que te paguem em Ğ1 — separado da tua chave",
|
||||
"yourId": "A tua identidade",
|
||||
"idHelp": "Partilha-a para que te reconheçam",
|
||||
"copy": "Copiar",
|
||||
|
|
@ -379,7 +381,9 @@
|
|||
"hint": "Escreve uma mensagem…",
|
||||
"send": "Enviar",
|
||||
"empty": "Ainda não há mensagens — diz olá",
|
||||
"offline": "Configura a partilha para enviar mensagens"
|
||||
"offline": "Configura a partilha para enviar mensagens",
|
||||
"payG1": "Pagar em Ğ1",
|
||||
"g1Copied": "Endereço Ğ1 copiado — cola-o na tua carteira"
|
||||
},
|
||||
"trust": {
|
||||
"none": "Ainda ninguém os avaliza",
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 3
|
||||
/// Strings: 1031 (343 per locale)
|
||||
/// Strings: 1043 (347 per locale)
|
||||
///
|
||||
/// Built on 2026-07-10 at 10:36 UTC
|
||||
/// Built on 2026-07-10 at 11:05 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
|
|
|||
|
|
@ -1167,6 +1167,12 @@ class Translations$profile$en {
|
|||
/// en: 'A short line — what you grow, where'
|
||||
String get aboutHint => 'A short line — what you grow, where';
|
||||
|
||||
/// en: 'Ğ1 address (optional)'
|
||||
String get g1 => 'Ğ1 address (optional)';
|
||||
|
||||
/// en: 'So people can pay you in Ğ1 — separate from your key'
|
||||
String get g1Hint => 'So people can pay you in Ğ1 — separate from your key';
|
||||
|
||||
/// en: 'Your identity'
|
||||
String get yourId => 'Your identity';
|
||||
|
||||
|
|
@ -1223,6 +1229,12 @@ class Translations$chat$en {
|
|||
|
||||
/// en: 'Set up sharing to send messages'
|
||||
String get offline => 'Set up sharing to send messages';
|
||||
|
||||
/// en: 'Pay in Ğ1'
|
||||
String get payG1 => 'Pay in Ğ1';
|
||||
|
||||
/// en: 'Ğ1 address copied — paste it in your wallet'
|
||||
String get g1Copied => 'Ğ1 address copied — paste it in your wallet';
|
||||
}
|
||||
|
||||
// Path: trust
|
||||
|
|
@ -2033,6 +2045,8 @@ extension on Translations {
|
|||
'profile.nameHint' => 'How others see you',
|
||||
'profile.about' => 'About',
|
||||
'profile.aboutHint' => 'A short line — what you grow, where',
|
||||
'profile.g1' => 'Ğ1 address (optional)',
|
||||
'profile.g1Hint' => 'So people can pay you in Ğ1 — separate from your key',
|
||||
'profile.yourId' => 'Your identity',
|
||||
'profile.idHelp' => 'Share this so people can recognise you',
|
||||
'profile.copy' => 'Copy',
|
||||
|
|
@ -2046,6 +2060,8 @@ extension on Translations {
|
|||
'chat.send' => 'Send',
|
||||
'chat.empty' => 'No messages yet — say hello',
|
||||
'chat.offline' => 'Set up sharing to send messages',
|
||||
'chat.payG1' => 'Pay in Ğ1',
|
||||
'chat.g1Copied' => 'Ğ1 address copied — paste it in your wallet',
|
||||
'trust.none' => 'No one vouches for them yet',
|
||||
'trust.count' => ({required Object n}) => 'Vouched for by ${n}',
|
||||
'trust.vouch' => 'I know this person',
|
||||
|
|
|
|||
|
|
@ -648,6 +648,8 @@ class _Translations$profile$es extends Translations$profile$en {
|
|||
@override String get nameHint => 'Cómo te ven los demás';
|
||||
@override String get about => 'Sobre ti';
|
||||
@override String get aboutHint => 'Una línea — qué cultivas, dónde';
|
||||
@override String get g1 => 'Dirección Ğ1 (opcional)';
|
||||
@override String get g1Hint => 'Para que te paguen en Ğ1 — aparte de tu clave';
|
||||
@override String get yourId => 'Tu identidad';
|
||||
@override String get idHelp => 'Compártela para que te reconozcan';
|
||||
@override String get copy => 'Copiar';
|
||||
|
|
@ -679,6 +681,8 @@ class _Translations$chat$es extends Translations$chat$en {
|
|||
@override String get send => 'Enviar';
|
||||
@override String get empty => 'Aún no hay mensajes — saluda';
|
||||
@override String get offline => 'Configura el compartir para enviar mensajes';
|
||||
@override String get payG1 => 'Pagar en Ğ1';
|
||||
@override String get g1Copied => 'Dirección Ğ1 copiada — pégala en tu cartera';
|
||||
}
|
||||
|
||||
// Path: trust
|
||||
|
|
@ -1363,6 +1367,8 @@ extension on TranslationsEs {
|
|||
'profile.nameHint' => 'Cómo te ven los demás',
|
||||
'profile.about' => 'Sobre ti',
|
||||
'profile.aboutHint' => 'Una línea — qué cultivas, dónde',
|
||||
'profile.g1' => 'Dirección Ğ1 (opcional)',
|
||||
'profile.g1Hint' => 'Para que te paguen en Ğ1 — aparte de tu clave',
|
||||
'profile.yourId' => 'Tu identidad',
|
||||
'profile.idHelp' => 'Compártela para que te reconozcan',
|
||||
'profile.copy' => 'Copiar',
|
||||
|
|
@ -1376,6 +1382,8 @@ extension on TranslationsEs {
|
|||
'chat.send' => 'Enviar',
|
||||
'chat.empty' => 'Aún no hay mensajes — saluda',
|
||||
'chat.offline' => 'Configura el compartir para enviar mensajes',
|
||||
'chat.payG1' => 'Pagar en Ğ1',
|
||||
'chat.g1Copied' => 'Dirección Ğ1 copiada — pégala en tu cartera',
|
||||
'trust.none' => 'Nadie los avala aún',
|
||||
'trust.count' => ({required Object n}) => 'Avalada por ${n}',
|
||||
'trust.vouch' => 'Conozco a esta persona',
|
||||
|
|
|
|||
|
|
@ -644,6 +644,8 @@ class _Translations$profile$pt extends Translations$profile$en {
|
|||
@override String get nameHint => 'Como os outros te veem';
|
||||
@override String get about => 'Sobre ti';
|
||||
@override String get aboutHint => 'Uma linha — o que cultivas, onde';
|
||||
@override String get g1 => 'Endereço Ğ1 (opcional)';
|
||||
@override String get g1Hint => 'Para que te paguem em Ğ1 — separado da tua chave';
|
||||
@override String get yourId => 'A tua identidade';
|
||||
@override String get idHelp => 'Partilha-a para que te reconheçam';
|
||||
@override String get copy => 'Copiar';
|
||||
|
|
@ -675,6 +677,8 @@ class _Translations$chat$pt extends Translations$chat$en {
|
|||
@override String get send => 'Enviar';
|
||||
@override String get empty => 'Ainda não há mensagens — diz olá';
|
||||
@override String get offline => 'Configura a partilha para enviar mensagens';
|
||||
@override String get payG1 => 'Pagar em Ğ1';
|
||||
@override String get g1Copied => 'Endereço Ğ1 copiado — cola-o na tua carteira';
|
||||
}
|
||||
|
||||
// Path: trust
|
||||
|
|
@ -1355,6 +1359,8 @@ extension on TranslationsPt {
|
|||
'profile.nameHint' => 'Como os outros te veem',
|
||||
'profile.about' => 'Sobre ti',
|
||||
'profile.aboutHint' => 'Uma linha — o que cultivas, onde',
|
||||
'profile.g1' => 'Endereço Ğ1 (opcional)',
|
||||
'profile.g1Hint' => 'Para que te paguem em Ğ1 — separado da tua chave',
|
||||
'profile.yourId' => 'A tua identidade',
|
||||
'profile.idHelp' => 'Partilha-a para que te reconheçam',
|
||||
'profile.copy' => 'Copiar',
|
||||
|
|
@ -1368,6 +1374,8 @@ extension on TranslationsPt {
|
|||
'chat.send' => 'Enviar',
|
||||
'chat.empty' => 'Ainda não há mensagens — diz olá',
|
||||
'chat.offline' => 'Configura a partilha para enviar mensagens',
|
||||
'chat.payG1' => 'Pagar em Ğ1',
|
||||
'chat.g1Copied' => 'Endereço Ğ1 copiado — cola-o na tua carteira',
|
||||
'trust.none' => 'Ainda ninguém os avaliza',
|
||||
'trust.count' => ({required Object n}) => 'Avalizada por ${n}',
|
||||
'trust.vouch' => 'Conheço esta pessoa',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue