127 lines
3.0 KiB
TypeScript
127 lines
3.0 KiB
TypeScript
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);
|
|
}
|
|
}
|