Adressdaten aus dem Swyx-Client; core-Modul und Firefox-Plugin ausgelagert

SwyxTray liest jetzt die Telefonbuecher (global und persoenlich) des
SwyxIt!-Clients in einen Adress-Cache, bietet Kontaktsuche ueber
FulltextSearchInContactsEx und Nummernaufloesung ueber DispResolveNumber;
alles ueber den WebSocket-Zugang abrufbar.

Das Spring-Boot-Modul core/ und das SwyxFFPlugin werden als eigene
Projekte gepflegt und aus diesem Repository entfernt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 15:10:13 +02:00
co-authored by Claude Fable 5
parent cd355c4e21
commit fcd0d62d78
48 changed files with 427 additions and 17014 deletions
+13 -2
View File
@@ -54,6 +54,7 @@ internal sealed class WebSocketSession : IDisposable
if (!IsPlugin)
{
await SendSnapshotAsync(cancellationToken).ConfigureAwait(false);
await SendAddressesAsync(cancellationToken).ConfigureAwait(false);
}
var buffer = new byte[8 * 1024];
@@ -128,11 +129,13 @@ internal sealed class WebSocketSession : IDisposable
return;
}
// 'status' beantwortet der Server mit dem vollen Zustand; die Quittung
// danach haelt den Ablauf fuer den Client einheitlich.
// 'status' beantwortet der Server mit dem vollen Zustand samt der
// zwischengespeicherten Adressdaten; die Quittung danach haelt den
// Ablauf fuer den Client einheitlich.
if (command.Cmd.Equals("status", StringComparison.OrdinalIgnoreCase))
{
await SendSnapshotAsync(cancellationToken).ConfigureAwait(false);
await SendAddressesAsync(cancellationToken).ConfigureAwait(false);
await SendAsync(Protocol.Serialize(new ResultMessage(command.Id, true)), cancellationToken)
.ConfigureAwait(false);
return;
@@ -181,6 +184,14 @@ internal sealed class WebSocketSession : IDisposable
.ConfigureAwait(false);
}
/// <summary>Stellt der Seite die zwischengespeicherten Adressdaten zu.</summary>
private async Task SendAddressesAsync(CancellationToken cancellationToken)
{
var addresses = await _executor.GetAddressesAsync(cancellationToken).ConfigureAwait(false);
await SendAsync(Protocol.Serialize(AddressesMessage.From(addresses)), cancellationToken)
.ConfigureAwait(false);
}
/// <summary>
/// Auf einem WebSocket darf immer nur ein Sendevorgang gleichzeitig laufen.
/// Da Zustandsmeldungen aus dem UI-Thread und Antworten aus dem