fix group panel, restarts with dtr entry
This commit is contained in:
@@ -74,11 +74,13 @@ internal sealed class GroupPanel
|
|||||||
|
|
||||||
bool userCanJoinMoreGroups = _pairManager.GroupPairs.Count < ApiController.ServerInfo.MaxGroupsJoinedByUser;
|
bool userCanJoinMoreGroups = _pairManager.GroupPairs.Count < ApiController.ServerInfo.MaxGroupsJoinedByUser;
|
||||||
bool userCanCreateMoreGroups = _pairManager.GroupPairs.Count(u => string.Equals(u.Key.Owner.UID, ApiController.UID, StringComparison.Ordinal)) < ApiController.ServerInfo.MaxGroupsCreatedByUser;
|
bool userCanCreateMoreGroups = _pairManager.GroupPairs.Count(u => string.Equals(u.Key.Owner.UID, ApiController.UID, StringComparison.Ordinal)) < ApiController.ServerInfo.MaxGroupsCreatedByUser;
|
||||||
|
bool alreadyInGroup = _pairManager.GroupPairs.Select(p => p.Key).Any(p => string.Equals(p.Group.Alias, _syncShellToJoin, StringComparison.Ordinal)
|
||||||
|
|| string.Equals(p.Group.GID, _syncShellToJoin, StringComparison.Ordinal));
|
||||||
|
|
||||||
|
if (alreadyInGroup) ImGui.BeginDisabled();
|
||||||
if (ImGuiComponents.IconButton(FontAwesomeIcon.Plus))
|
if (ImGuiComponents.IconButton(FontAwesomeIcon.Plus))
|
||||||
{
|
{
|
||||||
if (_pairManager.GroupPairs.All(w => !string.Equals(w.Key.Group.GID, _syncShellToJoin, StringComparison.Ordinal) && !string.Equals(w.Key.Group.Alias, _syncShellToJoin, StringComparison.Ordinal))
|
if (!string.IsNullOrEmpty(_syncShellToJoin))
|
||||||
&& !string.IsNullOrEmpty(_syncShellToJoin))
|
|
||||||
{
|
{
|
||||||
if (userCanJoinMoreGroups)
|
if (userCanJoinMoreGroups)
|
||||||
{
|
{
|
||||||
@@ -102,6 +104,8 @@ internal sealed class GroupPanel
|
|||||||
? (userCanCreateMoreGroups ? "Create Syncshell" : $"You cannot create more than {ApiController.ServerInfo.MaxGroupsCreatedByUser} Syncshells")
|
? (userCanCreateMoreGroups ? "Create Syncshell" : $"You cannot create more than {ApiController.ServerInfo.MaxGroupsCreatedByUser} Syncshells")
|
||||||
: (userCanJoinMoreGroups ? "Join Syncshell" + _syncShellToJoin : $"You cannot join more than {ApiController.ServerInfo.MaxGroupsJoinedByUser} Syncshells"));
|
: (userCanJoinMoreGroups ? "Join Syncshell" + _syncShellToJoin : $"You cannot join more than {ApiController.ServerInfo.MaxGroupsJoinedByUser} Syncshells"));
|
||||||
|
|
||||||
|
if (alreadyInGroup) ImGui.EndDisabled();
|
||||||
|
|
||||||
if (ImGui.BeginPopupModal("Enter Syncshell Password", ref _showModalEnterPassword, UiSharedService.PopupWindowFlags))
|
if (ImGui.BeginPopupModal("Enter Syncshell Password", ref _showModalEnterPassword, UiSharedService.PopupWindowFlags))
|
||||||
{
|
{
|
||||||
UiSharedService.TextWrapped("Before joining any Syncshells please be aware that you will be automatically paired with everyone in the Syncshell.");
|
UiSharedService.TextWrapped("Before joining any Syncshells please be aware that you will be automatically paired with everyone in the Syncshell.");
|
||||||
|
|||||||
@@ -10,12 +10,11 @@ namespace MareSynchronos.UI;
|
|||||||
|
|
||||||
public sealed class DtrEntry : IDisposable, IHostedService
|
public sealed class DtrEntry : IDisposable, IHostedService
|
||||||
{
|
{
|
||||||
private readonly DtrBarEntry _entry;
|
|
||||||
private readonly ConfigurationServiceBase<MareConfig> _configService;
|
|
||||||
private readonly PairManager _pairManager;
|
|
||||||
private readonly ApiController _apiController;
|
private readonly ApiController _apiController;
|
||||||
|
|
||||||
private readonly CancellationTokenSource _cancellationTokenSource = new();
|
private readonly CancellationTokenSource _cancellationTokenSource = new();
|
||||||
|
private readonly ConfigurationServiceBase<MareConfig> _configService;
|
||||||
|
private readonly DtrBarEntry _entry;
|
||||||
|
private readonly PairManager _pairManager;
|
||||||
private Task? _runTask;
|
private Task? _runTask;
|
||||||
private string? _text;
|
private string? _text;
|
||||||
|
|
||||||
@@ -34,6 +33,44 @@ public sealed class DtrEntry : IDisposable, IHostedService
|
|||||||
_entry.Dispose();
|
_entry.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task StartAsync(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_runTask = Task.Run(RunAsync, _cancellationTokenSource.Token);
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task StopAsync(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_cancellationTokenSource.Cancel();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await _runTask!.ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
catch (OperationCanceledException) { }
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_cancellationTokenSource.Dispose();
|
||||||
|
Clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Clear()
|
||||||
|
{
|
||||||
|
_text = null;
|
||||||
|
|
||||||
|
_entry.Shown = false;
|
||||||
|
_entry.Text = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task RunAsync()
|
||||||
|
{
|
||||||
|
while (!_cancellationTokenSource.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
Update();
|
||||||
|
await Task.Delay(1000, _cancellationTokenSource.Token).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (!_configService.Current.EnableDtrEntry)
|
if (!_configService.Current.EnableDtrEntry)
|
||||||
@@ -65,35 +102,4 @@ public sealed class DtrEntry : IDisposable, IHostedService
|
|||||||
_entry.Text = text;
|
_entry.Text = text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Clear()
|
|
||||||
{
|
|
||||||
_text = null;
|
|
||||||
|
|
||||||
_entry.Shown = false;
|
|
||||||
_entry.Text = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task RunAsync()
|
|
||||||
{
|
|
||||||
while (!_cancellationTokenSource.IsCancellationRequested)
|
|
||||||
{
|
|
||||||
Update();
|
|
||||||
await Task.Delay(1000, _cancellationTokenSource.Token).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task StartAsync(CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
_runTask = Task.Run(RunAsync, _cancellationTokenSource.Token);
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task StopAsync(CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
_cancellationTokenSource.Cancel();
|
|
||||||
await _runTask!.ConfigureAwait(false);
|
|
||||||
_cancellationTokenSource.Dispose();
|
|
||||||
Clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user