(env: Env, message: ReceiptCheckMessage)
| 25 | } |
| 26 | |
| 27 | async function processReceiptCheck(env: Env, message: ReceiptCheckMessage): Promise<void> { |
| 28 | const accessToken = await env.EXPO_ACCESS_TOKEN.get(); |
| 29 | const { staleTokens, receiptErrors } = await checkPushReceipts( |
| 30 | message.ticketTokenPairs, |
| 31 | accessToken |
| 32 | ); |
| 33 | |
| 34 | if (staleTokens.length > 0) { |
| 35 | const db = getWorkerDb(env.HYPERDRIVE.connectionString); |
| 36 | await db.delete(user_push_tokens).where(inArray(user_push_tokens.token, staleTokens)); |
| 37 | console.log(`Receipt check: cleaned up ${staleTokens.length} stale push token(s)`); |
| 38 | } |
| 39 | |
| 40 | if (receiptErrors.length > 0) { |
| 41 | console.warn('Receipt check returned non-stale Expo receipt error(s)', { |
| 42 | errorCount: receiptErrors.length, |
| 43 | errors: receiptErrors.map(error => ({ |
| 44 | ticketId: error.ticketId, |
| 45 | errorCode: error.errorCode, |
| 46 | message: error.message, |
| 47 | })), |
| 48 | }); |
| 49 | } |
| 50 | } |
no test coverage detected