cleanup, actually show success/failure
This commit is contained in:
@@ -106,7 +106,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase
|
|||||||
public IDictionary<UserData, List<CharaDataMetaInfoExtendedDto>> SharedWithYouData => _sharedWithYouData;
|
public IDictionary<UserData, List<CharaDataMetaInfoExtendedDto>> SharedWithYouData => _sharedWithYouData;
|
||||||
public Task? UiBlockingComputation { get; private set; }
|
public Task? UiBlockingComputation { get; private set; }
|
||||||
public ValueProgress<string>? UploadProgress { get; private set; }
|
public ValueProgress<string>? UploadProgress { get; private set; }
|
||||||
public Task<(string Output, bool Success)>? UploadTask { get; private set; }
|
public Task<(string Output, bool Success)>? UploadTask { get; set; }
|
||||||
public bool BrioAvailable => _ipcManager.Brio.APIAvailable;
|
public bool BrioAvailable => _ipcManager.Brio.APIAvailable;
|
||||||
|
|
||||||
public Task ApplyCharaData(CharaDataDownloadDto dataDownloadDto, string charaName)
|
public Task ApplyCharaData(CharaDataDownloadDto dataDownloadDto, string charaName)
|
||||||
@@ -631,6 +631,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase
|
|||||||
{
|
{
|
||||||
_ownCharaData.Remove(dto.Id);
|
_ownCharaData.Remove(dto.Id);
|
||||||
_metaInfoCache.Remove(dto.FullId, out _);
|
_metaInfoCache.Remove(dto.FullId, out _);
|
||||||
|
UiBlockingComputation = null;
|
||||||
return ("No such DTO found", false);
|
return ("No such DTO found", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -639,11 +640,12 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase
|
|||||||
|
|
||||||
if (!extendedDto!.HasMissingFiles)
|
if (!extendedDto!.HasMissingFiles)
|
||||||
{
|
{
|
||||||
|
UiBlockingComputation = null;
|
||||||
return ("Restored successfully", true);
|
return ("Restored successfully", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
var missingFileList = extendedDto!.MissingFiles.ToList();
|
var missingFileList = extendedDto!.MissingFiles.ToList();
|
||||||
return await UploadFiles(missingFileList, async () =>
|
var result = await UploadFiles(missingFileList, async () =>
|
||||||
{
|
{
|
||||||
var newFilePaths = dto.FileGamePaths;
|
var newFilePaths = dto.FileGamePaths;
|
||||||
foreach (var missing in missingFileList)
|
foreach (var missing in missingFileList)
|
||||||
@@ -657,6 +659,9 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase
|
|||||||
var res = await _apiController.CharaDataUpdate(updateDto).ConfigureAwait(false);
|
var res = await _apiController.CharaDataUpdate(updateDto).ConfigureAwait(false);
|
||||||
await AddOrUpdateDto(res).ConfigureAwait(false);
|
await AddOrUpdateDto(res).ConfigureAwait(false);
|
||||||
}).ConfigureAwait(false);
|
}).ConfigureAwait(false);
|
||||||
|
|
||||||
|
UiBlockingComputation = null;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void ApplyDataToSelf(CharaDataFullExtendedDto dataDto)
|
internal void ApplyDataToSelf(CharaDataFullExtendedDto dataDto)
|
||||||
@@ -987,8 +992,7 @@ public sealed partial class CharaDataManager : DisposableMediatorSubscriberBase
|
|||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
UploadTask = null;
|
UiBlockingComputation = null;
|
||||||
UploadProgress = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,9 @@ internal sealed partial class CharaDataHubUi
|
|||||||
}
|
}
|
||||||
|
|
||||||
var indent = ImRaii.PushIndent(10f);
|
var indent = ImRaii.PushIndent(10f);
|
||||||
if (canUpdate || (!_charaDataManager.UploadTask?.IsCompleted ?? false))
|
if (canUpdate || _charaDataManager.UploadTask != null)
|
||||||
{
|
{
|
||||||
|
ImGuiHelpers.ScaledDummy(5);
|
||||||
UiSharedService.DrawGrouped(() =>
|
UiSharedService.DrawGrouped(() =>
|
||||||
{
|
{
|
||||||
if (canUpdate)
|
if (canUpdate)
|
||||||
@@ -364,7 +365,7 @@ internal sealed partial class CharaDataHubUi
|
|||||||
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Trash, "Delete Character Data"))
|
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Trash, "Delete Character Data"))
|
||||||
{
|
{
|
||||||
_ = _charaDataManager.DeleteCharaData(dataDto);
|
_ = _charaDataManager.DeleteCharaData(dataDto);
|
||||||
_selectedDtoId = string.Empty;
|
SelectedDtoId = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!UiSharedService.CtrlPressed())
|
if (!UiSharedService.CtrlPressed())
|
||||||
@@ -575,7 +576,7 @@ internal sealed partial class CharaDataHubUi
|
|||||||
{
|
{
|
||||||
var uDto = _charaDataManager.GetUpdateDto(entry.Id);
|
var uDto = _charaDataManager.GetUpdateDto(entry.Id);
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
if (string.Equals(entry.Id, _selectedDtoId, StringComparison.Ordinal))
|
if (string.Equals(entry.Id, SelectedDtoId, StringComparison.Ordinal))
|
||||||
_uiSharedService.IconText(FontAwesomeIcon.CaretRight);
|
_uiSharedService.IconText(FontAwesomeIcon.CaretRight);
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
@@ -592,48 +593,48 @@ internal sealed partial class CharaDataHubUi
|
|||||||
{
|
{
|
||||||
ImGui.TextUnformatted(idText);
|
ImGui.TextUnformatted(idText);
|
||||||
}
|
}
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
ImGui.TextUnformatted(entry.Description);
|
ImGui.TextUnformatted(entry.Description);
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
UiSharedService.AttachToolTip(entry.Description);
|
UiSharedService.AttachToolTip(entry.Description);
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
ImGui.TextUnformatted(entry.CreatedDate.ToLocalTime().ToString());
|
ImGui.TextUnformatted(entry.CreatedDate.ToLocalTime().ToString());
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
ImGui.TextUnformatted(entry.UpdatedDate.ToLocalTime().ToString());
|
ImGui.TextUnformatted(entry.UpdatedDate.ToLocalTime().ToString());
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
ImGui.TextUnformatted(entry.DownloadCount.ToString());
|
ImGui.TextUnformatted(entry.DownloadCount.ToString());
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
bool isDownloadable = !entry.HasMissingFiles
|
bool isDownloadable = !entry.HasMissingFiles
|
||||||
&& !string.IsNullOrEmpty(entry.GlamourerData);
|
&& !string.IsNullOrEmpty(entry.GlamourerData);
|
||||||
_uiSharedService.BooleanToColoredIcon(isDownloadable, false);
|
_uiSharedService.BooleanToColoredIcon(isDownloadable, false);
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
UiSharedService.AttachToolTip(isDownloadable ? "Can be downloaded by others" : "Cannot be downloaded: Has missing files or data, please review this entry manually");
|
UiSharedService.AttachToolTip(isDownloadable ? "Can be downloaded by others" : "Cannot be downloaded: Has missing files or data, please review this entry manually");
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
var count = entry.FileGamePaths.Concat(entry.FileSwaps).Count();
|
var count = entry.FileGamePaths.Concat(entry.FileSwaps).Count();
|
||||||
ImGui.TextUnformatted(count.ToString());
|
ImGui.TextUnformatted(count.ToString());
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
UiSharedService.AttachToolTip(count == 0 ? "No File data attached" : "Has File data attached");
|
UiSharedService.AttachToolTip(count == 0 ? "No File data attached" : "Has File data attached");
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
bool hasGlamourerData = !string.IsNullOrEmpty(entry.GlamourerData);
|
bool hasGlamourerData = !string.IsNullOrEmpty(entry.GlamourerData);
|
||||||
_uiSharedService.BooleanToColoredIcon(hasGlamourerData, false);
|
_uiSharedService.BooleanToColoredIcon(hasGlamourerData, false);
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
UiSharedService.AttachToolTip(string.IsNullOrEmpty(entry.GlamourerData) ? "No Glamourer data attached" : "Has Glamourer data attached");
|
UiSharedService.AttachToolTip(string.IsNullOrEmpty(entry.GlamourerData) ? "No Glamourer data attached" : "Has Glamourer data attached");
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
bool hasCustomizeData = !string.IsNullOrEmpty(entry.CustomizeData);
|
bool hasCustomizeData = !string.IsNullOrEmpty(entry.CustomizeData);
|
||||||
_uiSharedService.BooleanToColoredIcon(hasCustomizeData, false);
|
_uiSharedService.BooleanToColoredIcon(hasCustomizeData, false);
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
UiSharedService.AttachToolTip(string.IsNullOrEmpty(entry.CustomizeData) ? "No Customize+ data attached" : "Has Customize+ data attached");
|
UiSharedService.AttachToolTip(string.IsNullOrEmpty(entry.CustomizeData) ? "No Customize+ data attached" : "Has Customize+ data attached");
|
||||||
|
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
@@ -641,7 +642,7 @@ internal sealed partial class CharaDataHubUi
|
|||||||
if (!Equals(DateTime.MaxValue, entry.ExpiryDate))
|
if (!Equals(DateTime.MaxValue, entry.ExpiryDate))
|
||||||
eIcon = FontAwesomeIcon.Clock;
|
eIcon = FontAwesomeIcon.Clock;
|
||||||
_uiSharedService.IconText(eIcon, ImGuiColors.DalamudYellow);
|
_uiSharedService.IconText(eIcon, ImGuiColors.DalamudYellow);
|
||||||
if (ImGui.IsItemClicked()) _selectedDtoId = entry.Id;
|
if (ImGui.IsItemClicked()) SelectedDtoId = entry.Id;
|
||||||
if (eIcon != FontAwesomeIcon.None)
|
if (eIcon != FontAwesomeIcon.None)
|
||||||
{
|
{
|
||||||
UiSharedService.AttachToolTip($"This entry will expire on {entry.ExpiryDate.ToLocalTime()}");
|
UiSharedService.AttachToolTip($"This entry will expire on {entry.ExpiryDate.ToLocalTime()}");
|
||||||
@@ -695,12 +696,12 @@ internal sealed partial class CharaDataHubUi
|
|||||||
var charaDataEntries = _charaDataManager.OwnCharaData.Count;
|
var charaDataEntries = _charaDataManager.OwnCharaData.Count;
|
||||||
if (charaDataEntries != _dataEntries && _selectNewEntry && _charaDataManager.OwnCharaData.Any())
|
if (charaDataEntries != _dataEntries && _selectNewEntry && _charaDataManager.OwnCharaData.Any())
|
||||||
{
|
{
|
||||||
_selectedDtoId = _charaDataManager.OwnCharaData.Last().Value.Id;
|
SelectedDtoId = _charaDataManager.OwnCharaData.Last().Value.Id;
|
||||||
_selectNewEntry = false;
|
_selectNewEntry = false;
|
||||||
}
|
}
|
||||||
_dataEntries = _charaDataManager.OwnCharaData.Count;
|
_dataEntries = _charaDataManager.OwnCharaData.Count;
|
||||||
|
|
||||||
_ = _charaDataManager.OwnCharaData.TryGetValue(_selectedDtoId, out var dto);
|
_ = _charaDataManager.OwnCharaData.TryGetValue(SelectedDtoId, out var dto);
|
||||||
DrawEditCharaData(dto);
|
DrawEditCharaData(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,19 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase
|
|||||||
private bool _openMcdOnlineOnNextRun = false;
|
private bool _openMcdOnlineOnNextRun = false;
|
||||||
private bool _readExport;
|
private bool _readExport;
|
||||||
private string _selectedDtoId = string.Empty;
|
private string _selectedDtoId = string.Empty;
|
||||||
|
private string SelectedDtoId
|
||||||
|
{
|
||||||
|
get => _selectedDtoId;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (!string.Equals(_selectedDtoId, value, StringComparison.Ordinal))
|
||||||
|
{
|
||||||
|
_charaDataManager.UploadTask = null;
|
||||||
|
_selectedDtoId = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
private string _selectedSpecificUserIndividual = string.Empty;
|
private string _selectedSpecificUserIndividual = string.Empty;
|
||||||
private string _selectedSpecificGroupIndividual = string.Empty;
|
private string _selectedSpecificGroupIndividual = string.Empty;
|
||||||
private string _sharedWithYouDescriptionFilter = string.Empty;
|
private string _sharedWithYouDescriptionFilter = string.Empty;
|
||||||
@@ -102,7 +115,7 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
_closalCts.Cancel();
|
_closalCts.Cancel();
|
||||||
_selectedDtoId = string.Empty;
|
SelectedDtoId = string.Empty;
|
||||||
_filteredDict = null;
|
_filteredDict = null;
|
||||||
_sharedWithYouOwnerFilter = string.Empty;
|
_sharedWithYouOwnerFilter = string.Empty;
|
||||||
_importCode = string.Empty;
|
_importCode = string.Empty;
|
||||||
@@ -926,7 +939,7 @@ internal sealed partial class CharaDataHubUi : WindowMediatorSubscriberBase
|
|||||||
{
|
{
|
||||||
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Edit, "Open in MCD Online Editor"))
|
if (_uiSharedService.IconTextButton(FontAwesomeIcon.Edit, "Open in MCD Online Editor"))
|
||||||
{
|
{
|
||||||
_selectedDtoId = data.Id;
|
SelectedDtoId = data.Id;
|
||||||
_openMcdOnlineOnNextRun = true;
|
_openMcdOnlineOnNextRun = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user