feat(market): save others' offers as favorites (Wallapop-style)

Adds a Favorites feature: a heart on the offer detail saves another
person's listing to an encrypted, per-identity SavedOffersStore
(keystore JSON snapshot, no plaintext at rest). A new /favorites screen
(wired from the drawer) lists saved offers offline-first and, when a
relay is reachable, flags ones that are gone as "no longer available".
i18n en/es/pt/ast; store + screen + detail-heart tests.
This commit is contained in:
vjrj 2026-07-13 08:21:43 +02:00
parent c4421f768a
commit 184c15bcec
19 changed files with 806 additions and 3 deletions

View file

@ -103,6 +103,12 @@ class AppDrawer extends StatelessWidget {
_DrawerItem(
icon: const Icon(Icons.favorite),
label: t.menu.wishlist,
onTap: marketEnabled
? () {
Navigator.of(context).pop();
context.push('/favorites');
}
: null,
),
// The ego-centric web of trust ("your people") live once the
// social layer is on.