72 lines
1.8 KiB
Go
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()
|
|
}
|