Files
seanime-docker/seanime-2.9.10/internal/plugin/ui/toast.go
2025-09-20 14:08:38 +01:00

72 lines
1.8 KiB
Go

package plugin_ui
import (
"seanime/internal/events"
"github.com/dop251/goja"
)
type ToastManager struct {
ctx *Context
}
func NewToastManager(ctx *Context) *ToastManager {
return &ToastManager{
ctx: ctx,
}
}
func (t *ToastManager) bind(contextObj *goja.Object) {
toastObj := t.ctx.vm.NewObject()
_ = toastObj.Set("success", t.jsToastSuccess)
_ = toastObj.Set("error", t.jsToastError)
_ = toastObj.Set("info", t.jsToastInfo)
_ = toastObj.Set("warning", t.jsToastWarning)
_ = contextObj.Set("toast", toastObj)
}
func (t *ToastManager) jsToastSuccess(call goja.FunctionCall) goja.Value {
message, ok := call.Argument(0).Export().(string)
if !ok {
t.ctx.handleTypeError("toast: success requires a string message")
return goja.Undefined()
}
t.ctx.wsEventManager.SendEvent(events.SuccessToast, message)
return goja.Undefined()
}
func (t *ToastManager) jsToastError(call goja.FunctionCall) goja.Value {
message, ok := call.Argument(0).Export().(string)
if !ok {
t.ctx.handleTypeError("toast: error requires a string message")
return goja.Undefined()
}
t.ctx.wsEventManager.SendEvent(events.ErrorToast, message)
return goja.Undefined()
}
func (t *ToastManager) jsToastInfo(call goja.FunctionCall) goja.Value {
message, ok := call.Argument(0).Export().(string)
if !ok {
t.ctx.handleTypeError("toast: info requires a string message")
return goja.Undefined()
}
t.ctx.wsEventManager.SendEvent(events.InfoToast, message)
return goja.Undefined()
}
func (t *ToastManager) jsToastWarning(call goja.FunctionCall) goja.Value {
message, ok := call.Argument(0).Export().(string)
if !ok {
t.ctx.handleTypeError("toast: warning requires a string message")
return goja.Undefined()
}
t.ctx.wsEventManager.SendEvent(events.WarningToast, message)
return goja.Undefined()
}