2021-08-22 23:05:22 +10:00
|
|
|
//go:build dev
|
|
|
|
|
// +build dev
|
|
|
|
|
|
|
|
|
|
package assetserver
|
|
|
|
|
|
|
|
|
|
import (
|
2022-03-30 15:40:44 +02:00
|
|
|
"net/http"
|
2021-12-03 10:25:38 +01:00
|
|
|
"strings"
|
2021-08-22 23:05:22 +10:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
/*
|
2022-10-29 23:15:15 +02:00
|
|
|
The assetserver for the dev mode.
|
|
|
|
|
Depending on the UserAgent it injects a websocket based IPC script into `index.html` or the default desktop IPC. The
|
|
|
|
|
default desktop IPC is injected when the webview accesses the devserver.
|
2021-08-22 23:05:22 +10:00
|
|
|
*/
|
2023-05-16 09:35:48 +02:00
|
|
|
func NewDevAssetServer(handler http.Handler, bindingsJSON string, servingFromDisk bool, logger Logger, runtime RuntimeAssets) (*AssetServer, error) {
|
2022-12-31 10:36:07 +11:00
|
|
|
result, err := NewAssetServerWithHandler(handler, bindingsJSON, servingFromDisk, logger, runtime)
|
2021-12-03 10:25:38 +01:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
2021-08-22 23:05:22 +10:00
|
|
|
}
|
|
|
|
|
|
2022-03-30 15:40:44 +02:00
|
|
|
result.appendSpinnerToBody = true
|
|
|
|
|
result.ipcJS = func(req *http.Request) []byte {
|
|
|
|
|
if strings.Contains(req.UserAgent(), WailsUserAgentValue) {
|
2022-12-31 10:36:07 +11:00
|
|
|
return runtime.DesktopIPC()
|
2022-03-30 15:40:44 +02:00
|
|
|
}
|
2022-12-31 10:36:07 +11:00
|
|
|
return runtime.WebsocketIPC()
|
2022-03-30 15:40:44 +02:00
|
|
|
}
|
2021-12-03 10:25:38 +01:00
|
|
|
|
2021-10-02 14:04:46 +10:00
|
|
|
return result, nil
|
2021-08-22 23:05:22 +10:00
|
|
|
}
|