Added LastRaided feature
This commit is contained in:
parent
2ca8da61a7
commit
4311bfb43f
@ -62,6 +62,9 @@
|
||||
HorizontalContentAlignment="Center"
|
||||
Foreground="{Binding ViewerCountColor}"
|
||||
Content="{Binding Channel.ViewerCount}" />
|
||||
<Label HorizontalAlignment="Stretch"
|
||||
HorizontalContentAlignment="Center"
|
||||
Content="{Binding LastRaided, TargetNullValue=Never Raided}" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
|
@ -28,6 +28,7 @@ public class BetterRaidDatabase : INotifyPropertyChanged
|
||||
}
|
||||
}
|
||||
public List<string> Channels { get; set; } = [];
|
||||
public Dictionary<string, DateTime?> LastRaided = [];
|
||||
public bool AutoSave { get; set; }
|
||||
|
||||
public static BetterRaidDatabase LoadFromFile(string path)
|
||||
@ -51,6 +52,14 @@ public class BetterRaidDatabase : INotifyPropertyChanged
|
||||
|
||||
dbObj._databaseFilePath = path;
|
||||
|
||||
foreach (var channel in dbObj.Channels)
|
||||
{
|
||||
if (dbObj.LastRaided.ContainsKey(channel) == false)
|
||||
{
|
||||
dbObj.LastRaided.Add(channel, null);
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine("[DEBUG] Loaded database from {0}", path);
|
||||
|
||||
return dbObj;
|
||||
@ -93,6 +102,36 @@ public class BetterRaidDatabase : INotifyPropertyChanged
|
||||
OnPropertyChanged(nameof(Channels));
|
||||
}
|
||||
|
||||
public void SetRaided(string channel, DateTime dateTime)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(channel);
|
||||
|
||||
if (LastRaided.ContainsKey(channel))
|
||||
{
|
||||
LastRaided[channel] = dateTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
LastRaided.Add(channel, dateTime);
|
||||
}
|
||||
|
||||
OnPropertyChanged(nameof(LastRaided));
|
||||
}
|
||||
|
||||
public DateTime? GetLastRaided(string channel)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(channel);
|
||||
|
||||
if (LastRaided.ContainsKey(channel))
|
||||
{
|
||||
return LastRaided[channel];
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPropertyChanged([CallerMemberName] string? propertyName = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
|
@ -31,6 +31,8 @@ public class RaidButtonViewModel : ViewModelBase
|
||||
|
||||
public MainWindowViewModel? MainVm { get; set; }
|
||||
|
||||
public DateTime? LastRaided => MainVm?.Database?.GetLastRaided(ChannelName);
|
||||
|
||||
public async Task<bool> GetOrUpdateChannelAsync()
|
||||
{
|
||||
if (_channel == null)
|
||||
@ -119,6 +121,11 @@ public class RaidButtonViewModel : ViewModelBase
|
||||
var createdAt = raid.Data[0].CreatedAt;
|
||||
var isMature = raid.Data[0].IsMature;
|
||||
}
|
||||
|
||||
if (MainVm?.Database != null)
|
||||
{
|
||||
MainVm.Database.SetRaided(ChannelName, DateTime.Now);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveChannel()
|
||||
|
@ -173,8 +173,9 @@ public partial class MainWindow : Window
|
||||
var addButton = new Button
|
||||
{
|
||||
Content = "+",
|
||||
FontSize = 36,
|
||||
FontSize = 72,
|
||||
Margin = new Avalonia.Thickness(5),
|
||||
MinHeight = 250,
|
||||
HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Stretch,
|
||||
VerticalAlignment = Avalonia.Layout.VerticalAlignment.Stretch,
|
||||
HorizontalContentAlignment = Avalonia.Layout.HorizontalAlignment.Center,
|
||||
|
2
db.json
2
db.json
@ -1 +1 @@
|
||||
{"OnlyOnline":true,"Channels":["Cedricun","ZanTal","PropzMaster","Artimus83","HyperonsLive","theshroomlife","Robocraft999","sllikson","Aron_dc","AIEsports","TobinatorLP","Lordabgrund","GronkhTV"],"AutoSave":true}
|
||||
{"LastRaided":{"Cedricun":null,"ZanTal":null,"PropzMaster":null,"Artimus83":null,"HyperonsLive":null,"theshroomlife":null,"Robocraft999":null,"sllikson":null,"Aron_dc":null,"AIEsports":null,"TobinatorLP":null,"Lordabgrund":null,"GronkhTV":null},"OnlyOnline":false,"Channels":["Cedricun","ZanTal","PropzMaster","Artimus83","HyperonsLive","theshroomlife","Robocraft999","sllikson","Aron_dc","AIEsports","TobinatorLP","Lordabgrund","GronkhTV"],"AutoSave":true}
|
Reference in New Issue
Block a user