Restructure guide flow: list overview, swipe in detail, real map markers

Three UX fixes:

1. The placeholder map was always rendered with userLocation=null and
   places=emptyList() — MapScreen never passed the actually-resolved
   location/nearby list to DgisMapView, so it only ever showed the
   "waiting for location" placeholder text. MapViewModel now exposes
   resolvedLocation and nearbyPlaces, wired through to the map. (Note:
   this is still the Canvas-based placeholder, not the real 2GIS SDK —
   that integration is still pending, as flagged since the skeleton
   was first built.)

2. GuideScreen's Tinder-style pager only showed one card at a time,
   which read as "it only found one place" even with 5 nearby. Swapped
   it for a plain scrollable list (auto-scrolls to the active/narrating
   item); tapping an item opens PlaceDetailScreen, which now owns the
   swipe-between-places interaction instead. PlaceDetailViewModel
   fetches the same nearby-ordered list GuideViewModel uses (falling
   back to a single non-swipeable place when opened from
   Favorites/search for something outside that list).

3. Narration now leads with the place's name and distance from the
   user before the body text (util/Narration.kt), in both the guide
   list and the detail swipe view.

Verified: testDebugUnitTest passes, assembleDebug produces a working
APK, sent to Telegram.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
vrubelroman 2026-07-09 21:08:19 +00:00
parent e220863451
commit 7f1a6d51fc
10 changed files with 235 additions and 144 deletions

View file

@ -21,6 +21,7 @@
<string name="map_no_places_nearby">Nothing found within 10 km of here.</string>
<string name="guide_no_places_nearby">No places found nearby yet.</string>
<string name="guide_places_count">%1$d place(s) nearby</string>
<string name="guide_retry">Retry</string>
<string name="guide_favorite_add">Add to favorites</string>
<string name="guide_favorite_remove">Remove from favorites</string>