/
kochkatech
/
Queue
Обзор
Документация
Войти
/
kochkatech
/
Queue
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
dev
src/Queue.Display/ViewModels/ConnectViewModel.cs
75 строк
2 KB
kochkareal
feat: табло очереди
24 июл 2026, 22:27
24 июл 2026, 22:27
2805d52
Код
Авторство
О чём код?
using System; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Queue.Display.Services; namespace Queue.Display.ViewModels; public partial class ConnectViewModel : ObservableObject { private readonly QueueApiClient _apiClient; [ObservableProperty] private string serverAddress; [ObservableProperty] private bool remember = true; [ObservableProperty] private string errorMessage = string.Empty; // Поднимается после успешной проверки связи с сервером — App.xaml.cs показывает табло. public event EventHandler? Connected; public ConnectViewModel(QueueApiClient apiClient, string initialAddress) { _apiClient = apiClient; serverAddress = initialAddress; } [RelayCommand] private async Task ConnectAsync() { ErrorMessage = string.Empty; if (string.IsNullOrWhiteSpace(ServerAddress)) { ErrorMessage = "Введите адрес сервера."; return; } _apiClient.Configure(ServerAddress); try { var snapshot = await _apiClient.GetBoardAsync(); if (snapshot is null) { ErrorMessage = "Сервер не отвечает."; return; } } catch (Exception ex) { ErrorMessage = $"Не удалось подключиться: {ex.Message}"; return; } if (Remember) { new DisplaySettings { ServerAddress = ServerAddress }.Save(); } try { await _apiClient.ConnectHubAsync(); } catch { // Живые обновления недоступны — табло продолжит работать по резервному опросу (см. BoardViewModel). } Connected?.Invoke(this, EventArgs.Empty); } }