Fix DLC error handling
This commit is contained in:
parent
0137c9e635
commit
fa239ac96d
1 changed files with 26 additions and 26 deletions
|
@ -135,27 +135,26 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
foreach (DownloadableContentNca downloadableContentNca in downloadableContentContainer.DownloadableContentNcaList)
|
foreach (DownloadableContentNca downloadableContentNca in downloadableContentContainer.DownloadableContentNcaList)
|
||||||
{
|
{
|
||||||
using UniqueRef<IFile> ncaFile = new();
|
Nca nca = TryOpenNca(partitionFileSystem, downloadableContentNca.FullPath);
|
||||||
|
|
||||||
partitionFileSystem.OpenFile(ref ncaFile.Ref, downloadableContentNca.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
if (nca == null)
|
||||||
|
|
||||||
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), downloadableContentContainer.ContainerPath);
|
|
||||||
if (nca != null)
|
|
||||||
{
|
{
|
||||||
var content = new DownloadableContentModel(nca.Header.TitleId.ToString("X16"),
|
continue;
|
||||||
downloadableContentContainer.ContainerPath,
|
|
||||||
downloadableContentNca.FullPath,
|
|
||||||
downloadableContentNca.Enabled);
|
|
||||||
|
|
||||||
DownloadableContents.Add(content);
|
|
||||||
|
|
||||||
if (content.Enabled)
|
|
||||||
{
|
|
||||||
SelectedDownloadableContents.Add(content);
|
|
||||||
}
|
|
||||||
|
|
||||||
OnPropertyChanged(nameof(UpdateCount));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var content = new DownloadableContentModel(nca.Header.TitleId.ToString("X16"),
|
||||||
|
downloadableContentContainer.ContainerPath,
|
||||||
|
downloadableContentNca.FullPath,
|
||||||
|
downloadableContentNca.Enabled);
|
||||||
|
|
||||||
|
DownloadableContents.Add(content);
|
||||||
|
|
||||||
|
if (content.Enabled)
|
||||||
|
{
|
||||||
|
SelectedDownloadableContents.Add(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
OnPropertyChanged(nameof(UpdateCount));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,17 +188,20 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Nca TryOpenNca(IStorage ncaStorage, string containerPath)
|
private Nca TryOpenNca(IFileSystem partitionFileSystem, string fullPath)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return new Nca(_virtualFileSystem.KeySet, ncaStorage);
|
using UniqueRef<IFile> ncaFile = new();
|
||||||
|
partitionFileSystem.OpenFile(ref ncaFile.Ref, fullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
||||||
|
|
||||||
|
return new Nca(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Dispatcher.UIThread.InvokeAsync(async () =>
|
Dispatcher.UIThread.InvokeAsync(async () =>
|
||||||
{
|
{
|
||||||
await ContentDialogHelper.CreateErrorDialog(string.Format(LocaleManager.Instance[LocaleKeys.DialogLoadFileErrorMessage], ex.Message, containerPath));
|
await ContentDialogHelper.CreateErrorDialog(string.Format(LocaleManager.Instance[LocaleKeys.DialogLoadFileErrorMessage], ex.Message, fullPath));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,11 +246,8 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
bool success = false;
|
bool success = false;
|
||||||
foreach (DirectoryEntryEx fileEntry in partitionFileSystem.EnumerateEntries("/", "*.nca"))
|
foreach (DirectoryEntryEx fileEntry in partitionFileSystem.EnumerateEntries("/", "*.nca"))
|
||||||
{
|
{
|
||||||
using var ncaFile = new UniqueRef<IFile>();
|
Nca nca = TryOpenNca(partitionFileSystem, fileEntry.FullPath);
|
||||||
|
|
||||||
partitionFileSystem.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
|
|
||||||
|
|
||||||
Nca nca = TryOpenNca(ncaFile.Get.AsStorage(), path);
|
|
||||||
if (nca == null)
|
if (nca == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -261,7 +260,8 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var content = new DownloadableContentModel(nca.Header.TitleId.ToString("X16"), path, fileEntry.FullPath, true);
|
var content = new DownloadableContentModel(nca.Header.TitleId.ToString("X16"), path,
|
||||||
|
fileEntry.FullPath, true);
|
||||||
DownloadableContents.Add(content);
|
DownloadableContents.Add(content);
|
||||||
Dispatcher.UIThread.InvokeAsync(() => SelectedDownloadableContents.Add(content));
|
Dispatcher.UIThread.InvokeAsync(() => SelectedDownloadableContents.Add(content));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue