fckeuspy-go/vendor/github.com/rymdport/portal/notification/notification.go

61 lines
2.0 KiB
Go

// Package notification lets sandboxed applications send and withdraw notifications. It is not possible for the application to learn if the notification was actually presented to the user.
// Upstream API documentation can be found at https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Notification.html.
package notification
import (
"strconv"
"github.com/godbus/dbus/v5"
"github.com/rymdport/portal/internal/apis"
"github.com/rymdport/portal/internal/convert"
)
const (
interfaceName = apis.CallBaseName + ".Notification"
addNotificationCallName = interfaceName + ".AddNotification"
removeNotificationCallName = interfaceName + ".RemoveNotification"
)
// Priority is the priroity of a notification.
type Priority = string
const (
Low Priority = "low"
Normal Priority = "normal"
High Priority = "high"
Urgent Priority = "urgent"
)
// Content holds the content to send with the notification.
type Content struct {
Title string // User-visible string to display as the title.
Body string // User-visible string to display as the body.
Icon string // Serialized icon or name of application icon.
Priority Priority // The priority for the notification.
}
// Add sends a notification using org.freedesktop.portal.Notification.Add.
func Add(id uint, content Content) error {
data := map[string]dbus.Variant{
"title": convert.FromString(content.Title),
"body": convert.FromString(content.Body),
}
// Only add the icon field when it is set
if content.Icon != "" {
data["icon"] = convert.FromString(content.Icon)
}
// Only add the priority field when it is set.
if content.Priority != "" {
data["priority"] = convert.FromString(content.Priority)
}
return apis.CallWithoutResult(addNotificationCallName, strconv.FormatUint(uint64(id), 10), data)
}
// Remove removes the notification with the corresponding id.
func Remove(id uint) error {
return apis.CallWithoutResult(removeNotificationCallName, strconv.FormatUint(uint64(id), 10))
}