Workshop - Added release management

This commit is contained in:
RobertBeekman committed 2024-04-10 20:59:53 +02:00
1 parent 7030c7af2a
commit cac44d748d
18 files changed
+578 -174

No files matched your search

@@ -1,13 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive;
using System.Reactive.Disposables;
using System.Threading.Tasks;
using Artemis.UI.Shared;
using Artemis.UI.Shared.Routing;
using Artemis.WebClient.Workshop;
using Artemis.WebClient.Workshop.Models;
using PropertyChanged.SourceGenerator;
using ReactiveUI;
@@ -24,7 +22,6 @@ public partial class EntryReleasesViewModel : ActivatableViewModelBase
Entry = entry;
Releases = Entry.Releases.OrderByDescending(r => r.CreatedAt).Take(5).Select(r => getEntryReleaseItemViewModel(r)).ToList();
NavigateToRelease = ReactiveCommand.CreateFromTask<IRelease>(ExecuteNavigateToRelease);
this.WhenActivated(d =>
{
@@ -35,30 +32,11 @@ public partial class EntryReleasesViewModel : ActivatableViewModelBase
this.WhenAnyValue(vm => vm.SelectedRelease)
.WhereNotNull()
.Subscribe(s => ExecuteNavigateToRelease(s.Release))
.Subscribe(s => _router.Navigate($"/releases/{s.Release.Id}"))
.DisposeWith(d);
});
}
public IEntryDetails Entry { get; }
public List<EntryReleaseItemViewModel> Releases { get; }
public ReactiveCommand<IRelease, Unit> NavigateToRelease { get; }
private async Task ExecuteNavigateToRelease(IRelease release)
{
switch (Entry.EntryType)
{
case EntryType.Profile:
await _router.Navigate($"workshop/entries/profiles/details/{Entry.Id}/releases/{release.Id}");
break;
case EntryType.Layout:
await _router.Navigate($"workshop/entries/layouts/details/{Entry.Id}/releases/{release.Id}");
break;
case EntryType.Plugin:
await _router.Navigate($"workshop/entries/plugins/details/{Entry.Id}/releases/{release.Id}");
break;
default:
throw new ArgumentOutOfRangeException(nameof(Entry.EntryType));
}
}
}