Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / docs-core / lib / UseCase / ExportAndDownload.ts
blobc6187a9116cd8fac28f5e6f31cb9b410c3558ecb
1 import type { DataTypesThatDocumentCanBeExportedAs } from '@proton/docs-shared'
2 import { DocumentExportMimeTypes } from '@proton/docs-shared'
3 import type { UseCaseInterface } from '../Domain/UseCase/UseCaseInterface'
4 import { Result } from '@proton/docs-shared'
6 export class ExportAndDownload implements UseCaseInterface<void> {
7   async execute(
8     data: Uint8Array,
9     docName: string,
10     format: DataTypesThatDocumentCanBeExportedAs,
11   ): Promise<Result<void>> {
12     const name = `${docName}.${format}`
13     const mimeType = DocumentExportMimeTypes[format]
14     const blob = new Blob([data], {
15       type: mimeType,
16     })
18     const url = URL.createObjectURL(blob)
20     const a = document.createElement('a')
21     a.download = name
22     a.href = url
24     document.body.appendChild(a)
26     a.click()
27     a.remove()
29     return Result.ok()
30   }