From ba8153e6b4c30de3329be5b5d58ef8bfb17edb16 Mon Sep 17 00:00:00 2001 From: Cinka Date: Sun, 15 Jun 2025 17:13:31 +0300 Subject: [PATCH] - fix: return addfavorite button --- Nebula.Launcher/LauncherConVar.cs | 2 +- .../FavoriteServerListProvider.cs | 35 +++++++++++++++++-- .../ViewModels/Popup/AddFavoriteViewModel.cs | 3 ++ Nebula.Runner/Nebula.Runner.csproj | 2 ++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/Nebula.Launcher/LauncherConVar.cs b/Nebula.Launcher/LauncherConVar.cs index c888bf9..ebfb1c4 100644 --- a/Nebula.Launcher/LauncherConVar.cs +++ b/Nebula.Launcher/LauncherConVar.cs @@ -21,7 +21,7 @@ public static class LauncherConVar "WizDen", [ "https://harpy.durenko.tatar/auth-api/", - "https://auth.fallback.spacestation14.com/" + "https://auth.fallback.spacestation14.com/", ]) ]); diff --git a/Nebula.Launcher/ServerListProviders/FavoriteServerListProvider.cs b/Nebula.Launcher/ServerListProviders/FavoriteServerListProvider.cs index 8146b69..43f5fa8 100644 --- a/Nebula.Launcher/ServerListProviders/FavoriteServerListProvider.cs +++ b/Nebula.Launcher/ServerListProviders/FavoriteServerListProvider.cs @@ -1,9 +1,14 @@ using System; using System.Collections.Generic; using System.Linq; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Layout; +using Avalonia.Media; using Microsoft.Extensions.DependencyInjection; using Nebula.Launcher.ViewModels; using Nebula.Launcher.ViewModels.Pages; +using Nebula.Launcher.ViewModels.Popup; using Nebula.Shared; using Nebula.Shared.Models; using Nebula.Shared.Services; @@ -15,7 +20,7 @@ namespace Nebula.Launcher.ServerListProviders; public sealed partial class FavoriteServerListProvider : IServerListProvider, IServerListDirtyInvoker { [GenerateProperty] private ConfigurationService ConfigurationService { get; } - [GenerateProperty] private RestService RestService { get; } + [GenerateProperty] private IServiceProvider ServiceProvider { get; } [GenerateProperty] private ServerViewContainer ServerViewContainer { get; } private List _serverLists = []; @@ -44,13 +49,15 @@ public sealed partial class FavoriteServerListProvider : IServerListProvider, IS ServerViewContainer.Get(s.ToRobustUrl()) ) ); + + _serverLists.Add(new AddFavoriteButton(ServiceProvider)); + IsLoaded = true; OnLoaded?.Invoke(); } public void AddFavorite(ServerEntryModelView entryModelView) { - entryModelView.IsFavorite = true; AddFavorite(entryModelView.Address); } @@ -59,6 +66,7 @@ public sealed partial class FavoriteServerListProvider : IServerListProvider, IS var servers = GetFavoriteEntries(); servers.Add(robustUrl.ToString()); ConfigurationService.SetConfigValue(LauncherConVar.Favorites, servers.ToArray()); + ServerViewContainer.Get(robustUrl).IsFavorite = true; Dirty?.Invoke(); } @@ -77,4 +85,27 @@ public sealed partial class FavoriteServerListProvider : IServerListProvider, IS private void Initialise(){} private void InitialiseInDesignMode(){} +} + +public class AddFavoriteButton: Border, IFilterConsumer{ + + private Button _addFavoriteButton = new Button(); + public AddFavoriteButton(IServiceProvider serviceProvider) + { + Margin = new Thickness(5, 5, 5, 20); + Background = new SolidColorBrush(Color.Parse("#222222")); + CornerRadius = new CornerRadius(20f); + _addFavoriteButton.HorizontalAlignment = HorizontalAlignment.Center; + _addFavoriteButton.Click += (sender, args) => + { + serviceProvider.GetService()!.Popup( + serviceProvider.GetService()!); + }; + _addFavoriteButton.Content = "Add Favorite"; + Child = _addFavoriteButton; + } + + public void ProcessFilter(ServerFilter? serverFilter) + { + } } \ No newline at end of file diff --git a/Nebula.Launcher/ViewModels/Popup/AddFavoriteViewModel.cs b/Nebula.Launcher/ViewModels/Popup/AddFavoriteViewModel.cs index 566e527..779700e 100644 --- a/Nebula.Launcher/ViewModels/Popup/AddFavoriteViewModel.cs +++ b/Nebula.Launcher/ViewModels/Popup/AddFavoriteViewModel.cs @@ -1,5 +1,6 @@ using System; using CommunityToolkit.Mvvm.ComponentModel; +using Nebula.Launcher.ServerListProviders; using Nebula.Launcher.ViewModels.Pages; using Nebula.Launcher.Views.Pages; using Nebula.Shared.Services; @@ -28,6 +29,7 @@ public partial class AddFavoriteViewModel : PopupViewModelBase public override PopupMessageService PopupMessageService { get; } [GenerateProperty] private ServerOverviewModel ServerOverviewModel { get; } [GenerateProperty] private DebugService DebugService { get; } + [GenerateProperty] private FavoriteServerListProvider FavoriteServerListProvider { get; } public override string Title => "Add to favorite"; public override bool IsClosable => true; @@ -39,6 +41,7 @@ public partial class AddFavoriteViewModel : PopupViewModelBase try { var uri = IpInput.ToRobustUrl(); + FavoriteServerListProvider.AddFavorite(uri); Dispose(); } catch (Exception e) diff --git a/Nebula.Runner/Nebula.Runner.csproj b/Nebula.Runner/Nebula.Runner.csproj index 66664cc..485ecb5 100644 --- a/Nebula.Runner/Nebula.Runner.csproj +++ b/Nebula.Runner/Nebula.Runner.csproj @@ -13,6 +13,8 @@ + +