summary refs log tree commit diff
path: root/extra/admin-api/Utilities/Spacebar.Client/Pages
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-05-17 03:14:34 +0200
committerRory& <root@rory.gay>2026-05-17 03:14:34 +0200
commit8f76cc5edf8588c8bec36daf0bbdc7d699d38800 (patch)
treed84535fa9d66a674ed652d0b7d5e6cb4865ba7ac /extra/admin-api/Utilities/Spacebar.Client/Pages
parentAdd WIP client (diff)
downloadserver-ts-8f76cc5edf8588c8bec36daf0bbdc7d699d38800.tar.xz
client: basic message parsing, gateway listening
Diffstat (limited to 'extra/admin-api/Utilities/Spacebar.Client/Pages')
-rw-r--r--extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/@me.razor8
-rw-r--r--extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor72
-rw-r--r--extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor.css0
-rw-r--r--extra/admin-api/Utilities/Spacebar.Client/Pages/Discovery/GuildDiscovery.razor6
4 files changed, 84 insertions, 2 deletions
diff --git a/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/@me.razor b/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/@me.razor

index 28709841d..3a47c7bf3 100644 --- a/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/@me.razor +++ b/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/@me.razor
@@ -2,13 +2,16 @@ @attribute [Route(PageUri)] @using ArcaneLibs.Blazor.Components.Services @using Spacebar.Client.Core -@using Spacebar.Models.Gateway @inject JsConsoleService jsConsole <h3>@@me</h3> <p>@Client?.ApiHttpClient.BaseAddress</p> <p>@Client?.Gateway.RawClientWebSocket.State</p> +@foreach (var guild in App.ClientManager.ClientState.Guilds) { + <span class="code">@guild.Value.Name</span><br/> +} + @code { private const string PageUri = "/channels/@me"; @@ -21,7 +24,8 @@ protected override async Task OnParametersSetAsync() { if (Client == null) return; Client.Gateway.OnGatewayMessage.Add(async msg => { - await jsConsole.Log("Received gateway message: ", msg); + // await jsConsole.Log("Received gateway message: ", msg); + // StateHasChanged(); }); } diff --git a/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor b/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor new file mode 100644
index 000000000..67c637ccf --- /dev/null +++ b/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor
@@ -0,0 +1,72 @@ +@page "/channels/{GuildId:long}/{ChannelId:long}" +@page "/channels/{GuildId:long}/{ChannelId:long}/{MessageId:long}" +@using System.Collections.ObjectModel +@using ArcaneLibs.Blazor.Components.Services +@using ArcaneLibs.Extensions +@using Spacebar.Client.Components +@using Spacebar.Models.Gateway +@using Spacebar.Models.Generic +@inject JsConsoleService jsConsole + +<style>@_guildCss</style> +<ChannelMessageList Messages="@_messages"></ChannelMessageList> + +@code { + + private ObservableCollection<Message> _messages { get; set; } = []; + private string _guildCss = ""; + + [Parameter] + public long GuildId { get; set; } + + [Parameter] + public long ChannelId { get; set; } + + [Parameter] + public long? MessageId { get; set; } + + protected override async Task OnInitializedAsync() { + var cid = ChannelId; + Console.WriteLine($"OIA GuildChannel(g={GuildId},c={ChannelId},m={MessageId})"); + await (App.ClientManager.ClientAvailable ?? Task.CompletedTask); + if (MessageId is null) { + App.ClientManager.Client?.Gateway.OnceGatewayMessage.Add(async evt => { + if (evt is { Opcode: GatewayOpcode.S2CDispatch, DispatchEventType: "MESSAGE_CREATE" }) { + if (evt.EventData["channel_id"].GetValue<string>() != ChannelId.ToString()) return false; + await jsConsole.Info("Current channel message:", evt); + var msg = evt.GetData<Message>(); + await jsConsole.Info("... typed:", msg); + _messages.Add(msg); + StateHasChanged(); + } + + return cid != ChannelId; + }); + await (App.ClientManager.ClientReady ?? Task.CompletedTask); + _messages = new ObservableCollection<Message>(Enumerable.Reverse(await App.ClientManager.Client.GetChannel(ChannelId).GetMessagesAsync( + before: App.ClientManager.ClientState.Guilds[GuildId].Channels.First(x => x.Id == ChannelId).LastMessageId + 1, + limit: 100 + ))); + + // build role color css... + _guildCss = ""; + foreach (var role in App.ClientManager.ClientState.Guilds[GuildId].Roles) { + _guildCss += $$""" + .role_{{role.Id}} { + color: #{{role.Colors.PrimaryColor.ToString("X6")}}; + } + + """; + } + } + } + + public override async Task SetParametersAsync(ParameterView parameters) { + bool reset = false; + if (parameters.GetValueOrDefault<long>("ChannelId") != ChannelId) reset = true; + + await base.SetParametersAsync(parameters); + if (reset) await OnInitializedAsync(); + } + +} \ No newline at end of file diff --git a/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor.css b/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor.css new file mode 100644
index 000000000..e69de29bb --- /dev/null +++ b/extra/admin-api/Utilities/Spacebar.Client/Pages/Channels/GuildChannel.razor.css
diff --git a/extra/admin-api/Utilities/Spacebar.Client/Pages/Discovery/GuildDiscovery.razor b/extra/admin-api/Utilities/Spacebar.Client/Pages/Discovery/GuildDiscovery.razor new file mode 100644
index 000000000..306cc8cff --- /dev/null +++ b/extra/admin-api/Utilities/Spacebar.Client/Pages/Discovery/GuildDiscovery.razor
@@ -0,0 +1,6 @@ +@page "/discovery/guilds" +<h3>GuildDiscovery</h3> + +@code { + +} \ No newline at end of file