- BeneficiaryMenu: dropdownItem now has width: 100% - Increased minWidth to 180 and added overflow: hidden - Users can now tap anywhere on the menu row, not just the text 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
227 lines
15 KiB
Plaintext
227 lines
15 KiB
Plaintext
Starting project at /Users/sergei/Desktop/WellNuo
|
||
React Compiler enabled
|
||
Starting Metro Bundler
|
||
The following packages should be updated for best compatibility with the installed expo version:
|
||
expo@54.0.30 - expected version: ~54.0.31
|
||
expo-constants@18.0.12 - expected version: ~18.0.13
|
||
Your project may not work correctly until you install the expected versions of the packages.
|
||
› Opening exp://172.20.10.10:8081 on 8081
|
||
Waiting on http://localhost:8081
|
||
Logs for your project will appear below.
|
||
Could not fetch new Expo development certificate, falling back to cached certificate
|
||
iOS Bundled 531ms node_modules/expo-router/entry.js (1421 modules)
|
||
LOG expo-speech-recognition not available
|
||
LOG [Voice] expo-speech-recognition not available in Expo Go
|
||
LOG [Layout] Still initializing auth state...
|
||
LOG [AuthContext] checkAuth starting...
|
||
LOG [AuthContext] checkAuth: Checking token...
|
||
LOG [AuthContext] checkAuth: Token exists=true, length=187
|
||
LOG [AuthContext] checkAuth: isAuth=true
|
||
LOG [AuthContext] checkAuth: Getting stored user...
|
||
LOG [API] getStoredUser: token exists = true , userId = 62
|
||
LOG [API] getStoredUser: Fetching profile from server...
|
||
LOG [API] getStoredUser: Profile response ok = true , error = undefined
|
||
LOG [AuthContext] checkAuth: User found=true
|
||
LOG [AuthContext] checkAuth: Finished
|
||
LOG [Layout] Auth check: {"hasInitialRedirect": false, "inAuthGroup": false, "isAuthenticated": true}
|
||
LOG [API] getAllBeneficiaries - token exists: true length: 187
|
||
LOG [API] getAllBeneficiaries - Fetching from: https://wellnuo.smartlaunchhub.com/api/me/beneficiaries
|
||
LOG [API] getAllBeneficiaries - Response status: 200
|
||
LOG [API] getAllBeneficiaries - Data: {"beneficiaries":[{"accessId":41,"id":21,"role":"custodian","grantedAt":"2026-01-09T04:15:44.403Z","name":"Mama","phone":null,"address":null,"avatarUrl":null,"createdAt":"2026-01-09T04:15:43.079Z","su
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":21,"name":"Mama","hasDevices":false,"equipmentStatus":"none"}
|
||
LOG [API] getAllBeneficiaries - token exists: true length: 187
|
||
LOG [API] getAllBeneficiaries - Fetching from: https://wellnuo.smartlaunchhub.com/api/me/beneficiaries
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":21,"name":"Mama","hasDevices":false,"equipmentStatus":"none"}
|
||
LOG [API] getAllBeneficiaries - Response status: 200
|
||
LOG [API] getAllBeneficiaries - Data: {"beneficiaries":[{"accessId":41,"id":21,"role":"custodian","grantedAt":"2026-01-09T04:15:44.403Z","name":"Mama","phone":null,"address":null,"avatarUrl":null,"createdAt":"2026-01-09T04:15:43.079Z","su
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":22,"name":"Mama2","hasDevices":false,"equipmentStatus":"none"}
|
||
LOG [Purchase] Creating payment sheet for userId: 62 beneficiaryId: 22
|
||
ERROR Payment error: [Error: ephemeralKey is not defined]
|
||
|
||
Code: purchase.tsx
|
||
[0m [90m 119 |[39m
|
||
[90m 120 |[39m [36mif[39m ([33m![39mdata[33m.[39mpaymentIntent) {
|
||
[31m[1m>[22m[39m[90m 121 |[39m [36mthrow[39m [36mnew[39m [33mError[39m(data[33m.[39merror [33m||[39m [32m'Failed to create payment sheet'[39m)[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 122 |[39m }
|
||
[90m 123 |[39m
|
||
[90m 124 |[39m [36mconst[39m { error[33m:[39m initError } [33m=[39m [36mawait[39m initPaymentSheet({[0m
|
||
Call Stack
|
||
handlePurchase (app/(auth)/purchase.tsx:121:24)
|
||
LOG [Purchase] Creating payment sheet for userId: 62 beneficiaryId: 22
|
||
ERROR Payment error: [Error: ephemeralKey is not defined]
|
||
|
||
Code: purchase.tsx
|
||
[0m [90m 119 |[39m
|
||
[90m 120 |[39m [36mif[39m ([33m![39mdata[33m.[39mpaymentIntent) {
|
||
[31m[1m>[22m[39m[90m 121 |[39m [36mthrow[39m [36mnew[39m [33mError[39m(data[33m.[39merror [33m||[39m [32m'Failed to create payment sheet'[39m)[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 122 |[39m }
|
||
[90m 123 |[39m
|
||
[90m 124 |[39m [36mconst[39m { error[33m:[39m initError } [33m=[39m [36mawait[39m initPaymentSheet({[0m
|
||
Call Stack
|
||
handlePurchase (app/(auth)/purchase.tsx:121:24)
|
||
Could not fetch new Expo development certificate, falling back to cached certificate
|
||
iOS Bundled 83ms node_modules/expo-router/entry.js (1 module)
|
||
LOG expo-speech-recognition not available
|
||
LOG [Voice] expo-speech-recognition not available in Expo Go
|
||
LOG [Layout] Still initializing auth state...
|
||
LOG [AuthContext] checkAuth starting...
|
||
LOG [AuthContext] checkAuth: Checking token...
|
||
LOG [AuthContext] checkAuth: Token exists=true, length=187
|
||
LOG [AuthContext] checkAuth: isAuth=true
|
||
LOG [AuthContext] checkAuth: Getting stored user...
|
||
LOG [API] getStoredUser: token exists = true , userId = 62
|
||
LOG [API] getStoredUser: Fetching profile from server...
|
||
LOG [API] getStoredUser: Profile response ok = true , error = undefined
|
||
LOG [AuthContext] checkAuth: User found=true
|
||
LOG [AuthContext] checkAuth: Finished
|
||
LOG [Layout] Auth check: {"hasInitialRedirect": false, "inAuthGroup": false, "isAuthenticated": true}
|
||
LOG [API] getAllBeneficiaries - token exists: true length: 187
|
||
LOG [API] getAllBeneficiaries - Fetching from: https://wellnuo.smartlaunchhub.com/api/me/beneficiaries
|
||
LOG [API] getAllBeneficiaries - Response status: 200
|
||
LOG [API] getAllBeneficiaries - Data: {"beneficiaries":[{"accessId":41,"id":21,"role":"custodian","grantedAt":"2026-01-09T04:15:44.403Z","name":"Mama","phone":null,"address":null,"avatarUrl":null,"createdAt":"2026-01-09T04:15:43.079Z","su
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":22,"name":"Mama2","hasDevices":false,"equipmentStatus":"none"}
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":22,"name":"Mama2","hasDevices":false,"equipmentStatus":"none"}
|
||
ERROR Payment error: [Error: ephemeralKey is not defined]
|
||
|
||
Code: purchase.tsx
|
||
[0m [90m 113 |[39m
|
||
[90m 114 |[39m [36mif[39m ([33m![39mdata[33m.[39mpaymentIntent) {
|
||
[31m[1m>[22m[39m[90m 115 |[39m [36mthrow[39m [36mnew[39m [33mError[39m(data[33m.[39merror [33m||[39m [32m'Failed to create payment sheet'[39m)[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 116 |[39m }
|
||
[90m 117 |[39m
|
||
[90m 118 |[39m [36mconst[39m { error[33m:[39m initError } [33m=[39m [36mawait[39m initPaymentSheet({[0m
|
||
Call Stack
|
||
handlePurchase (app/(tabs)/beneficiaries/[id]/purchase.tsx:115:24)
|
||
Could not fetch new Expo development certificate, falling back to cached certificate
|
||
iOS node_modules/expo-router/entry.js ░░░░░░░░░░░░░░░░ 0.0% (0/1)
|
||
iOS Bundled 68ms node_modules/expo-router/entry.js (1 module)
|
||
LOG expo-speech-recognition not available
|
||
LOG [Voice] expo-speech-recognition not available in Expo Go
|
||
LOG [Layout] Still initializing auth state...
|
||
LOG [AuthContext] checkAuth starting...
|
||
LOG [AuthContext] checkAuth: Checking token...
|
||
LOG [AuthContext] checkAuth: Token exists=true, length=187
|
||
LOG [AuthContext] checkAuth: isAuth=true
|
||
LOG [AuthContext] checkAuth: Getting stored user...
|
||
LOG [API] getStoredUser: token exists = true , userId = 62
|
||
LOG [API] getStoredUser: Fetching profile from server...
|
||
LOG [API] getStoredUser: Profile response ok = true , error = undefined
|
||
LOG [AuthContext] checkAuth: User found=true
|
||
LOG [AuthContext] checkAuth: Finished
|
||
LOG [Layout] Auth check: {"hasInitialRedirect": false, "inAuthGroup": false, "isAuthenticated": true}
|
||
LOG [API] getAllBeneficiaries - token exists: true length: 187
|
||
LOG [API] getAllBeneficiaries - Fetching from: https://wellnuo.smartlaunchhub.com/api/me/beneficiaries
|
||
LOG [API] getAllBeneficiaries - Response status: 200
|
||
LOG [API] getAllBeneficiaries - Data: {"beneficiaries":[]}
|
||
LOG [API] getAllBeneficiaries - token exists: true length: 187
|
||
LOG [API] getAllBeneficiaries - Fetching from: https://wellnuo.smartlaunchhub.com/api/me/beneficiaries
|
||
LOG [API] getAllBeneficiaries - Response status: 200
|
||
LOG [API] getAllBeneficiaries - Data: {"beneficiaries":[]}
|
||
LOG [API] getAllBeneficiaries - token exists: true length: 187
|
||
LOG [API] getAllBeneficiaries - Fetching from: https://wellnuo.smartlaunchhub.com/api/me/beneficiaries
|
||
LOG [API] getAllBeneficiaries - Response status: 200
|
||
LOG [API] getAllBeneficiaries - Data: {"beneficiaries":[{"accessId":41,"id":21,"role":"custodian","grantedAt":"2026-01-09T04:15:44.403Z","name":"Mama","phone":null,"address":null,"createdAt":"2026-01-09T04:15:43.079Z","subscription":{"pla
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":21,"name":"Mama","hasDevices":false,"equipmentStatus":"none"}
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":21,"name":"Mama","hasDevices":false,"equipmentStatus":"none"}
|
||
LOG [API] getAllBeneficiaries - token exists: true length: 187
|
||
LOG [API] getAllBeneficiaries - Fetching from: https://wellnuo.smartlaunchhub.com/api/me/beneficiaries
|
||
LOG [API] getAllBeneficiaries - Response status: 200
|
||
LOG [API] getAllBeneficiaries - Data: {"beneficiaries":[{"accessId":41,"id":21,"role":"custodian","grantedAt":"2026-01-09T04:15:44.403Z","name":"Mama","phone":null,"address":null,"createdAt":"2026-01-09T04:15:43.079Z","subscription":{"pla
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":23,"name":"Mama3","hasDevices":false,"equipmentStatus":"none"}
|
||
LOG [Purchase] Creating payment sheet for userId: 62 beneficiaryId: 23
|
||
LOG [Purchase] Payment successful, updating equipment status...
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":23,"name":"Mama3","hasDevices":false,"equipmentStatus":"ordered"}
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":23,"name":"Mama3","hasDevices":true,"equipmentStatus":"demo"}
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":23,"name":"Mama3","hasDevices":true,"equipmentStatus":"demo"}
|
||
ERROR Payment error: [Error: Failed to create subscription]
|
||
|
||
Code: subscription.tsx
|
||
[0m [90m 143 |[39m
|
||
[90m 144 |[39m [36mif[39m ([33m![39mdata[33m.[39mclientSecret) {
|
||
[31m[1m>[22m[39m[90m 145 |[39m [36mthrow[39m [36mnew[39m [33mError[39m(data[33m.[39merror [33m||[39m [32m'Failed to create subscription'[39m)[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 146 |[39m }
|
||
[90m 147 |[39m
|
||
[90m 148 |[39m [90m// 2. Initialize the Payment Sheet[39m[0m
|
||
Call Stack
|
||
handleSubscribe (app/(tabs)/beneficiaries/[id]/subscription.tsx:145:24)
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":23,"name":"Mama3","hasDevices":true,"equipmentStatus":"demo"}
|
||
LOG [DEBUG] loadBeneficiary: fetching id=23
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":23,"name":"Mama3","hasDevices":true,"equipmentStatus":"demo"}
|
||
LOG [DEBUG] loadBeneficiary: response.ok=true
|
||
LOG [DEBUG] loadBeneficiary: got beneficiary id=23, name=Mama3
|
||
LOG [DEBUG] loadBeneficiary: fetching id=23
|
||
LOG [API] getWellNuoBeneficiary - Raw response: {"id":23,"name":"Mama3","hasDevices":true,"equipmentStatus":"demo"}
|
||
LOG [DEBUG] loadBeneficiary: response.ok=true
|
||
LOG [DEBUG] loadBeneficiary: got beneficiary id=23, name=Mama3
|
||
LOG [DEBUG] handleSubscribe: START
|
||
LOG [DEBUG] handleSubscribe: beneficiary={"id":23,"name":"Mama3"}
|
||
LOG [DEBUG] handleSubscribe: token=eyJhbGciOiJIUzI1NiIs...
|
||
LOG [DEBUG] handleSubscribe: calling https://wellnuo.smartlaunchhub.com/api/stripe/create-subscription-payment-sheet
|
||
LOG [DEBUG] handleSubscribe: body={"beneficiaryId":23}
|
||
LOG [DEBUG] handleSubscribe: response.status=200
|
||
LOG [DEBUG] handleSubscribe: response data={"subscriptionId":"sub_1SnYNwP0gvUw6M9CMooRyBOz","ephemeralKey":"ek_test_YWNjdF8xUDNrZHFQMGd2VXc2TTlDLGlmOGdHVldBc1ppNkxxZmM1N1B2WXJuZWNSZ1lRbkg_00BcXeNVrC","customer":"cus_Tl4QHSfVqjstea","publishableKey":"pk_test_51P3kdqP0gvUw6M9C7ixPQHqbPcvga4G5kAYx1h6QXQAt1psbrC2rrmOojW0fTeQzaxD1Q9RKS3zZ23MCvjjZpWLi00eCFWRHMk"}
|
||
ERROR Payment error: [Error: Failed to create subscription]
|
||
|
||
Code: subscription.tsx
|
||
[0m [90m 180 |[39m
|
||
[90m 181 |[39m [36mif[39m ([33m![39mdata[33m.[39mclientSecret) {
|
||
[31m[1m>[22m[39m[90m 182 |[39m [36mthrow[39m [36mnew[39m [33mError[39m(data[33m.[39merror [33m||[39m [32m'Failed to create subscription'[39m)[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 183 |[39m }
|
||
[90m 184 |[39m
|
||
[90m 185 |[39m [90m// 2. Initialize the Payment Sheet[39m[0m
|
||
Call Stack
|
||
handleSubscribe (app/(tabs)/beneficiaries/[id]/subscription.tsx:182:24)
|
||
Unable to resolve "react-native-root-toast" from "app/(tabs)/beneficiaries/[id]/subscription.tsx"
|
||
[0m [90m 21 |[39m [36mimport[39m type { [33mBeneficiary[39m } [36mfrom[39m [32m'@/types'[39m[33m;[39m
|
||
[90m 22 |[39m [36mimport[39m [33m*[39m [36mas[39m [33mExpoClipboard[39m [36mfrom[39m [32m'expo-clipboard'[39m[33m;[39m
|
||
[31m[1m>[22m[39m[90m 23 |[39m [36mimport[39m [33mToast[39m [36mfrom[39m [32m'react-native-root-toast'[39m[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 24 |[39m
|
||
[90m 25 |[39m [36mconst[39m [33mSTRIPE_API_URL[39m [33m=[39m [32m'https://wellnuo.smartlaunchhub.com/api/stripe'[39m[33m;[39m
|
||
[90m 26 |[39m [36mconst[39m [33mSUBSCRIPTION_PRICE[39m [33m=[39m [35m49[39m[33m;[39m [90m// $49/month[39m[0m
|
||
|
||
Import stack:
|
||
|
||
app/(tabs)/beneficiaries/[id]/subscription.tsx
|
||
| import "react-native-root-toast"
|
||
|
||
app (require.context)
|
||
|
||
Unable to resolve "react-native-root-toast" from "app/(tabs)/beneficiaries/[id]/subscription.tsx"
|
||
[0m [90m 21 |[39m [36mimport[39m type { [33mBeneficiary[39m } [36mfrom[39m [32m'@/types'[39m[33m;[39m
|
||
[90m 22 |[39m [36mimport[39m [33m*[39m [36mas[39m [33mExpoClipboard[39m [36mfrom[39m [32m'expo-clipboard'[39m[33m;[39m
|
||
[31m[1m>[22m[39m[90m 23 |[39m [36mimport[39m [33mToast[39m [36mfrom[39m [32m'react-native-root-toast'[39m[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 24 |[39m
|
||
[90m 25 |[39m [36mconst[39m [33mSTRIPE_API_URL[39m [33m=[39m [32m'https://wellnuo.smartlaunchhub.com/api/stripe'[39m[33m;[39m
|
||
[90m 26 |[39m [36mconst[39m [33mSUBSCRIPTION_PRICE[39m [33m=[39m [35m49[39m[33m;[39m [90m// $49/month[39m[0m
|
||
|
||
Import stack:
|
||
|
||
app/(tabs)/beneficiaries/[id]/subscription.tsx
|
||
| import "react-native-root-toast"
|
||
|
||
app (require.context)
|
||
|
||
Unable to resolve "react-native-root-toast" from "app/(tabs)/beneficiaries/[id]/subscription.tsx"
|
||
[0m [90m 21 |[39m [36mimport[39m type { [33mBeneficiary[39m } [36mfrom[39m [32m'@/types'[39m[33m;[39m
|
||
[90m 22 |[39m [36mimport[39m [33m*[39m [36mas[39m [33mExpoClipboard[39m [36mfrom[39m [32m'expo-clipboard'[39m[33m;[39m
|
||
[31m[1m>[22m[39m[90m 23 |[39m [36mimport[39m [33mToast[39m [36mfrom[39m [32m'react-native-root-toast'[39m[33m;[39m
|
||
[90m |[39m [31m[1m^[22m[39m
|
||
[90m 24 |[39m
|
||
[90m 25 |[39m [36mconst[39m [33mSTRIPE_API_URL[39m [33m=[39m [32m'https://wellnuo.smartlaunchhub.com/api/stripe'[39m[33m;[39m
|
||
[90m 26 |[39m [36mconst[39m [33mSUBSCRIPTION_PRICE[39m [33m=[39m [35m49[39m[33m;[39m [90m// $49/month[39m[0m
|
||
|
||
Import stack:
|
||
|
||
app/(tabs)/beneficiaries/[id]/subscription.tsx
|
||
| import "react-native-root-toast"
|
||
|
||
app (require.context)
|
||
|