Fix terminating session when signing out (#2039)
This commit is contained in:
parent
cd2e2a4928
commit
58d8242d17
@ -135,7 +135,9 @@ function makeRequest(message: OriginRequest) {
|
||||
Object.assign(requestState, { resolve, reject });
|
||||
});
|
||||
|
||||
if (('args' in payload) && typeof payload.args[1] === 'function') {
|
||||
if ('args' in payload && 'name' in payload && typeof payload.args[1] === 'function') {
|
||||
payload.withCallback = true;
|
||||
|
||||
const callback = payload.args.pop() as AnyToVoidFunction;
|
||||
requestState.callback = callback;
|
||||
requestStatesByCallback.set(callback, requestState);
|
||||
|
||||
@ -33,6 +33,7 @@ export type OriginRequest = {
|
||||
messageId?: string;
|
||||
name: keyof Methods;
|
||||
args: MethodArgs<keyof Methods>;
|
||||
withCallback?: boolean;
|
||||
} | {
|
||||
type: 'ping';
|
||||
messageId?: string;
|
||||
|
||||
@ -24,9 +24,11 @@ onmessage = async (message: OriginMessageEvent) => {
|
||||
break;
|
||||
}
|
||||
case 'callMethod': {
|
||||
const { messageId, name, args } = data;
|
||||
const {
|
||||
messageId, name, args, withCallback,
|
||||
} = data;
|
||||
try {
|
||||
if (messageId) {
|
||||
if (messageId && withCallback) {
|
||||
const callback = (...callbackArgs: any[]) => {
|
||||
const lastArg = callbackArgs[callbackArgs.length - 1];
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ type CallMethodData = {
|
||||
messageId?: string;
|
||||
name: string;
|
||||
args: any;
|
||||
withCallback?: boolean;
|
||||
};
|
||||
|
||||
type OriginMessageData = CallMethodData | {
|
||||
@ -78,6 +79,8 @@ export default class WorkerConnector {
|
||||
});
|
||||
|
||||
if (typeof payload.args[payload.args.length - 1] === 'function') {
|
||||
payload.withCallback = true;
|
||||
|
||||
const callback = payload.args.pop() as AnyToVoidFunction;
|
||||
requestState.callback = callback;
|
||||
requestStatesByCallback.set(callback, requestState);
|
||||
|
||||
@ -13,9 +13,11 @@ export default function createInterface(api: Record<string, Function>) {
|
||||
|
||||
switch (data.type) {
|
||||
case 'callMethod': {
|
||||
const { messageId, name, args } = data;
|
||||
const {
|
||||
messageId, name, args, withCallback,
|
||||
} = data;
|
||||
try {
|
||||
if (messageId) {
|
||||
if (messageId && withCallback) {
|
||||
const callback = (...callbackArgs: any[]) => {
|
||||
const lastArg = callbackArgs[callbackArgs.length - 1];
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user