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,
},
};
},
),
);
}