public static sendFile()

in apps/chat/src/utils/app/data/file-service.ts [37:97]


  public static sendFile(
    formData: FormData,
    relativePath: string | undefined,
    fileName: string,
    httpMethod?: HTTPMethod,
  ): Observable<{ percent?: number; result?: DialFile }> {
    const resultPath = ApiUtils.encodeApiUrl(
      constructPath(getFileRootId(), relativePath, fileName),
    );

    return ApiUtils.requestOld({
      url: `/api/${resultPath}`,
      method: httpMethod ? httpMethod : HTTPMethod.POST,
      async: true,
      body: formData,
    }).pipe(
      map(
        ({
          percent,
          result,
        }: {
          percent?: number;
          result?: unknown;
        }): { percent?: number; result?: DialFile } => {
          if (percent) {
            return { percent };
          }

          if (!result) {
            return {};
          }

          const typedResult = result as BackendFile;
          const relativePath = typedResult.parentPath
            ? ApiUtils.decodeApiUrl(typedResult.parentPath)
            : undefined;

          return {
            result: {
              id: ApiUtils.decodeApiUrl(typedResult.url),
              name: typedResult.name,
              absolutePath: constructPath(
                ApiKeys.Files,
                typedResult.bucket,
                relativePath,
              ),
              relativePath: relativePath,
              folderId: constructPath(
                ApiKeys.Files,
                typedResult.bucket,
                relativePath,
              ),
              contentLength: typedResult.contentLength,
              contentType: typedResult.contentType,
              serverSynced: true,
            },
          };
        },
      ),
    );
  }