MCPcopy Create free account
hub / github.com/ProtonDriveApps/sdk / initUploadModule

Function initUploadModule

client/js/src/internal/upload/index.ts:22–117  ·  view source on GitHub ↗
(
    telemetry: ProtonDriveTelemetry,
    apiService: DriveAPIService,
    driveCrypto: DriveCrypto,
    sharesService: SharesService,
    nodesService: NodesService,
    featureFlagProvider: FeatureFlagProvider,
    clientUid?: string,
    allowSmallFileUpload: boolean = true,
)

Source from the content-addressed store, hash-verified

20 * and verifications.
21 */
22export function initUploadModule(
23 telemetry: ProtonDriveTelemetry,
24 apiService: DriveAPIService,
25 driveCrypto: DriveCrypto,
26 sharesService: SharesService,
27 nodesService: NodesService,
28 featureFlagProvider: FeatureFlagProvider,
29 clientUid?: string,
30 allowSmallFileUpload: boolean = true,
31) {
32 const api = new UploadAPIService(apiService, clientUid);
33 const cryptoService = new UploadCryptoService(telemetry, driveCrypto, nodesService);
34
35 const uploadTelemetry = new UploadTelemetry(telemetry, sharesService);
36 const manager = new UploadManager(telemetry, api, cryptoService, nodesService, clientUid);
37
38 const queue = new UploadQueue();
39
40 async function shouldUseSmallFileUpload(expectedSize: number): Promise<boolean> {
41 const isEnabled =
42 allowSmallFileUpload && (await featureFlagProvider.isEnabled(FeatureFlags.DriveSmallFileUpload));
43 if (!isEnabled) {
44 return false;
45 }
46 return expectedSize < SMALL_FILE_SIZE_LIMIT;
47 }
48
49 /**
50 * Returns a FileUploader instance that can be used to upload a file to
51 * a parent folder.
52 *
53 * This operation does not call the API, it only returns a FileUploader
54 * instance when the upload queue has capacity.
55 */
56 async function getFileUploader(
57 parentFolderUid: string,
58 name: string,
59 metadata: UploadMetadata,
60 signal?: AbortSignal,
61 ): Promise<FileUploader> {
62 await queue.waitForCapacity(metadata.expectedSize, signal);
63
64 const onFinish = () => {
65 queue.releaseCapacity(metadata.expectedSize);
66 };
67
68 return new FileUploaderClass(
69 uploadTelemetry,
70 api,
71 cryptoService,
72 manager,
73 parentFolderUid,
74 name,
75 metadata,
76 onFinish,
77 shouldUseSmallFileUpload,
78 signal,
79 );

Callers 3

constructorMethod · 0.90
constructorMethod · 0.90
index.test.tsFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected