Root cause behind most "stuck loading" reports: the backend changed shape (schedules became an array, location_preferences a string) while the mobile parser still hard-cast to Map/int. The TypeError was swallowed by a silent catch that returned null, and screens only handled the success state, so a parse failure rendered as a permanent spinner. Same class of bug appeared across service lists via non-null map lookups and a total absence of request timeouts. Ported from prosappweb: - in-app suggestions (POST /suggestions) - policies/terms from GET /settings/policies - configurable appointment length (slot_duration_minutes) - block/unblock calendar slots (POST /services/block) - GPS city detection on the profile (Nominatim) - server-side professional search with haversine distance - retry cooldown after a rejected professional application Reliability: - parse schedules array (day_of_week 0=Mon) and string location_preferences - read times as wall clock, so 08:00 stays 08:00 across timezones - carry minutes into hours in TimeOfDay.add; a minute-based step used to loop forever and freeze the calendar (covered by test/time_slots_test.dart) - semver update check instead of string equality, which blocked every build that did not exactly match the configured version - request timeouts across all repositories - surface HTTP >= 400 instead of reporting failed writes as success - error states with retry instead of an indefinite shimmer Includes pre-existing uncommitted work from the UI redesign. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
236 lines
8.2 KiB
Plaintext
236 lines
8.2 KiB
Plaintext
PODS:
|
|
- DKImagePickerController/Core (4.3.9):
|
|
- DKImagePickerController/ImageDataManager
|
|
- DKImagePickerController/Resource
|
|
- DKImagePickerController/ImageDataManager (4.3.9)
|
|
- DKImagePickerController/PhotoGallery (4.3.9):
|
|
- DKImagePickerController/Core
|
|
- DKPhotoGallery
|
|
- DKImagePickerController/Resource (4.3.9)
|
|
- DKPhotoGallery (0.0.19):
|
|
- DKPhotoGallery/Core (= 0.0.19)
|
|
- DKPhotoGallery/Model (= 0.0.19)
|
|
- DKPhotoGallery/Preview (= 0.0.19)
|
|
- DKPhotoGallery/Resource (= 0.0.19)
|
|
- SDWebImage
|
|
- SwiftyGif
|
|
- DKPhotoGallery/Core (0.0.19):
|
|
- DKPhotoGallery/Model
|
|
- DKPhotoGallery/Preview
|
|
- SDWebImage
|
|
- SwiftyGif
|
|
- DKPhotoGallery/Model (0.0.19):
|
|
- SDWebImage
|
|
- SwiftyGif
|
|
- DKPhotoGallery/Preview (0.0.19):
|
|
- DKPhotoGallery/Model
|
|
- DKPhotoGallery/Resource
|
|
- SDWebImage
|
|
- SwiftyGif
|
|
- DKPhotoGallery/Resource (0.0.19):
|
|
- SDWebImage
|
|
- SwiftyGif
|
|
- file_picker (0.0.1):
|
|
- DKImagePickerController/PhotoGallery
|
|
- Flutter
|
|
- Firebase/CoreOnly (11.0.0):
|
|
- FirebaseCore (= 11.0.0)
|
|
- Firebase/Messaging (11.0.0):
|
|
- Firebase/CoreOnly
|
|
- FirebaseMessaging (~> 11.0.0)
|
|
- firebase_core (3.4.0):
|
|
- Firebase/CoreOnly (= 11.0.0)
|
|
- Flutter
|
|
- firebase_messaging (15.1.0):
|
|
- Firebase/Messaging (= 11.0.0)
|
|
- firebase_core
|
|
- Flutter
|
|
- FirebaseCore (11.0.0):
|
|
- FirebaseCoreInternal (~> 11.0)
|
|
- GoogleUtilities/Environment (~> 8.0)
|
|
- GoogleUtilities/Logger (~> 8.0)
|
|
- FirebaseCoreInternal (11.15.0):
|
|
- "GoogleUtilities/NSData+zlib (~> 8.1)"
|
|
- FirebaseInstallations (11.4.0):
|
|
- FirebaseCore (~> 11.0)
|
|
- GoogleUtilities/Environment (~> 8.0)
|
|
- GoogleUtilities/UserDefaults (~> 8.0)
|
|
- PromisesObjC (~> 2.4)
|
|
- FirebaseMessaging (11.0.0):
|
|
- FirebaseCore (~> 11.0)
|
|
- FirebaseInstallations (~> 11.0)
|
|
- GoogleDataTransport (~> 10.0)
|
|
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
|
|
- GoogleUtilities/Environment (~> 8.0)
|
|
- GoogleUtilities/Reachability (~> 8.0)
|
|
- GoogleUtilities/UserDefaults (~> 8.0)
|
|
- nanopb (~> 3.30910.0)
|
|
- Flutter (1.0.0)
|
|
- flutter_email_sender (0.0.1):
|
|
- Flutter
|
|
- flutter_local_notifications (0.0.1):
|
|
- Flutter
|
|
- geocoding_ios (1.0.5):
|
|
- Flutter
|
|
- geolocator_apple (1.2.0):
|
|
- Flutter
|
|
- google_maps_flutter_ios (0.0.1):
|
|
- Flutter
|
|
- GoogleMaps (< 9.0, >= 8.4)
|
|
- GoogleDataTransport (10.1.1):
|
|
- nanopb (~> 3.30910.0)
|
|
- PromisesObjC (~> 2.4)
|
|
- GoogleMaps (8.4.0):
|
|
- GoogleMaps/Maps (= 8.4.0)
|
|
- GoogleMaps/Base (8.4.0)
|
|
- GoogleMaps/Maps (8.4.0):
|
|
- GoogleMaps/Base
|
|
- GoogleUtilities/AppDelegateSwizzler (8.1.2):
|
|
- GoogleUtilities/Environment
|
|
- GoogleUtilities/Logger
|
|
- GoogleUtilities/Network
|
|
- GoogleUtilities/Privacy
|
|
- GoogleUtilities/Environment (8.1.2):
|
|
- GoogleUtilities/Privacy
|
|
- GoogleUtilities/Logger (8.1.2):
|
|
- GoogleUtilities/Environment
|
|
- GoogleUtilities/Privacy
|
|
- GoogleUtilities/Network (8.1.2):
|
|
- GoogleUtilities/Logger
|
|
- "GoogleUtilities/NSData+zlib"
|
|
- GoogleUtilities/Privacy
|
|
- GoogleUtilities/Reachability
|
|
- "GoogleUtilities/NSData+zlib (8.1.2)":
|
|
- GoogleUtilities/Privacy
|
|
- GoogleUtilities/Privacy (8.1.2)
|
|
- GoogleUtilities/Reachability (8.1.2):
|
|
- GoogleUtilities/Logger
|
|
- GoogleUtilities/Privacy
|
|
- GoogleUtilities/UserDefaults (8.1.2):
|
|
- GoogleUtilities/Logger
|
|
- GoogleUtilities/Privacy
|
|
- image_picker_ios (0.0.1):
|
|
- Flutter
|
|
- location (0.0.1):
|
|
- Flutter
|
|
- nanopb (3.30910.0):
|
|
- nanopb/decode (= 3.30910.0)
|
|
- nanopb/encode (= 3.30910.0)
|
|
- nanopb/decode (3.30910.0)
|
|
- nanopb/encode (3.30910.0)
|
|
- package_info_plus (0.4.5):
|
|
- Flutter
|
|
- PromisesObjC (2.4.1)
|
|
- SDWebImage (5.21.7):
|
|
- SDWebImage/Core (= 5.21.7)
|
|
- SDWebImage/Core (5.21.7)
|
|
- shared_preferences_foundation (0.0.1):
|
|
- Flutter
|
|
- FlutterMacOS
|
|
- SwiftyGif (5.4.5)
|
|
- url_launcher_ios (0.0.1):
|
|
- Flutter
|
|
- webview_flutter_wkwebview (0.0.1):
|
|
- Flutter
|
|
|
|
DEPENDENCIES:
|
|
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
|
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
|
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
|
|
- Flutter (from `Flutter`)
|
|
- flutter_email_sender (from `.symlinks/plugins/flutter_email_sender/ios`)
|
|
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
|
|
- geocoding_ios (from `.symlinks/plugins/geocoding_ios/ios`)
|
|
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
|
|
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
|
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
|
- location (from `.symlinks/plugins/location/ios`)
|
|
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
|
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
|
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
|
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
|
|
|
|
SPEC REPOS:
|
|
trunk:
|
|
- DKImagePickerController
|
|
- DKPhotoGallery
|
|
- Firebase
|
|
- FirebaseCore
|
|
- FirebaseCoreInternal
|
|
- FirebaseInstallations
|
|
- FirebaseMessaging
|
|
- GoogleDataTransport
|
|
- GoogleMaps
|
|
- GoogleUtilities
|
|
- nanopb
|
|
- PromisesObjC
|
|
- SDWebImage
|
|
- SwiftyGif
|
|
|
|
EXTERNAL SOURCES:
|
|
file_picker:
|
|
:path: ".symlinks/plugins/file_picker/ios"
|
|
firebase_core:
|
|
:path: ".symlinks/plugins/firebase_core/ios"
|
|
firebase_messaging:
|
|
:path: ".symlinks/plugins/firebase_messaging/ios"
|
|
Flutter:
|
|
:path: Flutter
|
|
flutter_email_sender:
|
|
:path: ".symlinks/plugins/flutter_email_sender/ios"
|
|
flutter_local_notifications:
|
|
:path: ".symlinks/plugins/flutter_local_notifications/ios"
|
|
geocoding_ios:
|
|
:path: ".symlinks/plugins/geocoding_ios/ios"
|
|
geolocator_apple:
|
|
:path: ".symlinks/plugins/geolocator_apple/ios"
|
|
google_maps_flutter_ios:
|
|
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
|
|
image_picker_ios:
|
|
:path: ".symlinks/plugins/image_picker_ios/ios"
|
|
location:
|
|
:path: ".symlinks/plugins/location/ios"
|
|
package_info_plus:
|
|
:path: ".symlinks/plugins/package_info_plus/ios"
|
|
shared_preferences_foundation:
|
|
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
|
|
url_launcher_ios:
|
|
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
|
webview_flutter_wkwebview:
|
|
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
|
|
|
|
SPEC CHECKSUMS:
|
|
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
|
|
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
|
|
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
|
|
Firebase: 9f574c08c2396885b5e7e100ed4293d956218af9
|
|
firebase_core: ceec591a66629daaee82d3321551692c4a871493
|
|
firebase_messaging: 15d8b557010f3bb7b98d0302e1c7c8fbcd244425
|
|
FirebaseCore: 3cf438f431f18c12cdf2aaf64434648b63f7e383
|
|
FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4
|
|
FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414
|
|
FirebaseMessaging: d2d1d9c62c46dd2db49a952f7deb5b16ad2c9742
|
|
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
|
flutter_email_sender: 10a22605f92809a11ef52b2f412db806c6082d40
|
|
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
|
|
geocoding_ios: d7460f56e80e118d57678efe5c2cdc888739ff18
|
|
geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450
|
|
google_maps_flutter_ios: c454f18e0e22df6ac0e9f2a4df340858f5a3680c
|
|
GoogleDataTransport: a24e58982ab3ba2f64d79613e027fe7f57e88539
|
|
GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d
|
|
GoogleUtilities: 766ace00c6b10d8148408f329d10c4f051931850
|
|
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
|
|
location: d5cf8598915965547c3f36761ae9cc4f4e87d22e
|
|
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
|
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
|
PromisesObjC: 752c3227f599e3467650e47ea36f433eeb10c273
|
|
SDWebImage: e9fc87c1aab89a8ab1bbd74eba378c6f53be8abf
|
|
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
|
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
|
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
|
webview_flutter_wkwebview: be0f0d33777f1bfd0c9fdcb594786704dbf65f36
|
|
|
|
PODFILE CHECKSUM: ec547244b0694f60746d06f280364578f1e3d8de
|
|
|
|
COCOAPODS: 1.15.2
|