MultiUploader constructor

MultiUploader(
  1. List<UploadFile> fileInfos,
  2. Map<String, dynamic>? config
)

Implementation

MultiUploader(List<UploadFile> fileInfos, Map<String,dynamic>? config) {
	for (var i = 0; i < fileInfos.length; i++) {
		var fileObj = {
			'url': fileInfos[i].url,
			'file': fileInfos[i].file,
			'contentType': fileInfos[i].contentType,
			'fileName': fileInfos[i].fileName,
			'fileSize': fileInfos[i].fileSize,
			'status': FileStatus_NotUploaded,
			'loadedSize': 0,
			'lastLoadedSize': 0,
			'retryCount': 0
		};
		Log(fileObj.toString());

		// sort this.files in the decreasing order of fileSize
		// insertion sort algorithm
		//
		var inserted = false;
		for (var j = 0; j < this.files.length; j++) {
			if (this.files[j]['fileSize'] < fileObj['fileSize']) {
				this.files.insert(j, fileObj);
				inserted = true;
				break;
			}
		}

		if (!inserted) {
			this.files.add(fileObj);
		}
	}

	if (config != null) {
		if (config['maxConcurrency'] != null) this.config['maxConcurrency'] = config['maxConcurrency'];
		if (config['maxRetry'] != null) this.config['maxRetry'] = config['maxRetry'];
		if (config['monitorInterval'] != null) this.config['monitorInterval'] = config['monitorInterval'];
		if (config['cancelThreshold'] != null) this.config['cancelThreshold'] = config['cancelThreshold'];
	}
}