0f981880b5
- Implemented the MarkSeen method in the notification client to mark notifications as seen, enhancing user interaction with notifications. - Added MarkSeenRequest and MarkSeenResponse structs to facilitate the request and response handling for marking notifications. - Updated the NotificationService interface to include the new MarkSeen method, ensuring consistency across the service layer. - Enhanced the SDK with a QuickMarkSeen convenience method for easier usage in client applications. - Included logging for successful and failed attempts to mark notifications as seen, improving traceability and debugging capabilities.
78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
package notification
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
// NotificationService defines the interface for notification operations
|
|
type NotificationService interface {
|
|
// SendNotification sends a notification using the configured client
|
|
SendNotification(ctx context.Context, req *NotificationRequest) (*NotificationResponse, error)
|
|
|
|
// SendEmail sends an email notification
|
|
SendEmail(ctx context.Context, model Model) (*NotificationResponse, error)
|
|
|
|
// SendSMS sends an SMS notification
|
|
SendSMS(ctx context.Context, model Model) (*NotificationResponse, error)
|
|
|
|
// SendPush sends a push notification
|
|
SendPush(ctx context.Context, model Model) (*NotificationResponse, error)
|
|
|
|
// SendOTP sends an OTP notification
|
|
SendOTP(ctx context.Context, model Model) (*NotificationResponse, error)
|
|
|
|
// GetNotifications retrieves a list of notifications
|
|
GetNotifications(ctx context.Context, req *GetNotificationsRequest) (*NotificationListResponse, error)
|
|
|
|
// MarkSeen marks a notification as seen
|
|
MarkSeen(ctx context.Context, notificationID string) (*MarkSeenResponse, error)
|
|
|
|
// Health checks if the notification service is available
|
|
Health(ctx context.Context) error
|
|
|
|
// NewBuilder creates a new notification builder
|
|
NewBuilder() Builder
|
|
}
|
|
|
|
// Builder provides a fluent interface for building notification requests
|
|
type Builder interface {
|
|
// SetEventType sets the event type
|
|
SetEventType(eventType EventType) Builder
|
|
|
|
// SetMessage sets the notification message
|
|
SetMessage(message string) Builder
|
|
|
|
// SetUserID sets the user ID
|
|
SetUserID(userID string) Builder
|
|
|
|
// SetEmail sets the email address
|
|
SetEmail(email string) Builder
|
|
|
|
// SetSMS sets the SMS phone number
|
|
SetSMS(phoneNumber string) Builder
|
|
|
|
// SetPush sets the push device token
|
|
SetPush(deviceToken string) Builder
|
|
|
|
// SetOTP sets the OTP phone number
|
|
SetOTP(phoneNumber string) Builder
|
|
|
|
// SetTitle sets the notification title
|
|
SetTitle(title string) Builder
|
|
|
|
// SetType sets the notification type
|
|
SetType(notificationType string) Builder
|
|
|
|
// SetPriority sets the notification priority
|
|
SetPriority(priority string) Builder
|
|
|
|
// SetScheduledAt sets the scheduled delivery time (0 for immediate)
|
|
SetScheduledAt(scheduledAt int64) Builder
|
|
|
|
// Build creates the notification request
|
|
Build() (*NotificationRequest, error)
|
|
|
|
// Send builds and sends the notification
|
|
Send(ctx context.Context) (*NotificationResponse, error)
|
|
}
|