diff --git a/resources/server/utils/PromiseNetEvents/PromiseResponse.ts b/resources/server/utils/PromiseNetEvents/PromiseResponse.ts deleted file mode 100644 index 428a1abc7..000000000 --- a/resources/server/utils/PromiseNetEvents/PromiseResponse.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { FxServerRespError } from '../../../../typings/phone'; -import { JSONLike, PromiseRespStatus, RawDataResp } from './promise.types'; -import { netEventLogger } from './utils'; -import { config } from '../../server'; - -// Meh temp maybe not idk. -interface PromiseRespDebug { - /* Start time returned by process.hrtime()*/ - started: [number, number]; -} - -export class PromiseResponse { - public readonly respEventName: string; - public readonly source: number; - private promiseRespDebug: PromiseRespDebug; - protected responseData: RawDataResp; - - /** - * Create a new promise response context for use in the onNetPrommise, - * callback argument - * - * @param respEventName - The response event name to emit to on resp.send() - * @param source - The source of the player to emit back to - */ - constructor(respEventName: string, source: number) { - this.respEventName = respEventName; - this.source = source; - - this.promiseRespDebug = { - started: process.hrtime(), - }; - - this.responseData = { - body: {}, - status: 'in-progress', - }; - } - - /** - * Will emit back to the client with the data assigned using - * `setData`. Will send all data assigned to the this.responseData - * back to the client to resolve the promise. - * - * @return void - */ - public send(obj: JSONLike): void { - this.responseData.body = obj; - this.responseData.status = 'success'; - emitNet(this.respEventName, this.source, this.responseData); - - if (config.debug.level === 'silly') { - // Debug time data - const hrEnd = process.hrtime(this.promiseRespDebug.started); - // Divide by good old 1 x 10^6 - const nanoToMicro = hrEnd[1] / 1e6; - const secondExec = hrEnd[0]; - - netEventLogger.silly(`Promise emitted to client after ${secondExec}s ${nanoToMicro}ms`); - } - } - - /** - * Will change the status field present on promiseResponses, this doesn't - * really have a use for now except metadata - * - * @return void - */ - - public setStatus(status: PromiseRespStatus): this { - this.responseData.status = status; - return this; - } - - /** - * Will emit back to the client with the data assigned using - * `setData`. Will send all data assigned to the this.responseData - * back to the client to resolve the promise. - * - * @return void - */ - public sendError({ errorCode, message }: FxServerRespError): void { - this.responseData = { - error: { - errorCode, - message, - }, - body: {}, - status: 'error', - }; - } -} diff --git a/resources/server/utils/PromiseNetEvents/onNetPromise.ts b/resources/server/utils/PromiseNetEvents/onNetPromise.ts index 83d151aaf..3da984866 100644 --- a/resources/server/utils/PromiseNetEvents/onNetPromise.ts +++ b/resources/server/utils/PromiseNetEvents/onNetPromise.ts @@ -1,22 +1,23 @@ -import { ErrorStringKeys } from '../../../../typings/phone'; import { getSource } from '../miscUtils'; -import { PromiseResponse } from './PromiseResponse'; import { mainLogger } from '../../sv_logger'; -import { CBSignature, PromiseRequest, PromiseRequestData } from './promise.types'; +import { CBSignature, PromiseEventReturnFunc, PromiseRequest } from './promise.types'; const netEventLogger = mainLogger.child({ module: 'events' }); -export function onNetPromise(eventName: string, cb: CBSignature) { - onNet(eventName, async (respEventName: string, data: PromiseRequestData) => { +export function onNetPromise(eventName: string, cb: CBSignature): void { + onNet(eventName, async (respEventName: string, data: T) => { const src = getSource(); const promiseRequest: PromiseRequest = { source: src, - body: data, + data, }; - // Lets hope GC can clean you up - const promiseResp = new PromiseResponse(respEventName, src); + const promiseResp: PromiseEventReturnFunc = (data: unknown) => { + emitNet(respEventName, src, data); + netEventLogger.debug(`Response Promise Event ${respEventName}, Data >>`); + netEventLogger.debug(data); + }; // In case the cb is a promise, we use Promise.resolve Promise.resolve(cb(promiseRequest, promiseResp)).catch((e) => { @@ -24,10 +25,7 @@ export function onNetPromise(eventName: string, cb: CBSignature) { `An error occured for a onNetPromise (${eventName}), Error: ${e.message}`, ); - promiseResp.sendError({ - errorCode: ErrorStringKeys.SERVER_ERROR, - message: 'An error occured on the server', - }); + promiseResp({ err: true, errMsg: 'Server error occurred' }); }); }); } diff --git a/resources/server/utils/PromiseNetEvents/promise.types.ts b/resources/server/utils/PromiseNetEvents/promise.types.ts index 1afe60dbc..2e8e1edf8 100644 --- a/resources/server/utils/PromiseNetEvents/promise.types.ts +++ b/resources/server/utils/PromiseNetEvents/promise.types.ts @@ -1,30 +1,8 @@ -import { FxServerRespError } from '../../../../typings/phone'; -import { PromiseResponse } from './PromiseResponse'; - -export type BasicPrimitives = string | number | boolean; - -export interface JSONLike { - [key: string]: BasicPrimitives; -} - -export type PromiseRespStatus = 'error' | 'success' | 'warning' | 'in-progress'; - -export interface RawDataResp { - status: PromiseRespStatus; - error?: FxServerRespError; - body: JSONLike; -} - export interface PromiseRequest { - body: PromiseRequestData; + data: T; source: number; } -export interface PromiseRequestData { - data: T; -} +export type PromiseEventReturnFunc = (returnData: unknown) => void; -export type CBSignature = ( - request: PromiseRequest, - response: PromiseResponse, -) => Promise | void; +export type CBSignature = (reqObj: PromiseRequest, resp: PromiseEventReturnFunc) => void; diff --git a/resources/server/utils/PromiseNetEvents/utils.ts b/resources/server/utils/PromiseNetEvents/utils.ts deleted file mode 100644 index 93e2fb6fa..000000000 --- a/resources/server/utils/PromiseNetEvents/utils.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { mainLogger } from '../../sv_logger'; - -export const netEventLogger = mainLogger.child({ - module: 'net-events', -});