@privy-io/js-sdk-core
Version:
Vanilla JS client for the Privy Auth API
2 lines (1 loc) • 1.8 kB
JavaScript
var r=require("../../../../Error.js"),e=require("./getCrossAppAccountByWalletAddress.js"),t=require("./getProviderAccessTokenOrRelink.js");require("../../linkWithCrossAppAuth.js");exports.sendCrossAppRequest=({client:s,openAuthSession:o})=>{let i=t.getProviderAccessTokenOrRelink({client:s,openAuthSession:o});return async({user:t,request:a,redirectUrl:n,address:p})=>{let c=e.getCrossAppAccountByWalletAddress(t,p);if(!c)throw new r.PrivyClientError({code:"cross_app_invalid_wallet",error:"Cannot operate with this wallet address"});let l=c.provider_app_id,{connections:d}=await s.crossApp.getCrossAppConnections(),_=d.find((r=>r.provider_app_id===l));if(!_)throw new r.PrivyClientError({code:"cross_app_invalid_app",error:"Invalid connected app"});if(_.read_only)throw new r.PrivyClientError({code:"cross_app_read_only",error:"Cannot transact against a read-only provider app"});let u=await i({providerAppId:l,redirectUrl:n});if(!u)throw new r.PrivyClientError({code:"cross_app_request_error",error:"Wallet operations require a valid token"});let v={content:{request:{request:a}},timestamp:Date.now(),callbackUrl:n},w=new URL(`${_.provider_app_custom_api_url}/oauth/transact`);w.searchParams.set("communicationMode","redirect"),w.searchParams.set("token",u),w.searchParams.set("request",JSON.stringify(v));let{privy_cross_app_type:C,privy_cross_app_payload:A}=await o(w.href);if(!C||!A)throw new r.PrivyClientError({code:"cross_app_request_error",error:"Cross app request returned an invalid result"});if("PRIVY_CROSS_APP_ACTION_ERROR"===C)throw new r.PrivyClientError({code:"cross_app_request_error",error:A});if("PRIVY_CROSS_APP_ACTION_RESPONSE"!==C)throw new r.PrivyClientError({code:"cross_app_request_error",error:"Cross app request returned an invalid result"});return{result:A}}};
;