Daniel Arantes Loverde f706492823 [cart-checkout] Match selected address by coordinates before label, not after
CustomerAddress.id is genuinely optional (Services/ApiModels.swift:46) —
some address book entries have no id. AddressesView.selectAddress sets
appState.address.selectedId = address.id directly with no fallback, so
picking one of those addresses leaves selectedId nil. The matching
cascade in both CartView and CheckoutView+Logic then skipped straight to
a label match, which silently collides whenever two addresses share an
empty or duplicate label (common for unnamed entries), and finally fell
back to addresses.first — always redisplaying whatever's first in the
list regardless of what was tapped, with no error surfaced anywhere.

Coordinates are set immediately and reliably at selection time and are
far less likely to collide than a label. Checkout already had a lat/lng
fallback but ordered after the weak label match; promoted it ahead of
label matching in both files, and added the same fallback to Cart, which
didn't have one at all.
2026-07-10 10:49:18 -03:00
2026-07-07 15:11:31 -03:00
2026-07-07 15:11:31 -03:00
2026-07-07 15:11:31 -03:00
2026-07-07 15:11:31 -03:00
2026-07-07 15:11:31 -03:00
2026-07-07 15:11:31 -03:00
2026-07-07 15:11:31 -03:00
2026-07-07 15:11:31 -03:00

PediFoods

This is a Skip dual-platform app project.

Building

This project is both a stand-alone Swift Package Manager module, as well as an Xcode project that builds and translates the project into a Kotlin Gradle project for Android using the skipstone plugin.

Building the module requires that Skip be installed using Homebrew with brew install skiptools/skip/skip.

This will also install the necessary Skip prerequisites: Kotlin, Gradle, and the Android build tools.

Installation prerequisites can be confirmed by running skip checkup. The project can be validated with skip verify.

Running

Xcode and Android Studio must be downloaded and installed in order to run the app in the iOS simulator / Android emulator. An Android emulator must already be running, which can be launched from Android Studio's Device Manager.

The project can be opened and run in Xcode from Project.xcworkspace, which also enabled parallel development of any Skip libary dependencies.

To run both the Swift and Kotlin apps simultaneously, launch the "PediFoods App" target from Xcode. A build phases runs the "Launch Android APK" script that will deploy the Skip app to a running Android emulator or connected device. Logging output for the iOS app can be viewed in the Xcode console, and in Android Studio's logcat tab for the transpiled Kotlin app, or using adb logcat from a terminal.

Testing

The module can be tested using the standard swift test command or by running the test target for the macOS destination in Xcode, which will run the Swift tests as well as the transpiled Kotlin JUnit tests in the Robolectric Android simulation environment.

Parity testing can be performed with skip test, which will output a table of the test results for both platforms.

Autor: Daniel Arantes Loverde

Description
Swift and SwiftUI algorithms helpers
Readme 31 MiB
v2.1.0 Latest
2026-09-16 13:32:23 -03:00
Languages
Swift 93.7%
C++ 6.3%