diff --git a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml
index 797bc27e0..2804485fe 100644
--- a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml
+++ b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml
@@ -117,6 +117,7 @@
Header="{ext:Locale GameListContextMenuExtractDataRomFS}"
ToolTip.Tip="{ext:Locale GameListContextMenuExtractDataRomFSToolTip}" />
diff --git a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
index f29f70432..0d81484ba 100644
--- a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
+++ b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
@@ -334,7 +334,7 @@ namespace Ryujinx.Ava.UI.Controls
if (sender is not MenuItem { DataContext: MainWindowViewModel { SelectedApplication: not null } viewModel })
return;
- DownloadableContentModel selectedDlc = await DlcSelectView.Show(viewModel.SelectedApplication.IdBase, viewModel.ApplicationLibrary);
+ DownloadableContentModel selectedDlc = await DlcSelectView.Show(viewModel.SelectedApplication.Id, viewModel.ApplicationLibrary);
if (selectedDlc is not null)
{
diff --git a/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs b/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs
index d50d8249a..b486aa766 100644
--- a/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/DlcSelectViewModel.cs
@@ -14,9 +14,7 @@ namespace Ryujinx.Ava.UI.ViewModels
public DlcSelectViewModel(ulong titleId, ApplicationLibrary appLibrary)
{
- _dlcs = appLibrary.DownloadableContents.Items
- .Where(x => x.Dlc.TitleIdBase == titleId)
- .Select(x => x.Dlc)
+ _dlcs = appLibrary.FindDlcsFor(titleId)
.OrderBy(it => it.IsBundled ? 0 : 1)
.ThenBy(it => it.TitleId)
.ToArray();
diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
index f0e05d517..632e3b4f0 100644
--- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
@@ -360,6 +360,8 @@ namespace Ryujinx.Ava.UI.ViewModels
}
}
+ public bool HasDlc => ApplicationLibrary.HasDlcs(SelectedApplication.Id);
+
public bool OpenUserSaveDirectoryEnabled => SelectedApplication.HasControlHolder && SelectedApplication.ControlHolder.Value.UserAccountSaveDataSize > 0;
public bool OpenDeviceSaveDirectoryEnabled => SelectedApplication.HasControlHolder && SelectedApplication.ControlHolder.Value.DeviceSaveDataSize > 0;
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs b/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
index ee86a4a33..75737c3e5 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
+++ b/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
@@ -142,6 +142,24 @@ namespace Ryujinx.Ava.Utilities.AppLibrary
return appData.HasValue;
}
+
+ public bool FindUpdate(ulong id, out TitleUpdateModel foundData)
+ {
+ Gommon.Optional appData =
+ TitleUpdates.Keys.FindFirst(x => x.TitleId == id);
+ foundData = appData.HasValue ? appData.Value : null;
+
+ return appData.HasValue;
+ }
+
+ public TitleUpdateModel[] FindUpdatesFor(ulong id)
+ => TitleUpdates.Keys.Where(x => x.TitleIdBase == (id & ~0x1FFFUL)).ToArray();
+
+ public DownloadableContentModel[] FindDlcsFor(ulong id)
+ => DownloadableContents.Keys.Where(x => x.TitleIdBase == (id & ~0x1FFFUL)).ToArray();
+
+ public bool HasDlcs(ulong id)
+ => DownloadableContents.Keys.Any(x => x.TitleIdBase == (id & ~0x1FFFUL));
/// The configured key set is missing a key.
/// The NCA header could not be decrypted.