feat(core): add dispatch for autoproxy events (#621)

This commit is contained in:
ambdroid 2024-03-13 17:26:09 -04:00 committed by GitHub
parent 44bd0d6079
commit caff9c50aa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 45 additions and 4 deletions

View file

@ -28,7 +28,8 @@ public enum DispatchEvent
UPDATE_SWITCH,
DELETE_SWITCH,
DELETE_ALL_SWITCHES,
SUCCESSFUL_IMPORT
SUCCESSFUL_IMPORT,
UPDATE_AUTOPROXY,
}
public struct UpdateDispatchData

View file

@ -38,10 +38,28 @@ public class DispatchService
}
}
public Task Dispatch(SystemId systemId, ulong? guildId, ulong? channelId, AutoproxyPatch patch)
public async Task Dispatch(SystemId systemId, ulong? guildId, ulong? channelId, AutoproxyPatch patch)
{
// todo
return Task.CompletedTask;
var repo = _provider.Resolve<ModelRepository>();
var system = await repo.GetSystem(systemId);
if (system.WebhookUrl == null)
return;
var memberUuid = patch.AutoproxyMember.IsPresent && patch.AutoproxyMember.Value is MemberId id
? (await repo.GetMember(id)).Uuid.ToString()
: null;
var data = new UpdateDispatchData();
data.Event = DispatchEvent.UPDATE_AUTOPROXY;
data.SigningToken = system.WebhookToken;
data.SystemId = system.Uuid.ToString();
data.EventData = patch.ToJson(guildId, channelId, memberUuid);
_logger.Debug(
"Dispatching webhook for system {SystemId} autoproxy update in guild {GuildId}/{ChannelId}",
system.Id, guildId, channelId
);
await DoPostRequest(system.Id, system.WebhookUrl, data.GetPayloadBody());
}
public async Task Dispatch(SystemId systemId, UpdateDispatchData data)