fix(market): search your zone by a coarse prefix, not the exact cell
Discovery searched the full 5-char geohash (~2.4 km) with an exact Nostr tag match, so two devices in adjacent cells never found each other even though publish emits the full NIP-52 prefix ladder. Search now coarsens the area to a configurable precision (SocialSettings.searchPrecision, default 4 ~20 km) via searchPrefix(), with a human-worded 'how far' selector (Very close / Around here / My region -> 5/4/3) in the market setup sheet. Also: surface a clear 'couldn't reach the servers' message when no relay accepts a share (instead of 'shared 0'), and add wss://relay.comunes.org as the first default relay (reliable community home; public relays are backup). Tests: settings precision (default/clamp/roundtrip), searchPrefix helper, neighbour-cell discovery regression (offers_cubit + commons_core nostr transports), and the range-selector widget test.
This commit is contained in:
parent
1fb8e37536
commit
97b9223cb2
16 changed files with 268 additions and 10 deletions
|
|
@ -91,6 +91,28 @@ void main() {
|
|||
expect(find.text('Retry'), findsOneWidget); // can't-reach state offers retry
|
||||
});
|
||||
|
||||
testWidgets('the range selector persists the chosen search precision',
|
||||
(tester) async {
|
||||
final social = await SocialService.fromRootSeedHex('00' * 32);
|
||||
final settings = SocialSettings(InMemorySecretStore());
|
||||
await settings.setRelayUrls(const []); // offline: don't hit the network
|
||||
|
||||
await tester.pumpWidget(_wrapMarket(social, settings));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.tap(find.byKey(const Key('market.config')));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Defaults to the wide "Around here" (precision 4); narrow to "My region".
|
||||
expect(await settings.searchPrecision(), 4);
|
||||
await tester.tap(find.text('My region'));
|
||||
await tester.pumpAndSettle();
|
||||
await tester.tap(find.byKey(const Key('market.save')));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(await settings.searchPrecision(), 3);
|
||||
});
|
||||
|
||||
testWidgets('"use my location" fills the area with a coarse geohash',
|
||||
(tester) async {
|
||||
final social = await SocialService.fromRootSeedHex('00' * 32);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue