Fix terminating session when signing out (#2039)

This commit is contained in:
Alexander Zinchuk 2022-09-20 14:59:11 +02:00
parent cd2e2a4928
commit 58d8242d17
5 changed files with 15 additions and 5 deletions

View File

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

View File

@ -33,6 +33,7 @@ export type OriginRequest = {
messageId?: string;
name: keyof Methods;
args: MethodArgs<keyof Methods>;
withCallback?: boolean;
} | {
type: 'ping';
messageId?: string;

View File

@ -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];

View File

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

View File

@ -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];