{"version":3,"file":"channel-manager.mjs","sources":["../../../src/pullClient/channel-manager.ts"],"sourcesContent":["import type { AjaxResult } from '../core/http/ajax-result'\nimport type { TypeChanel, TypeChannelManagerParams, TypePublicIdDescriptor } from '../types/pull'\nimport type { TypeB24 } from '../types/b24'\nimport type { SuccessPayload } from '../types/payloads'\nimport type { LoggerInterface } from '../logger'\nimport { LoggerFactory } from '../logger'\n\nexport class ChannelManager {\n  private _logger: LoggerInterface\n  private _publicIds: Map<number, TypeChanel>\n  private _restClient: TypeB24\n  private _getPublicListMethod: string\n\n  constructor(params: TypeChannelManagerParams) {\n    this._logger = LoggerFactory.createNullLogger()\n    this._publicIds = new Map()\n\n    this._restClient = params.b24\n    this._getPublicListMethod = params.getPublicListMethod\n  }\n\n  setLogger(logger: LoggerInterface): void {\n    this._logger = logger\n  }\n\n  getLogger(): LoggerInterface {\n    return this._logger\n  }\n\n  /**\n   * @param {Array} users Array of user ids.\n   * @return {Promise}\n   */\n  async getPublicIds(users: number[]): Promise<Record<number, TypeChanel>> {\n    const now = new Date()\n\n    const result: Record<number, TypeChanel> = {}\n    const unknownUsers: number[] = []\n\n    for (const userId of users) {\n      const chanel = this._publicIds.get(userId)\n\n      if (chanel && chanel.end > now) {\n        result[chanel.userId] = chanel\n      } else {\n        unknownUsers.push(userId)\n      }\n    }\n\n    if (unknownUsers.length === 0) {\n      return Promise.resolve(result)\n    }\n\n    /**\n     * @memo we not use Promise.reject()\n     */\n    return new Promise((resolve) => {\n      this._restClient\n        .callMethod(this._getPublicListMethod, {\n          users: unknownUsers\n        })\n        .then((response: AjaxResult) => {\n          const data = (response.getData() as SuccessPayload<Record<string, TypePublicIdDescriptor>>).result\n\n          /**\n           * @memo test this\n           */\n          this.setPublicIds(Object.values(data))\n\n          for (const userId of unknownUsers) {\n            const chanel = this._publicIds.get(userId)\n            if (chanel) {\n              result[chanel.userId] = chanel\n            }\n          }\n\n          resolve(result)\n        })\n        .catch((error: Error | string) => {\n          this.getLogger().error('some error in getPublicIds', { error })\n          return resolve({})\n        })\n    })\n  }\n\n  /**\n   * @param {TypePublicIdDescriptor[]} publicIds\n   */\n  public setPublicIds(publicIds: TypePublicIdDescriptor[]): void {\n    publicIds.forEach((publicIdDescriptor: TypePublicIdDescriptor) => {\n      const userId = Number(publicIdDescriptor.user_id)\n      this._publicIds.set(userId, {\n        userId: userId,\n        publicId: publicIdDescriptor.public_id,\n        signature: publicIdDescriptor.signature,\n        start: new Date(publicIdDescriptor.start),\n        end: new Date(publicIdDescriptor.end)\n      } as TypeChanel)\n    })\n  }\n}\n"],"names":[],"mappings":"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"}