refactor: remove unnecessary memebers

This commit is contained in:
leo 2024-07-24 14:32:27 +08:00
parent ad3eeabb83
commit f8caeceade
No known key found for this signature in database
5 changed files with 36 additions and 44 deletions

View file

@ -302,6 +302,11 @@ namespace SourceGit
}); });
} }
public static ViewModels.Launcher GetLauncer()
{
return Current is App app ? app._launcher : null;
}
public static ViewModels.Repository FindOpenedRepository(string repoPath) public static ViewModels.Repository FindOpenedRepository(string repoPath)
{ {
if (Current is App app && app._launcher != null) if (Current is App app && app._launcher != null)

View file

@ -3,6 +3,8 @@ using System.ComponentModel.DataAnnotations;
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Threading;
namespace SourceGit.ViewModels namespace SourceGit.ViewModels
{ {
public class Clone : Popup public class Clone : Popup
@ -51,28 +53,25 @@ namespace SourceGit.ViewModels
set => SetProperty(ref _extraArgs, value); set => SetProperty(ref _extraArgs, value);
} }
public Clone(Launcher launcher) public Clone()
{ {
_launcher = launcher;
_page = launcher.ActivePage;
View = new Views.Clone() { DataContext = this }; View = new Views.Clone() { DataContext = this };
App.GetClipboardTextAsync()
.ContinueWith(t => Task.Run(async () =>
{
try
{ {
if (t.IsFaulted) var text = await App.GetClipboardTextAsync();
if (Models.Remote.IsValidURL(text))
{ {
t.Exception.Handle(static _ => true); Dispatcher.UIThread.Invoke(() => Remote = text);
} }
else if (t.IsCompleted) }
{ catch
var result = t.Result; {
if (Models.Remote.IsValidURL(result)) // ignore
{ }
Remote = result; });
}
}
});
} }
public static ValidationResult ValidateRemote(string remote, ValidationContext _) public static ValidationResult ValidateRemote(string remote, ValidationContext _)
@ -131,15 +130,24 @@ namespace SourceGit.ViewModels
{ {
var normalizedPath = path.Replace("\\", "/"); var normalizedPath = path.Replace("\\", "/");
var node = Preference.Instance.FindOrAddNodeByRepositoryPath(normalizedPath, null, true); var node = Preference.Instance.FindOrAddNodeByRepositoryPath(normalizedPath, null, true);
_launcher.OpenRepositoryInTab(node, _page); var launcher = App.GetLauncer();
var page = null as LauncherPage;
foreach (var one in launcher.Pages)
{
if (one.GetId() == HostPageId)
{
page = one;
break;
}
}
launcher.OpenRepositoryInTab(node, page);
}); });
return true; return true;
}); });
} }
private readonly Launcher _launcher = null;
private readonly LauncherPage _page = null;
private string _remote = string.Empty; private string _remote = string.Empty;
private bool _useSSH = false; private bool _useSSH = false;
private string _sshKey = string.Empty; private string _sshKey = string.Empty;

View file

@ -1,9 +1,7 @@
using System; using System;
using Avalonia;
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
@ -50,23 +48,16 @@ namespace SourceGit.ViewModels
return; return;
} }
if (PopupHost.CanCreatePopup() && if (PopupHost.CanCreatePopup())
Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime { MainWindow: { DataContext: Launcher launcher } }) PopupHost.ShowPopup(new Clone());
{
PopupHost.ShowPopup(new Clone(launcher));
}
} }
public void OpenTerminal() public void OpenTerminal()
{ {
if (!Preference.Instance.IsGitConfigured()) if (!Preference.Instance.IsGitConfigured())
{
App.RaiseException(PopupHost.Active.GetId(), App.Text("NotConfigured")); App.RaiseException(PopupHost.Active.GetId(), App.Text("NotConfigured"));
}
else else
{
Native.OS.OpenTerminal(null); Native.OS.OpenTerminal(null);
}
} }
public void ClearSearchFilter() public void ClearSearchFilter()
@ -96,12 +87,7 @@ namespace SourceGit.ViewModels
openAll.Icon = App.CreateMenuIcon("Icons.Folder.Open"); openAll.Icon = App.CreateMenuIcon("Icons.Folder.Open");
openAll.Click += (_, e) => openAll.Click += (_, e) =>
{ {
if (PopupHost.CanCreatePopup() && OpenAllInNode(App.GetLauncer(), node);
Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime { MainWindow: { DataContext: Launcher launcher } })
{
OpenAllInNode(launcher, node);
}
e.Handled = true; e.Handled = true;
}; };

View file

@ -9,7 +9,6 @@
x:DataType="vm:Blame" x:DataType="vm:Blame"
Icon="/App.ico" Icon="/App.ico"
Title="{DynamicResource Text.Blame}" Title="{DynamicResource Text.Blame}"
WindowStartupLocation="CenterOwner"
MinWidth="1280" MinHeight="720"> MinWidth="1280" MinHeight="720">
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>

View file

@ -4,7 +4,6 @@ using System.Globalization;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Media; using Avalonia.Media;
@ -326,11 +325,6 @@ namespace SourceGit.Views
{ {
public Blame() public Blame()
{ {
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
Owner = desktop.MainWindow;
}
InitializeComponent(); InitializeComponent();
} }