jcwallet/src/services/NativeSvr.ts
2023-08-17 18:59:58 +08:00

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);
}
}