All checks were successful
Deploy on Master Change / deploy (push) Successful in 1m21s
90 lines
2.1 KiB
Go
90 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"client/internal/singleinstance"
|
|
|
|
"github.com/wailsapp/wails/v2"
|
|
"github.com/wailsapp/wails/v2/pkg/menu"
|
|
"github.com/wailsapp/wails/v2/pkg/menu/keys"
|
|
"github.com/wailsapp/wails/v2/pkg/options"
|
|
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
|
|
"github.com/wailsapp/wails/v2/pkg/options/windows"
|
|
)
|
|
|
|
//go:embed all:frontend/dist
|
|
var assets embed.FS
|
|
|
|
func initLogging() *os.File {
|
|
configDir, err := os.UserConfigDir()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
appDir := filepath.Join(configDir, "SimpleCare")
|
|
_ = os.MkdirAll(appDir, 0755)
|
|
logFile, err := os.OpenFile(filepath.Join(appDir, "app.log"), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
|
if err == nil {
|
|
log.SetOutput(logFile)
|
|
log.Println("--- Client App Started ---")
|
|
}
|
|
return logFile
|
|
}
|
|
|
|
func main() {
|
|
if err := singleinstance.Acquire(); err != nil {
|
|
os.Exit(0)
|
|
}
|
|
|
|
lf := initLogging()
|
|
if lf != nil {
|
|
defer lf.Close()
|
|
}
|
|
|
|
// Create an instance of the app structure
|
|
app := NewApp()
|
|
|
|
appMenu := menu.NewMenu()
|
|
fileMenu := appMenu.AddSubmenu("Simple Care")
|
|
fileMenu.AddText("Về trang chính", keys.CmdOrCtrl("h"), func(_ *menu.CallbackData) {
|
|
app.ReturnToDashboard()
|
|
})
|
|
fileMenu.AddText("Làm mới trang (F5)", keys.Key("f5"), func(_ *menu.CallbackData) {
|
|
app.ReloadExamPage()
|
|
})
|
|
fileMenu.AddText("Xóa cache trình duyệt", keys.CmdOrCtrl("Delete"), func(_ *menu.CallbackData) {
|
|
app.ClearExamBrowserCache()
|
|
})
|
|
|
|
// Create application with options
|
|
err := wails.Run(&options.App{
|
|
Title: "Simple Care v1.1 — Rikkei Education",
|
|
Width: 1024,
|
|
Height: 768,
|
|
Menu: appMenu,
|
|
AssetServer: &assetserver.Options{
|
|
Assets: assets,
|
|
},
|
|
BackgroundColour: &options.RGBA{R: 245, G: 247, B: 250, A: 1},
|
|
OnStartup: app.startup,
|
|
OnBeforeClose: func(ctx context.Context) (prevent bool) {
|
|
return app.HandleBeforeClose()
|
|
},
|
|
Windows: &windows.Options{
|
|
WebviewUserDataPath: app.webviewDataPath,
|
|
Theme: windows.Light,
|
|
},
|
|
Bind: []interface{}{
|
|
app,
|
|
},
|
|
})
|
|
|
|
if err != nil {
|
|
println("Error:", err.Error())
|
|
}
|
|
}
|