refactored notificatoin / tgsettle responsibility boundaries

This commit is contained in:
Stephan D
2026-02-19 18:56:59 +01:00
parent 47f0a3d890
commit 2fd8a6ebb7
73 changed files with 3705 additions and 681 deletions

View File

@@ -10,6 +10,7 @@ import (
"github.com/tech/sendico/pkg/discovery"
"github.com/tech/sendico/pkg/domainprovider"
"github.com/tech/sendico/pkg/merrors"
msg "github.com/tech/sendico/pkg/messaging"
na "github.com/tech/sendico/pkg/messaging/notifications/account"
cnotifications "github.com/tech/sendico/pkg/messaging/notifications/confirmation"
confirmations "github.com/tech/sendico/pkg/messaging/notifications/confirmations"
@@ -27,8 +28,8 @@ type NotificationAPI struct {
client mmail.Client
dp domainprovider.DomainProvider
tg telegram.Client
producer msg.Producer
announcer *discovery.Announcer
confirm *confirmationManager
}
func (a *NotificationAPI) Name() mservice.Type {
@@ -39,9 +40,6 @@ func (a *NotificationAPI) Finish(_ context.Context) error {
if a.announcer != nil {
a.announcer.Stop()
}
if a.confirm != nil {
a.confirm.Stop()
}
return nil
}
@@ -50,6 +48,7 @@ func CreateAPI(a api.API) (*NotificationAPI, error) {
dp: a.DomainProvider(),
}
p.logger = a.Logger().Named(p.Name())
p.producer = a.Register().Producer()
if a.Config().Notification == nil {
return nil, merrors.InvalidArgument("notification configuration is missing", "config.notification")
@@ -67,7 +66,6 @@ func CreateAPI(a api.API) (*NotificationAPI, error) {
p.logger.Error("Failed to create telegram client", zap.Error(err))
return nil, err
}
p.confirm = newConfirmationManager(p.logger, p.tg, a.Register().Producer())
db, err := a.DBFactory().NewAccountDB()
if err != nil {
@@ -92,6 +90,10 @@ func CreateAPI(a api.API) (*NotificationAPI, error) {
p.logger.Error("Failed to register confirmation request handler", zap.Error(err))
return nil, err
}
if err := a.Register().Consumer(tnotifications.NewTelegramTextProcessor(p.logger, p.onTelegramText)); err != nil {
p.logger.Error("Failed to register telegram text handler", zap.Error(err))
return nil, err
}
if err := a.Register().Consumer(tnotifications.NewTelegramReactionProcessor(p.logger, p.onTelegramReaction)); err != nil {
p.logger.Error("Failed to register telegram reaction handler", zap.Error(err))
return nil, err
@@ -162,10 +164,3 @@ func (a *NotificationAPI) onCallRequest(ctx context.Context, request *model.Call
a.logger.Info("Call request sent via Telegram", zap.String("phone", request.Phone))
return nil
}
func (a *NotificationAPI) onConfirmationRequest(ctx context.Context, request *model.ConfirmationRequest) error {
if a.confirm == nil {
return merrors.Internal("confirmation manager is not configured")
}
return a.confirm.HandleRequest(ctx, request)
}