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 });
|
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;
|
const callback = payload.args.pop() as AnyToVoidFunction;
|
||||||
requestState.callback = callback;
|
requestState.callback = callback;
|
||||||
requestStatesByCallback.set(callback, requestState);
|
requestStatesByCallback.set(callback, requestState);
|
||||||
|
|||||||
@ -33,6 +33,7 @@ export type OriginRequest = {
|
|||||||
messageId?: string;
|
messageId?: string;
|
||||||
name: keyof Methods;
|
name: keyof Methods;
|
||||||
args: MethodArgs<keyof Methods>;
|
args: MethodArgs<keyof Methods>;
|
||||||
|
withCallback?: boolean;
|
||||||
} | {
|
} | {
|
||||||
type: 'ping';
|
type: 'ping';
|
||||||
messageId?: string;
|
messageId?: string;
|
||||||
|
|||||||
@ -24,9 +24,11 @@ onmessage = async (message: OriginMessageEvent) => {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'callMethod': {
|
case 'callMethod': {
|
||||||
const { messageId, name, args } = data;
|
const {
|
||||||
|
messageId, name, args, withCallback,
|
||||||
|
} = data;
|
||||||
try {
|
try {
|
||||||
if (messageId) {
|
if (messageId && withCallback) {
|
||||||
const callback = (...callbackArgs: any[]) => {
|
const callback = (...callbackArgs: any[]) => {
|
||||||
const lastArg = callbackArgs[callbackArgs.length - 1];
|
const lastArg = callbackArgs[callbackArgs.length - 1];
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,7 @@ type CallMethodData = {
|
|||||||
messageId?: string;
|
messageId?: string;
|
||||||
name: string;
|
name: string;
|
||||||
args: any;
|
args: any;
|
||||||
|
withCallback?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
type OriginMessageData = CallMethodData | {
|
type OriginMessageData = CallMethodData | {
|
||||||
@ -78,6 +79,8 @@ export default class WorkerConnector {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (typeof payload.args[payload.args.length - 1] === 'function') {
|
if (typeof payload.args[payload.args.length - 1] === 'function') {
|
||||||
|
payload.withCallback = true;
|
||||||
|
|
||||||
const callback = payload.args.pop() as AnyToVoidFunction;
|
const callback = payload.args.pop() as AnyToVoidFunction;
|
||||||
requestState.callback = callback;
|
requestState.callback = callback;
|
||||||
requestStatesByCallback.set(callback, requestState);
|
requestStatesByCallback.set(callback, requestState);
|
||||||
|
|||||||
@ -13,9 +13,11 @@ export default function createInterface(api: Record<string, Function>) {
|
|||||||
|
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
case 'callMethod': {
|
case 'callMethod': {
|
||||||
const { messageId, name, args } = data;
|
const {
|
||||||
|
messageId, name, args, withCallback,
|
||||||
|
} = data;
|
||||||
try {
|
try {
|
||||||
if (messageId) {
|
if (messageId && withCallback) {
|
||||||
const callback = (...callbackArgs: any[]) => {
|
const callback = (...callbackArgs: any[]) => {
|
||||||
const lastArg = callbackArgs[callbackArgs.length - 1];
|
const lastArg = callbackArgs[callbackArgs.length - 1];
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user