mirror of
https://github.com/lone-cloud/prism
synced 2026-06-03 08:43:10 -07:00
36 lines
814 B
Go
36 lines
814 B
Go
package proton
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
|
|
"prism/internal/config"
|
|
)
|
|
|
|
type ActionHandler struct {
|
|
monitor *Monitor
|
|
cfg *config.Config
|
|
logger *slog.Logger
|
|
}
|
|
|
|
func NewActionHandler(monitor *Monitor, cfg *config.Config, logger *slog.Logger) *ActionHandler {
|
|
return &ActionHandler{
|
|
monitor: monitor,
|
|
cfg: cfg,
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
func (h *ActionHandler) HandleAction(actionType, messageID string) error {
|
|
if actionType != h.cfg.ActionMarkRead {
|
|
return fmt.Errorf("unknown action type: %s", actionType)
|
|
}
|
|
|
|
if err := h.monitor.MarkAsRead(messageID); err != nil {
|
|
h.logger.Error("Failed to mark message as read", "messageID", messageID, "error", err)
|
|
return fmt.Errorf("failed to mark as read: %w", err)
|
|
}
|
|
|
|
h.logger.Info("Marked message as read", "messageID", messageID)
|
|
return nil
|
|
}
|