diff --git a/ModerationClient/Views/MainWindow/ClientView.axaml b/ModerationClient/Views/MainWindow/ClientView.axaml
index e0cd4e0..6db948a 100644
--- a/ModerationClient/Views/MainWindow/ClientView.axaml
+++ b/ModerationClient/Views/MainWindow/ClientView.axaml
@@ -19,11 +19,6 @@
</Grid.ColumnDefinitions>
<TreeView Grid.Column="0" Background="#202020" ItemsSource="{CompiledBinding DisplayedSpaces}" SelectedItem="{CompiledBinding CurrentSpace}">
<TreeView.ItemTemplate>
- <!-- <TreeView.Styles> -->
- <!-- <Style Selector="TreeViewItem"> -->
- <!-- <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> -->
- <!-- </Style> -->
- <!-- </TreeView.Styles> -->
<TreeDataTemplate ItemsSource="{Binding ChildSpaces}" DataType="spaceTreeNodes:SpaceNode">
<TextBlock Text="{Binding Name}" Height="20" />
</TreeDataTemplate>
@@ -31,7 +26,7 @@
</TreeView>
<GridSplitter Grid.Column="1" Background="Black" ResizeDirection="Columns" />
<!-- <Rectangle Grid.Column="2" Fill="Green" /> -->
- <ListBox Grid.Column="2" Background="#242424" ItemsSource="{CompiledBinding CurrentSpace.ChildRooms}">
+ <ListBox Grid.Column="2" Background="#242424" ItemsSource="{CompiledBinding CurrentSpace.ChildRooms}" SelectedItem="{CompiledBinding CurrentRoom}">
<ListBox.ItemTemplate>
<DataTemplate DataType="spaceTreeNodes:RoomNode">
<TextBlock Text="{CompiledBinding Name}" Height="20" />
@@ -39,7 +34,7 @@
</ListBox.ItemTemplate>
</ListBox>
<GridSplitter Grid.Column="3" Background="Black" ResizeDirection="Columns" />
- <Rectangle Grid.Column="4" Fill="#282828" />
+ <ContentControl Grid.Column="4" Content="{CompiledBinding CurrentRoomViewModel}" />
</Grid>
<Grid Grid.Row="1" ColumnDefinitions="Auto, *, Auto" Background="Black">
<Label Grid.Column="2" Content="{CompiledBinding Status}" />
diff --git a/ModerationClient/Views/MainWindow/EventView.axaml b/ModerationClient/Views/MainWindow/EventView.axaml
new file mode 100644
index 0000000..1815430
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/EventView.axaml
@@ -0,0 +1,10 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:libMatrix="clr-namespace:LibMatrix;assembly=LibMatrix"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="ModerationClient.Views.EventView"
+ x:DataType="libMatrix:StateEventResponse">
+ Welcome to Avalonia!
+</UserControl>
diff --git a/ModerationClient/Views/MainWindow/EventView.axaml.cs b/ModerationClient/Views/MainWindow/EventView.axaml.cs
new file mode 100644
index 0000000..f07103f
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/EventView.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace ModerationClient.Views;
+
+public partial class EventView : UserControl {
+ public EventView() {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/LoginView.axaml b/ModerationClient/Views/MainWindow/LoginView.axaml
index 5dc6533..e5fcb84 100644
--- a/ModerationClient/Views/MainWindow/LoginView.axaml
+++ b/ModerationClient/Views/MainWindow/LoginView.axaml
@@ -14,6 +14,10 @@
<TextBox MinWidth="250" Text="{Binding Username, Mode=TwoWay}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
+ <Label Width="100">Homeserver</Label>
+ <TextBox MinWidth="250" Text="{Binding Homeserver, Mode=TwoWay}" />
+ </StackPanel>
+ <StackPanel Orientation="Horizontal">
<Label Width="100">Password</Label>
<MaskedTextBox MinWidth="250" PasswordChar="*" Text="{Binding Password, Mode=TwoWay}" />
</StackPanel>
diff --git a/ModerationClient/Views/MainWindow/MainWindow.axaml.cs b/ModerationClient/Views/MainWindow/MainWindow.axaml.cs
index cc3534d..b632b87 100644
--- a/ModerationClient/Views/MainWindow/MainWindow.axaml.cs
+++ b/ModerationClient/Views/MainWindow/MainWindow.axaml.cs
@@ -22,7 +22,7 @@ namespace ModerationClient.Views.MainWindow;
public partial class MainWindow : Window {
private readonly CommandLineConfiguration _cfg;
- public MainWindow(CommandLineConfiguration cfg, MainWindowViewModel dataContext, IHostApplicationLifetime appLifetime) {
+ public MainWindow(CommandLineConfiguration cfg, MainWindowViewModel dataContext, IHostApplicationLifetime appLifetime, HomeserverResolverService hsResolver) {
_cfg = cfg;
InitializeComponent();
DataContext = dataContext;
@@ -33,7 +33,7 @@ public partial class MainWindow : Window {
dataContext.CurrentViewModel = dataContext.AuthService.IsLoggedIn
? App.Current.Host.Services.GetRequiredService<ClientViewModel>()
- : new LoginViewModel(dataContext.AuthService);
+ : new LoginViewModel(dataContext.AuthService, hsResolver);
if (!dataContext.AuthService.IsLoggedIn) {
dataContext.AuthService.PropertyChanged += (sender, args) => {
@@ -45,7 +45,7 @@ public partial class MainWindow : Window {
// window.Show();
}
else {
- dataContext.CurrentViewModel = new LoginViewModel(dataContext.AuthService);
+ dataContext.CurrentViewModel = new LoginViewModel(dataContext.AuthService, hsResolver);
}
}
};
diff --git a/ModerationClient/Views/MainWindow/RoomView.axaml b/ModerationClient/Views/MainWindow/RoomView.axaml
new file mode 100644
index 0000000..cd74b0d
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/RoomView.axaml
@@ -0,0 +1,53 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:viewModels="clr-namespace:ModerationClient.ViewModels"
+ xmlns:libMatrix="clr-namespace:LibMatrix;assembly=LibMatrix"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="ModerationClient.Views.RoomView"
+ x:DataType="viewModels:RoomViewModel">
+ <Grid RowDefinitions="32,*">
+ <Grid>
+ <Image Source="{CompiledBinding RoomIconBitmap}"></Image>
+ <Label Content="{CompiledBinding Room.Name}" />
+ </Grid>
+ <Grid Grid.Row="1" Grid.ColumnDefinitions="*,1,200">
+ <!-- timeline -->
+ <ScrollViewer Grid.Column="0" Background="#222222">
+ <ItemsControl ItemsSource="{CompiledBinding Room.Timeline}">
+ <ItemsControl.ItemTemplate>
+ <DataTemplate DataType="libMatrix:StateEventResponse">
+ <Grid ColumnDefinitions="32, *">
+ <Image></Image>
+ <Grid Grid.Column="1" RowDefinitions="*,*">
+ <TextBlock Text="{CompiledBinding Sender}" />
+ <TextBlock Grid.Row="1" Text="{CompiledBinding RawContent}" />
+ </Grid>
+ </Grid>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
+ </ScrollViewer>
+ <GridSplitter Grid.Column="1" Background="Black" ResizeDirection="Columns" />
+ <!-- members -->
+ <ScrollViewer Grid.Column="2" Background="#222222">
+ <ItemsControl ItemsSource="{CompiledBinding Users}">
+ <ItemsControl.ItemTemplate>
+ <DataTemplate DataType="viewModels:RoomMember">
+ <Grid ColumnDefinitions="32,*" Margin="0,4">
+ <Image Source="{CompiledBinding UserAvatarBitmap}" Height="32" Width="32" Margin="0,0,4,0" />
+ <Grid Grid.Column="1" RowDefinitions="*,*">
+ <TextBlock Text="{CompiledBinding DisplayName}" />
+ <TextBlock Grid.Row="1" Text="{CompiledBinding UserId}" FontSize="10" FontStyle="Italic" />
+ </Grid>
+
+ <WrapPanel Children=""></WrapPanel>
+ </Grid>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
+ </ScrollViewer>
+ </Grid>
+ </Grid>
+</UserControl>
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/RoomView.axaml.cs b/ModerationClient/Views/MainWindow/RoomView.axaml.cs
new file mode 100644
index 0000000..aedd8e9
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/RoomView.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace ModerationClient.Views;
+
+public partial class RoomView : UserControl {
+ public RoomView() {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/StatusBar.axaml b/ModerationClient/Views/MainWindow/StatusBar.axaml
new file mode 100644
index 0000000..d299278
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/StatusBar.axaml
@@ -0,0 +1,10 @@
+<UserControl xmlns="https://github.com/avaloniaui"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
+ x:Class="ModerationClient.Views.MainWindow.StatusBar">
+ <Grid ColumnDefinitions="*,*,*">
+
+ </Grid>
+</UserControl>
\ No newline at end of file
diff --git a/ModerationClient/Views/MainWindow/StatusBar.axaml.cs b/ModerationClient/Views/MainWindow/StatusBar.axaml.cs
new file mode 100644
index 0000000..78a74ca
--- /dev/null
+++ b/ModerationClient/Views/MainWindow/StatusBar.axaml.cs
@@ -0,0 +1,15 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using ModerationClient.Services;
+
+namespace ModerationClient.Views.MainWindow;
+
+public partial class StatusBar : UserControl {
+ public StatusBarService StatusBarService { get; }
+
+ public StatusBar(StatusBarService statusBarService) {
+ StatusBarService = statusBarService;
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/ModerationClient/Views/UserManagementWindow.axaml b/ModerationClient/Views/UserManagementWindow.axaml
index ef93517..688b687 100644
--- a/ModerationClient/Views/UserManagementWindow.axaml
+++ b/ModerationClient/Views/UserManagementWindow.axaml
@@ -37,7 +37,7 @@
<ContentControl DataContext="{CompiledBinding Path=CurrentViewModel}">
<ItemsControl ItemsSource="{ReflectionBinding Users}">
<ItemsControl.ItemTemplate>
- <DataTemplate DataType="vm:User">
+ <DataTemplate DataType="vm:SynapseAdminUser">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{CompiledBinding Name}" />
diff --git a/ModerationClient/Views/UserManagementWindow.axaml.cs b/ModerationClient/Views/UserManagementWindow.axaml.cs
index 2d2dfb4..f5b4d56 100644
--- a/ModerationClient/Views/UserManagementWindow.axaml.cs
+++ b/ModerationClient/Views/UserManagementWindow.axaml.cs
@@ -1,4 +1,5 @@
using System;
+using System.IO;
using ArcaneLibs.Extensions;
using Avalonia;
using Avalonia.Controls;
@@ -64,7 +65,7 @@ public partial class UserManagementWindow : Window {
dataContext.CurrentViewModel = App.Current.Host.Services.GetRequiredService<ClientViewModel>();
}
else {
- dataContext.CurrentViewModel = new LoginViewModel(dataContext.AuthService);
+ Close();
}
}
};
@@ -118,7 +119,7 @@ public partial class UserManagementWindow : Window {
return;
}
- if (button.Tag is not User user) {
+ if (button.Tag is not SynapseAdminUser user) {
Console.WriteLine("WARN: Tag is not User, ignoring PuppetButtonClicked!");
return;
}
@@ -129,8 +130,14 @@ public partial class UserManagementWindow : Window {
}
var puppet = await synapse.Admin.LoginUserAsync(user.Name, TimeSpan.FromMinutes(5));
-
- System.Diagnostics.Process.Start(System.Diagnostics.Process.GetCurrentProcess().MainModule!.FileName,
- (_cfg with { IsTemporary = true, LoginData = puppet.ToJson() }).Serialise());
+ // var currentProcess = System.Diagnostics.Process.GetCurrentProcess().MainModule!.FileName;
+ // if(Path.GetFileName(currentProcess) == "dotnet") {
+ // Console.WriteLine("WARN: Running in dotnet, trying again...!");
+ // // get the path to the current executable
+ // var path = System.Reflection.Assembly.GetEntryAssembly()!.Location;
+ // Console.WriteLine(path);
+ // return;
+ // }
+ System.Diagnostics.Process.Start("steam-run", ["dotnet", System.Reflection.Assembly.GetEntryAssembly()!.Location, "--", ..(_cfg with { IsTemporary = true, LoginData = puppet.ToJson() }).Serialise()]);
}
}
\ No newline at end of file
|