feat(block2): publish my seeds to the network (completes publish->discover)
The other half of the market: share your marked lots as offers. - VarietyRepository.shareableLots(): non-private lots WITH their id (stable, updatable offer id) + the variety label. Private lots never leave the device. - OffersCubit.publishLots(): maps each via OfferMapper and publishes, tagged with the coarse area + signed by the derived key; counts acceptances; no-op offline or with no area. - Market screen: a 'share my seeds' action (online only) — publishes, then re-discovers to show them; 'mark some seeds first' when nothing's shared. - i18n en/es/pt. 14 tests green (repo query, cubit publish, market UI); analyzer clean for new code.
This commit is contained in:
parent
cb5f55e146
commit
f8f73c4153
12 changed files with 284 additions and 5 deletions
|
|
@ -348,6 +348,9 @@
|
|||
"serversLabel": "Web address",
|
||||
"save": "Save",
|
||||
"saved": "Saved",
|
||||
"wanted": "Wanted"
|
||||
"wanted": "Wanted",
|
||||
"shareMine": "Share my seeds",
|
||||
"sharedCount": "Shared {n} seeds nearby",
|
||||
"nothingToShare": "Mark some seeds to give, swap or sell first"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -348,6 +348,9 @@
|
|||
"serversLabel": "Dirección web",
|
||||
"save": "Guardar",
|
||||
"saved": "Guardado",
|
||||
"wanted": "Busco"
|
||||
"wanted": "Busco",
|
||||
"shareMine": "Compartir mis semillas",
|
||||
"sharedCount": "Compartidas {n} semillas",
|
||||
"nothingToShare": "Marca antes algunas semillas para regalar, cambiar o vender"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -344,6 +344,9 @@
|
|||
"serversLabel": "Endereço web",
|
||||
"save": "Guardar",
|
||||
"saved": "Guardado",
|
||||
"wanted": "Procuro"
|
||||
"wanted": "Procuro",
|
||||
"shareMine": "Partilhar as minhas sementes",
|
||||
"sharedCount": "Partilhadas {n} sementes",
|
||||
"nothingToShare": "Marca primeiro algumas sementes para dar, trocar ou vender"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 3
|
||||
/// Strings: 929 (309 per locale)
|
||||
/// Strings: 938 (312 per locale)
|
||||
///
|
||||
/// Built on 2026-07-10 at 01:15 UTC
|
||||
/// Built on 2026-07-10 at 08:17 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
|
|
|||
|
|
@ -1105,6 +1105,15 @@ class Translations$market$en {
|
|||
|
||||
/// en: 'Wanted'
|
||||
String get wanted => 'Wanted';
|
||||
|
||||
/// en: 'Share my seeds'
|
||||
String get shareMine => 'Share my seeds';
|
||||
|
||||
/// en: 'Shared {n} seeds nearby'
|
||||
String sharedCount({required Object n}) => 'Shared ${n} seeds nearby';
|
||||
|
||||
/// en: 'Mark some seeds to give, swap or sell first'
|
||||
String get nothingToShare => 'Mark some seeds to give, swap or sell first';
|
||||
}
|
||||
|
||||
// Path: intro.slides
|
||||
|
|
@ -1875,6 +1884,9 @@ extension on Translations {
|
|||
'market.save' => 'Save',
|
||||
'market.saved' => 'Saved',
|
||||
'market.wanted' => 'Wanted',
|
||||
'market.shareMine' => 'Share my seeds',
|
||||
'market.sharedCount' => ({required Object n}) => 'Shared ${n} seeds nearby',
|
||||
'market.nothingToShare' => 'Mark some seeds to give, swap or sell first',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -619,6 +619,9 @@ class _Translations$market$es extends Translations$market$en {
|
|||
@override String get save => 'Guardar';
|
||||
@override String get saved => 'Guardado';
|
||||
@override String get wanted => 'Busco';
|
||||
@override String get shareMine => 'Compartir mis semillas';
|
||||
@override String sharedCount({required Object n}) => 'Compartidas ${n} semillas';
|
||||
@override String get nothingToShare => 'Marca antes algunas semillas para regalar, cambiar o vender';
|
||||
}
|
||||
|
||||
// Path: intro.slides
|
||||
|
|
@ -1273,6 +1276,9 @@ extension on TranslationsEs {
|
|||
'market.save' => 'Guardar',
|
||||
'market.saved' => 'Guardado',
|
||||
'market.wanted' => 'Busco',
|
||||
'market.shareMine' => 'Compartir mis semillas',
|
||||
'market.sharedCount' => ({required Object n}) => 'Compartidas ${n} semillas',
|
||||
'market.nothingToShare' => 'Marca antes algunas semillas para regalar, cambiar o vender',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -615,6 +615,9 @@ class _Translations$market$pt extends Translations$market$en {
|
|||
@override String get save => 'Guardar';
|
||||
@override String get saved => 'Guardado';
|
||||
@override String get wanted => 'Procuro';
|
||||
@override String get shareMine => 'Partilhar as minhas sementes';
|
||||
@override String sharedCount({required Object n}) => 'Partilhadas ${n} sementes';
|
||||
@override String get nothingToShare => 'Marca primeiro algumas sementes para dar, trocar ou vender';
|
||||
}
|
||||
|
||||
// Path: intro.slides
|
||||
|
|
@ -1265,6 +1268,9 @@ extension on TranslationsPt {
|
|||
'market.save' => 'Guardar',
|
||||
'market.saved' => 'Guardado',
|
||||
'market.wanted' => 'Procuro',
|
||||
'market.shareMine' => 'Partilhar as minhas sementes',
|
||||
'market.sharedCount' => ({required Object n}) => 'Partilhadas ${n} sementes',
|
||||
'market.nothingToShare' => 'Marca primeiro algumas sementes para dar, trocar ou vender',
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue