mirror of
https://github.com/bitwarden/browser
synced 2025-12-21 18:53:29 +00:00
Platform/pm 19/platform team file moves (#5460)
* Rename service-factory folder * Move cryptographic service factories * Move crypto models * Move crypto services * Move domain base class * Platform code owners * Move desktop log services * Move log files * Establish component library ownership * Move background listeners * Move background background * Move localization to Platform * Move browser alarms to Platform * Move browser state to Platform * Move CLI state to Platform * Move Desktop native concerns to Platform * Move flag and misc to Platform * Lint fixes * Move electron state to platform * Move web state to Platform * Move lib state to Platform * Fix broken tests * Rename interface to idiomatic TS * `npm run prettier` 🤖 * Resolve review feedback * Set platform as owners of web core and shared * Expand moved services * Fix test types --------- Co-authored-by: Hinton <hinton@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { FileDownloadRequest } from "./file-download.request";
|
||||
|
||||
export class FileDownloadBuilder {
|
||||
get blobOptions(): any {
|
||||
const options = this._request.blobOptions ?? {};
|
||||
if (options.type == null) {
|
||||
options.type = this.fileType;
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
get blob(): Blob {
|
||||
if (this.blobOptions != null) {
|
||||
return new Blob([this._request.blobData], this.blobOptions);
|
||||
} else {
|
||||
return new Blob([this._request.blobData]);
|
||||
}
|
||||
}
|
||||
|
||||
get downloadMethod(): "save" | "open" {
|
||||
if (this._request.downloadMethod != null) {
|
||||
return this._request.downloadMethod;
|
||||
}
|
||||
return this.fileType != "application/pdf" ? "save" : "open";
|
||||
}
|
||||
|
||||
private get fileType() {
|
||||
const fileNameLower = this._request.fileName.toLowerCase();
|
||||
if (fileNameLower.endsWith(".pdf")) {
|
||||
return "application/pdf";
|
||||
} else if (fileNameLower.endsWith(".xlsx")) {
|
||||
return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
||||
} else if (fileNameLower.endsWith(".docx")) {
|
||||
return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
|
||||
} else if (fileNameLower.endsWith(".pptx")) {
|
||||
return "application/vnd.openxmlformats-officedocument.presentationml.presentation";
|
||||
} else if (fileNameLower.endsWith(".csv")) {
|
||||
return "text/csv";
|
||||
} else if (fileNameLower.endsWith(".png")) {
|
||||
return "image/png";
|
||||
} else if (fileNameLower.endsWith(".jpg") || fileNameLower.endsWith(".jpeg")) {
|
||||
return "image/jpeg";
|
||||
} else if (fileNameLower.endsWith(".gif")) {
|
||||
return "image/gif";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
constructor(private readonly _request: FileDownloadRequest) {}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
export type FileDownloadRequest = {
|
||||
fileName: string;
|
||||
blobData: BlobPart;
|
||||
blobOptions?: BlobPropertyBag;
|
||||
downloadMethod?: "save" | "open";
|
||||
};
|
||||
@@ -0,0 +1,5 @@
|
||||
import { FileDownloadRequest } from "./file-download.request";
|
||||
|
||||
export abstract class FileDownloadService {
|
||||
download: (request: FileDownloadRequest) => void;
|
||||
}
|
||||
Reference in New Issue
Block a user