summaryrefslogtreecommitdiffhomepage
path: root/pkg/client/event.go
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-05-29 11:32:55 -0400
committerDax Raad <[email protected]>2025-05-29 11:32:55 -0400
commit6f604bd0f999a5df4ed6a57aef524f0dcf9eb356 (patch)
treeefb732ba56257a8f02edea604424821c9b687cf3 /pkg/client/event.go
parent42c1cd6a852be5295aedc5c19e1a2aef45a464e3 (diff)
downloadopencode-6f604bd0f999a5df4ed6a57aef524f0dcf9eb356.tar.gz
opencode-6f604bd0f999a5df4ed6a57aef524f0dcf9eb356.zip
remove secondary codegen
Diffstat (limited to 'pkg/client/event.go')
-rw-r--r--pkg/client/event.go28
1 files changed, 5 insertions, 23 deletions
diff --git a/pkg/client/event.go b/pkg/client/event.go
index a43c4c8ea..f5aab2d26 100644
--- a/pkg/client/event.go
+++ b/pkg/client/event.go
@@ -5,21 +5,9 @@ import (
"context"
"encoding/json"
"net/http"
- "reflect"
"strings"
)
-var EventMap = map[string]any{
- "storage.write": EventStorageWrite{},
- "session.updated": EventSessionUpdated{},
- "message.updated": EventMessageUpdated{},
-}
-
-type EventMessage struct {
- Type string `json:"type"`
- Properties json.RawMessage `json:"properties"`
-}
-
func (c *Client) Event(ctx context.Context) (<-chan any, error) {
events := make(chan any)
req, err := http.NewRequestWithContext(ctx, "GET", c.Server+"event", nil)
@@ -42,24 +30,18 @@ func (c *Client) Event(ctx context.Context) (<-chan any, error) {
if strings.HasPrefix(line, "data: ") {
data := strings.TrimPrefix(line, "data: ")
- var eventMsg EventMessage
- if err := json.Unmarshal([]byte(data), &eventMsg); err != nil {
+ var event Event
+ if err := json.Unmarshal([]byte(data), &event); err != nil {
continue
}
- eventTemplate, exists := EventMap[eventMsg.Type]
- if !exists {
- continue
- }
-
- eventValue := reflect.New(reflect.TypeOf(eventTemplate)).Interface()
-
- if err := json.Unmarshal(eventMsg.Properties, eventValue); err != nil {
+ val, err := event.ValueByDiscriminator()
+ if err != nil {
continue
}
select {
- case events <- eventValue:
+ case events <- val:
case <-ctx.Done():
return
}