package notification import ( "context" "galaxy/backend/internal/lobby" ) // LobbyAdapter returns an implementation of `lobby.NotificationPublisher` // backed by *Service. The adapter copies the producer-side intent shape // into notification.Intent and calls Submit; Submit's own malformed // fallback handles invalid payloads, so the adapter never blocks the // caller. The interface is the same one The wiring connects through the // no-op publisher. func (s *Service) LobbyAdapter() lobby.NotificationPublisher { return &lobbyAdapter{svc: s} } type lobbyAdapter struct { svc *Service } func (a *lobbyAdapter) PublishLobbyEvent(ctx context.Context, ev lobby.LobbyNotification) error { if a == nil || a.svc == nil { return nil } intent := Intent{ Kind: ev.Kind, IdempotencyKey: ev.IdempotencyKey, Recipients: ev.Recipients, Payload: ev.Payload, } _, err := a.svc.Submit(ctx, intent) return err }