package main

import (
	"fmt"

	pbnotify "github.com/safing/portbase/notifications"
)

// Notification represents a notification that is to be delivered to the user.
type Notification struct {
	pbnotify.Notification

	// systemID holds the ID returned by the dbus interface on Linux or by WinToast library on Windows.
	systemID NotificationID
}

// IsSupportedAction returns whether the action is supported on this system.
func IsSupportedAction(a pbnotify.Action) bool {
	switch a.Type {
	case pbnotify.ActionTypeNone:
		return true
	default:
		return false
	}
}

// SelectAction sends an action back to the portmaster.
func (n *Notification) SelectAction(action string) {
	upd := &pbnotify.Notification{
		EventID:          n.EventID,
		SelectedActionID: action,
	}

	_ = apiClient.Update(fmt.Sprintf("%s%s", dbNotifBasePath, upd.EventID), upd, nil)
}
