All checks were successful
build-apk / build (push) Successful in 9m58s
A city-map timer started without signing in did not appear under Sessions. The tab returned "Sign in to see your sessions" before rendering anything, so a local session could never show; and even signed in it only ever listed ParkSmarter's sessions. A local timer is the one kind that has no server copy, which made it the one kind the screen could not display. - Sessions now leads with "Tracking on this phone": the live countdown with +1 hour and End, working with no account and no network, because that is the only place the session exists. - Recent local sessions are kept in a small on-device history (50 max). Without it a local session vanished the instant it ended — there is no server to ask. Paid ParkSmarter sessions are excluded so they don't appear twice. - The ParkSmarter half is layered on top when signed in and can fail independently: offline it reports that and keeps the local half visible, rather than the whole tab going blank. It also no longer leaves an unhandled rejection when the fetch throws (it had try/finally but no catch). - The card's second button follows the notification's rule: +1 hour for a local timer, Extend -> purchase screen for a bought session, since only one of those can honestly add time. History is written in endActiveParking() before the record is dropped, which also covers expiry — syncActiveParking() routes a lapsed session through the same call. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
54 lines
1.5 KiB
JSON
54 lines
1.5 KiB
JSON
{
|
|
"expo": {
|
|
"name": "BigBrainParking",
|
|
"slug": "bigbrainparking",
|
|
"scheme": "bigbrainparking",
|
|
"version": "0.6.2",
|
|
"orientation": "portrait",
|
|
"userInterfaceStyle": "automatic",
|
|
"newArchEnabled": true,
|
|
"icon": "./assets/icon.png",
|
|
"android": {
|
|
"package": "top.mowden.bigbrainparking",
|
|
"versionCode": 23,
|
|
"edgeToEdgeEnabled": true,
|
|
"adaptiveIcon": {
|
|
"foregroundImage": "./assets/adaptive-icon.png",
|
|
"backgroundColor": "#FFFFFF"
|
|
},
|
|
"permissions": [
|
|
"ACCESS_COARSE_LOCATION",
|
|
"ACCESS_FINE_LOCATION",
|
|
"CAMERA",
|
|
"POST_NOTIFICATIONS",
|
|
"INTERNET",
|
|
"ACCESS_NETWORK_STATE"
|
|
]
|
|
},
|
|
"plugins": [
|
|
"expo-secure-store",
|
|
[
|
|
"expo-location",
|
|
{
|
|
"locationWhenInUsePermission": "Show nearby parking meters on the map."
|
|
}
|
|
],
|
|
"expo-notifications",
|
|
[
|
|
"react-native-vision-camera",
|
|
{
|
|
"cameraPermissionText": "Scan the QR code on a parking kiosk."
|
|
}
|
|
],
|
|
"./plugins/withReleaseSigning"
|
|
],
|
|
"extra": {
|
|
"psEnvironment": "prodv2",
|
|
"zoneLabelsApiUrl": "https://bigbrainparking.mowden.top",
|
|
"mapStyleUrl": "https://tiles.openfreemap.org/styles/liberty",
|
|
"mapStyleUrlDark": "https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",
|
|
"unifiedPushDefaultDistributor": "io.heckel.ntfy",
|
|
"debugHttp": false
|
|
}
|
|
}
|
|
}
|