implement RestoreThenUpload for charadata
This commit is contained in:
@@ -621,8 +621,29 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase
|
||||
var hasDto = _ownCharaData.TryGetValue(id, out var dto);
|
||||
if (!hasDto || dto == null) return;
|
||||
|
||||
var missingFileList = dto.MissingFiles.ToList();
|
||||
UiBlockingComputation = UploadTask = UploadFiles(missingFileList, async () =>
|
||||
UiBlockingComputation = UploadTask = RestoreThenUpload(dto);
|
||||
}
|
||||
|
||||
private async Task<(string Output, bool Success)> RestoreThenUpload(CharaDataFullExtendedDto dto)
|
||||
{
|
||||
var newDto = await _apiController.CharaDataAttemptRestore(dto.Id).ConfigureAwait(false);
|
||||
if (newDto == null)
|
||||
{
|
||||
_ownCharaData.Remove(dto.Id);
|
||||
_metaInfoCache.Remove(dto.FullId, out _);
|
||||
return ("No such DTO found", false);
|
||||
}
|
||||
|
||||
await AddOrUpdateDto(newDto).ConfigureAwait(false);
|
||||
_ = _ownCharaData.TryGetValue(dto.Id, out var extendedDto);
|
||||
|
||||
if (!extendedDto!.HasMissingFiles)
|
||||
{
|
||||
return ("Restored successfully", true);
|
||||
}
|
||||
|
||||
var missingFileList = extendedDto!.MissingFiles.ToList();
|
||||
return await UploadFiles(missingFileList, async () =>
|
||||
{
|
||||
var newFilePaths = dto.FileGamePaths;
|
||||
foreach (var missing in missingFileList)
|
||||
@@ -635,7 +656,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase
|
||||
};
|
||||
var res = await _apiController.CharaDataUpdate(updateDto).ConfigureAwait(false);
|
||||
await AddOrUpdateDto(res).ConfigureAwait(false);
|
||||
});
|
||||
}).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
internal void ApplyDataToSelf(CharaDataFullExtendedDto dataDto)
|
||||
|
||||
Reference in New Issue
Block a user