eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.71 kB
JavaScript
import{createLogger}from"#internal/logging.js";import{TELEGRAM_AUTHORIZATION_CALLBACK_PREFIX,renderTelegramAuthorizationPrompt}from"#public/channels/telegram/authorization.js";const log=createLogger(`telegram.authorization-callback`);async function dispatchTelegramAuthorizationCallback(e){if(e.query.data?.slice(TELEGRAM_AUTHORIZATION_CALLBACK_PREFIX.length)!==e.query.from.id){await e.telegram.telegram.answerCallbackQuery({callbackQueryId:e.query.id,showAlert:!0,text:`Only the requester can authorize this connection.`});return}if(e.query.message&&e.state.chatId)try{let t=await e.resolveSession(e.continuationToken);if(t===void 0){await inactiveAuthorization(e.telegram.telegram,e.query.id);return}let n=await findPendingAuthorization(t);if(n===void 0){await inactiveAuthorization(e.telegram.telegram,e.query.id);return}await e.telegram.telegram.postEphemeral(e.query.from.id,renderTelegramAuthorizationPrompt(n.data),{callbackQueryId:e.query.id}),await e.telegram.telegram.answerCallbackQuery({callbackQueryId:e.query.id,text:`Sign-in prompt sent privately.`})}catch(e){log.error(`Telegram authorization callback delivery failed`,{error:e})}}async function inactiveAuthorization(e,t){await e.answerCallbackQuery({callbackQueryId:t,showAlert:!0,text:`This authorization request is no longer active.`})}async function findPendingAuthorization(e){let t=await e.getStreamTailIndex();if(t<0)return;let n=(await e.getEventStream({startIndex:0})).getReader(),r;try{for(let e=0;e<=t;e+=1){let e=await n.read();if(e.done)break;e.value.type===`authorization.required`&&e.value.data.candidateId===void 0&&(r=e.value)}}finally{await n.cancel().catch(()=>{})}return r}export{dispatchTelegramAuthorizationCallback};