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:
@@ -29,9 +29,12 @@ internal sealed class ClientCommand
|
||||
|
||||
public string? Cmd { get; set; }
|
||||
|
||||
/// <summary>Nur bei <c>call</c>.</summary>
|
||||
/// <summary>Bei <c>call</c> und <c>resolve</c>.</summary>
|
||||
public string? Number { get; set; }
|
||||
|
||||
/// <summary>Nur bei <c>contacts</c>: der Suchbegriff (Name oder Nummer).</summary>
|
||||
public string? Query { get; set; }
|
||||
|
||||
/// <summary>1-basierte Leitung; fehlt sie, waehlt die App selbst.</summary>
|
||||
public int? Line { get; set; }
|
||||
|
||||
@@ -71,15 +74,42 @@ internal sealed record HelloMessage(string App, string Version, int Protocol, in
|
||||
public string Type => "hello";
|
||||
}
|
||||
|
||||
/// <summary>Ein Adressdatensatz in der Antwort auf <c>contacts</c> und in
|
||||
/// der <c>addresses</c>-Nachricht.</summary>
|
||||
internal sealed record ContactMessage(string Name, string Number, string Description)
|
||||
{
|
||||
public static ContactMessage From(SwyxContact contact)
|
||||
=> new(contact.Name, contact.Number, contact.Description);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Die zwischengespeicherten Adressdaten aus dem Swyx-Client (globales und
|
||||
/// persoenliches Telefonbuch). Wird nach dem <c>snapshot</c> beim Verbinden,
|
||||
/// auf <c>status</c> und nach jedem Neueinlesen mit Aenderung gesendet — die
|
||||
/// Seite muss die Daten also nie selbst anfordern.
|
||||
/// </summary>
|
||||
internal sealed record AddressesMessage(IReadOnlyList<ContactMessage> Addresses)
|
||||
{
|
||||
public string Type => "addresses";
|
||||
|
||||
public static AddressesMessage From(IEnumerable<SwyxContact> addresses)
|
||||
=> new(addresses.Select(ContactMessage.From).ToList());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Antwort auf genau ein Kommando. <c>Focused</c> wird nur bei <c>focus</c>
|
||||
/// gesetzt: <c>true</c> = Fenster in den Vordergrund geholt, <c>false</c> =
|
||||
/// stattdessen den Browser mit der URL gestartet. <c>Tabs</c> steht nur in
|
||||
/// der Antwort auf <c>tabs</c>, <c>TabId</c> nur in der auf <c>opentab</c>.
|
||||
/// der Antwort auf <c>tabs</c>, <c>TabId</c> nur in der auf <c>opentab</c>,
|
||||
/// <c>Contacts</c> nur in der auf <c>contacts</c>, <c>Name</c> nur in der
|
||||
/// auf <c>resolve</c> (leer, wenn der Client die Nummer nicht kennt),
|
||||
/// <c>Addresses</c> nur in der auf <c>addresses</c> (der komplette Cache).
|
||||
/// </summary>
|
||||
internal sealed record ResultMessage(
|
||||
int? Id, bool Ok, string? Error = null, int? Line = null, bool? Focused = null,
|
||||
int? TabId = null, IReadOnlyList<TabInfo>? Tabs = null)
|
||||
int? TabId = null, IReadOnlyList<TabInfo>? Tabs = null,
|
||||
IReadOnlyList<ContactMessage>? Contacts = null, string? Name = null,
|
||||
IReadOnlyList<ContactMessage>? Addresses = null)
|
||||
{
|
||||
public string Type => "result";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user