refactor: mobile - send livephoto as a separate request (#5275)

* refactor: mobile - send livephoto as a separate request

* fix: create new request for live asset

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
shenlong 2023-11-26 03:45:18 +00:00 committed by GitHub
parent ad06502539
commit e65d1d5930
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -278,13 +278,6 @@ class BackupService {
req.files.add(assetRawUploadData);
if (entity.isLivePhoto) {
var livePhotoRawUploadData = await _getLivePhotoFile(entity);
if (livePhotoRawUploadData != null) {
req.files.add(livePhotoRawUploadData);
}
}
setCurrentUploadAssetCb(
CurrentUploadAsset(
id: entity.id,
@ -299,6 +292,29 @@ class BackupService {
var response =
await httpClient.send(req, cancellationToken: cancelToken);
// Send live photo separately
if (entity.isLivePhoto) {
var livePhotoRawUploadData = await _getLivePhotoFile(entity);
if (livePhotoRawUploadData != null) {
var livePhotoReq = MultipartRequest(
req.method,
req.url,
onProgress: req.onProgress,
)
..headers.addAll(req.headers)
..fields.addAll(req.fields);
livePhotoReq.files.add(livePhotoRawUploadData);
// Send live photo only if the non-motion part is successful
if (response.statusCode == 200 || response.statusCode == 201) {
response = await httpClient.send(
livePhotoReq,
cancellationToken: cancelToken,
);
}
}
}
if (response.statusCode == 200) {
// asset is a duplicate (already exists on the server)
duplicatedAssetIds.add(entity.id);
@ -356,7 +372,7 @@ class BackupService {
var fileStream = motionFile.openRead();
String fileName = p.basename(motionFile.path);
return http.MultipartFile(
"livePhotoData",
"assetData",
fileStream,
motionFile.lengthSync(),
filename: fileName,