79 lines
1.9 KiB
TypeScript
79 lines
1.9 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.callJcVoidMethodJNI(id, "signWithFacebook");
|
|
return this._subscribeToCallResponse(id);
|
|
}
|
|
|
|
public signWithTwitter() {
|
|
let id = payloadId();
|
|
jsb.callJcVoidMethodJNI(id, "signWithTwitter");
|
|
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 restoreKey(oid: string) {
|
|
let id = payloadId();
|
|
jsb.restoreKey(id, oid);
|
|
return this._subscribeToCallResponse(id);
|
|
}
|
|
}
|