//go:build !darwin || !appstore
|
|
package textoutput
|
|
func newPlatformRouter(paster Paster) *Router {
|
return &Router{paster: paster}
|
}
|
|
func (r *Router) Output(text string, keepClipboard bool) Result {
|
return r.OutputWithOptions(text, OutputOptions{KeepClipboard: keepClipboard})
|
}
|
|
func (r *Router) OutputWithOptions(text string, options OutputOptions) Result {
|
if text == "" {
|
return r.remember(Result{OK: false, Method: "legacy_paste", Message: "text is empty"})
|
}
|
if r.paster == nil {
|
return r.remember(Result{OK: false, Text: text, Method: "legacy_paste", Message: "paster is unavailable"})
|
}
|
if err := r.paster.Paste(text, options.KeepClipboard); err != nil {
|
if typeErr := r.paster.TypeText(text); typeErr != nil {
|
return r.remember(Result{
|
OK: false,
|
Text: text,
|
Method: "legacy_type_fallback",
|
Message: "paste failed: " + err.Error() + "; type fallback failed: " + typeErr.Error(),
|
})
|
}
|
return r.remember(Result{
|
OK: true,
|
Text: text,
|
Method: "legacy_type_fallback",
|
Message: "typed through legacy fallback after paste failed: " + err.Error(),
|
})
|
}
|
return r.remember(Result{
|
OK: true,
|
Text: text,
|
Method: "legacy_clipboard_paste",
|
Message: "pasted through existing output path",
|
})
|
}
|