import { payloadId } from '@walletconnect/utils'; import { createWalletEvents } from '../common/WalletEvent'; import { singleton } from '../decorator/singleton.decorator'; @singleton export class NativeSvr { _event = createWalletEvents(); _subscribeToResponse(id: string, callback) { this._event.on(`response:${id}`, callback); } _subscribeToCallResponse(id) { return new Promise((resolve, reject) => { this._subscribeToResponse(id, (result) => { if (result.errcode) { reject(result.errmessage || result.errcode); return; } resolve(result.data); }); }); } public handleNativeCallback(...args) { let id = args[0]; let result = JSON.parse(args[1]); this._event.emit(`response:${id}`, result); } public signWithGoogle() { let id = payloadId(); jsb.signWithGoogle(id); return this._subscribeToCallResponse(id); } public signWithApple() { let id = payloadId(); jsb.signWithApple(id); return this._subscribeToCallResponse(id); } public signWithTikTok() { let id = payloadId(); jsb.signWithTikTok(id); return this._subscribeToCallResponse(id); } public signWithFacebook() { let id = payloadId(); jsb.signWithFacebook(id); return this._subscribeToCallResponse(id); } public signWithTwitter() { let id = payloadId(); jsb.signWithTwitter(id); return this._subscribeToCallResponse(id); } public signWithEmail() { let id = payloadId(); jsb.signWithEmail(id); return this._subscribeToCallResponse(id); } public signOutGoogle() { let id = payloadId(); jsb.signOutGoogle(id); return this._subscribeToCallResponse(id); } public scanQRCode(title: string) { let id = payloadId(); jsb.scanQRCode(id, title); return this._subscribeToCallResponse(id); } public buyProduct(productId: string, orderId: string) { let id = payloadId(); jsb.beginBuy(id, productId, orderId); return this._subscribeToCallResponse(id); } public queryPurchase() { let id = payloadId(); jsb.queryPurchase(id); return this._subscribeToCallResponse(id); } public queryProducts(productIds: string) { let id = payloadId(); jsb.queryProducts(id, productIds); return this._subscribeToCallResponse(id); } public finishTransaction(transactionId: string) { let id = payloadId(); jsb.finishTransaction(id, transactionId); return this._subscribeToCallResponse(id); } public authGetStoragePass(key: string) { let id = payloadId(); jsb.authGetStoragePass(id, key); return this._subscribeToCallResponse(id); } public passStorageState(key: string) { let id = payloadId(); jsb.passStorageState(id, key); return this._subscribeToCallResponse(id); } public storagePass(key: string, pass: string) { let id = payloadId(); jsb.storagePass(id, key, pass); return this._subscribeToCallResponse(id); } public clientLogin() { let id = payloadId(); jsb.getClientId(id); return this._subscribeToCallResponse(id); } }