feat(block2): show contact names (resolve peers' published profiles)

Closes the profile loop — peers now appear by name, not a raw key.
- ProfileCache: keystore-backed cache of peers' published display names (works
  offline) + shortPubkey() fallback.
- Chat: the app bar shows the peer's name (cached first, then freshened from
  their kind:0 over the session); falls back to a short key.
- Inbox: each conversation shows the cached name, and missing names are resolved
  over one session and cached.
- Wired via DI + TaneApp(profileCache).

Analyzer clean; ProfileCache covered by a plain test.
This commit is contained in:
vjrj 2026-07-10 12:47:48 +02:00
parent b96b6e45cc
commit 9cc1a5e171
7 changed files with 149 additions and 13 deletions

View file

@ -29,6 +29,7 @@ import '../services/recovery_sheet_service.dart';
import '../services/share_catalog_service.dart';
import '../services/message_store.dart';
import '../services/offer_outbox.dart';
import '../services/profile_cache.dart';
import '../services/profile_store.dart';
import '../services/social_service.dart';
import '../services/social_settings.dart';
@ -94,6 +95,7 @@ Future<void> configureDependencies() async {
..registerSingleton<OfferOutbox>(OfferOutbox(secretStore))
..registerSingleton<MessageStore>(MessageStore(secretStore))
..registerSingleton<ProfileStore>(ProfileStore(secretStore))
..registerSingleton<ProfileCache>(ProfileCache(secretStore))
..registerSingleton<ExportImportService>(
ExportImportService(
repository: varietyRepository,