From f8a71343c524195366c3db6439b8e0f01dae3626 Mon Sep 17 00:00:00 2001 From: Mikhala <122326421+imx-mikhala@users.noreply.github.com> Date: Fri, 18 Oct 2024 13:43:25 +0800 Subject: [PATCH] refactor: ID-2589 Add json rpc referrer as optional param and set on game bridge (#2332) --- examples/passport/telegram-mini-app/app/page.tsx | 2 +- packages/game-bridge/src/index.ts | 1 + packages/passport/sdk/src/config/config.ts | 4 ++++ packages/passport/sdk/src/types.ts | 6 ++++++ packages/passport/sdk/src/zkEvm/zkEvmProvider.ts | 4 ++-- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/examples/passport/telegram-mini-app/app/page.tsx b/examples/passport/telegram-mini-app/app/page.tsx index a1324a92df..145f529eb0 100644 --- a/examples/passport/telegram-mini-app/app/page.tsx +++ b/examples/passport/telegram-mini-app/app/page.tsx @@ -16,7 +16,7 @@ export const passportInstance = new passport.Passport({ logoutRedirectUri: process.env.NEXT_PUBLIC_LOGOUT_REDIRECT_URI || "", audience: "platform_api", scope: "openid offline_access email transact", - // Enable crossSdkBridge to enable pre-approved transactions + // Set crossSdkBridgeEnabled to enable pre-approved transactions crossSdkBridgeEnabled: true, }); // #enddoc passport-telegram-mini-app-configuration diff --git a/packages/game-bridge/src/index.ts b/packages/game-bridge/src/index.ts index fc282c660f..c3878890ac 100644 --- a/packages/game-bridge/src/index.ts +++ b/packages/game-bridge/src/index.ts @@ -272,6 +272,7 @@ window.callFunction = async (jsonData: string) => { redirectUri: redirect ?? redirectUri, logoutRedirectUri: request?.logoutRedirectUri, crossSdkBridgeEnabled: true, + jsonRpcReferrer: 'http://imtblgamesdk.local', logoutMode, }; } diff --git a/packages/passport/sdk/src/config/config.ts b/packages/passport/sdk/src/config/config.ts index 771a39fccb..2b817221f5 100644 --- a/packages/passport/sdk/src/config/config.ts +++ b/packages/passport/sdk/src/config/config.ts @@ -50,6 +50,8 @@ export class PassportConfiguration { readonly crossSdkBridgeEnabled: boolean; + readonly jsonRpcReferrer: string; + readonly forceScwDeployBeforeMessageSignature: boolean; readonly popupOverlayOptions: PopupOverlayOptions; @@ -58,6 +60,7 @@ export class PassportConfiguration { baseConfig, overrides, crossSdkBridgeEnabled, + jsonRpcReferrer, forceScwDeployBeforeMessageSignature, popupOverlayOptions, ...oidcConfiguration @@ -69,6 +72,7 @@ export class PassportConfiguration { this.oidcConfiguration = oidcConfiguration; this.baseConfig = baseConfig; this.crossSdkBridgeEnabled = crossSdkBridgeEnabled || false; + this.jsonRpcReferrer = jsonRpcReferrer || ''; this.forceScwDeployBeforeMessageSignature = forceScwDeployBeforeMessageSignature || false; this.popupOverlayOptions = popupOverlayOptions || { disableGenericPopupOverlay: false, diff --git a/packages/passport/sdk/src/types.ts b/packages/passport/sdk/src/types.ts index 068e414515..cecaa41e92 100644 --- a/packages/passport/sdk/src/types.ts +++ b/packages/passport/sdk/src/types.ts @@ -92,6 +92,12 @@ export interface PassportModuleConfiguration */ crossSdkBridgeEnabled?: boolean; + /** + * Optional referrer URL to be sent with JSON-RPC requests. + * If specified, this value will be passed as the referrer in fetch options. + */ + jsonRpcReferrer?: string; + /** * Options for disabling the Passport popup overlays. */ diff --git a/packages/passport/sdk/src/zkEvm/zkEvmProvider.ts b/packages/passport/sdk/src/zkEvm/zkEvmProvider.ts index d7469824e3..877bf2e93b 100644 --- a/packages/passport/sdk/src/zkEvm/zkEvmProvider.ts +++ b/packages/passport/sdk/src/zkEvm/zkEvmProvider.ts @@ -94,12 +94,12 @@ export class ZkEvmProvider implements Provider { this.#guardianClient = guardianClient; this.#passportEventEmitter = passportEventEmitter; - if (config.crossSdkBridgeEnabled) { + if (config.jsonRpcReferrer) { // StaticJsonRpcProvider by default sets the referrer as "client". // On Unreal 4 this errors as the browser used is expecting a valid URL. this.#rpcProvider = new StaticJsonRpcProvider({ url: this.#config.zkEvmRpcUrl, - fetchOptions: { referrer: 'http://imtblgamesdk.local' }, + fetchOptions: { referrer: config.jsonRpcReferrer }, }); } else { this.#rpcProvider = new StaticJsonRpcProvider(this.#config.zkEvmRpcUrl);