client: basic message parsing, gateway listening
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
|