From 595b997e4bb5f5af919c5cb74e207bee4b2dc9b9 Mon Sep 17 00:00:00 2001 From: godo Date: Thu, 22 Aug 2024 16:29:12 +0800 Subject: [PATCH] change update --- frontend/src/system/config.ts | 3 +- frontend/src/system/core/FileOs.ts | 2 +- frontend/src/system/event/SystemEvent.ts | 57 +++++++++++----------- frontend/src/system/index.ts | 5 +- frontend/vite.config.ts | 1 + godo/cmd/main.go | 29 +++-------- godo/deps/frontend.go | 6 +++ godo/sys/update.go | 62 +++++++++--------------- main.go | 7 +-- 9 files changed, 71 insertions(+), 101 deletions(-) create mode 100644 godo/deps/frontend.go diff --git a/frontend/src/system/config.ts b/frontend/src/system/config.ts index d445ee4..ae6405d 100644 --- a/frontend/src/system/config.ts +++ b/frontend/src/system/config.ts @@ -14,8 +14,7 @@ export const getSystemConfig = (ifset = false) => { // 初始化配置对象的各项属性,若本地存储中已存在则不进行覆盖 if (!config.version) { - config.version = '1.0.0'; - //config.version = '0.0.9'; + config.version = '1.0.1'; } if (!config.isFirstRun) { config.isFirstRun = false; diff --git a/frontend/src/system/core/FileOs.ts b/frontend/src/system/core/FileOs.ts index 55426b8..2205ec2 100644 --- a/frontend/src/system/core/FileOs.ts +++ b/frontend/src/system/core/FileOs.ts @@ -135,7 +135,7 @@ export function getFormData(content: any) { } const formData = new FormData(); - formData.append('content', blobContent); // 可以自定义文件名 + formData.append('content', blobContent); return formData } export async function handleWriteFile(filePath: string, content: any): Promise { diff --git a/frontend/src/system/event/SystemEvent.ts b/frontend/src/system/event/SystemEvent.ts index 6211e51..332e0cb 100644 --- a/frontend/src/system/event/SystemEvent.ts +++ b/frontend/src/system/event/SystemEvent.ts @@ -2,7 +2,7 @@ import { mountEvent, emitEvent } from './EventHook'; import { RootState } from '../root'; import { useSystem } from '../index'; -//import { join } from '../core/Path'; +import { join } from '../core/Path'; function initSizeEvent() { const rootState = useSystem()._rootState; @@ -54,35 +54,36 @@ function initNetworkEvent() { rootState.info.connection = connection; }); } -// function setAlertTask(time: number, callback: any) { -// const date = new Date(); //现在时刻 -// const dateIntegralPoint = new Date(time); +function setAlertTask(time: number, callback: any) { + const date = new Date(); //现在时刻 + const dateIntegralPoint = new Date(time); -// setTimeout(() => { -// callback(); -// }, dateIntegralPoint.getTime() - date.getTime()); //用户登录后的下一个整点执行。 -// } + setTimeout(() => { + callback(); + }, dateIntegralPoint.getTime() - date.getTime()); //用户登录后的下一个整点执行。 +} async function initAlertEvent() { - // const sys = useSystem(); + const sys = useSystem(); - // const chosenDay = new Date(); - // const fileName = `${chosenDay.getFullYear()}-${chosenDay.getMonth() + 1}-${chosenDay.getDate()}.json`; - // const alredyNotes = await sys.fs.readFile( - // join(sys._rootState.options.userLocation || '', '/Schedule', fileName) - // ); - // if (alredyNotes) { - // const alertList = JSON.parse(alredyNotes); - // alertList.forEach((item: any) => { - // if (item.time < Date.now()) return; - // setAlertTask(item.time, () => { - // sys.createNotify({ - // title: '日程提醒', - // content: `今日${new Date(item.time).getHours()}时${new Date(item.time).getMinutes()}分 的提醒: ${ - // item.text - // }`, - // }); - // }); - // }); - // } + const chosenDay = new Date(); + const fileName = `${chosenDay.getFullYear()}-${chosenDay.getMonth() + 1}-${chosenDay.getDate()}.json`; + const filePath = join(sys._rootState.options.userLocation || '', '/Schedule', fileName) + const isExits = await sys.fs.exists(filePath); + + if (isExits) { + const alredyNotes = await sys.fs.readFile(filePath); + const alertList = JSON.parse(alredyNotes); + alertList.forEach((item: any) => { + if (item.time < Date.now()) return; + setAlertTask(item.time, () => { + sys.createNotify({ + title: '日程提醒', + content: `今日${new Date(item.time).getHours()}时${new Date(item.time).getMinutes()}分 的提醒: ${ + item.text + }`, + }); + }); + }); + } } export { initSizeEvent, initBatteryEvent, initNetworkEvent, initAlertEvent }; diff --git a/frontend/src/system/index.ts b/frontend/src/system/index.ts index 5222de9..f5b9831 100644 --- a/frontend/src/system/index.ts +++ b/frontend/src/system/index.ts @@ -115,14 +115,15 @@ export class System { if (this._rootState.magnet?.length < 1) { this.refershAppList() } - const upgradeStore = useUpgradeStore(); - upgradeStore.checkUpdate() setTimeout(() => { if (this._rootState.magnet?.length < 1) { //this.recover() clearSystemConfig(); RestartApp(); + return; } + const upgradeStore = useUpgradeStore(); + upgradeStore.checkUpdate() }, 3000); }, 6000); diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index d0b28a2..3a9c306 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -40,5 +40,6 @@ export default defineConfig(async () => ({ drop_debugger: true } }, + outDir: '../godo/deps/dist', } })); diff --git a/godo/cmd/main.go b/godo/cmd/main.go index b280ff7..79144f1 100644 --- a/godo/cmd/main.go +++ b/godo/cmd/main.go @@ -2,12 +2,14 @@ package cmd import ( "context" + "godo/deps" "godo/files" "godo/libs" "godo/localchat" "godo/store" "godo/sys" "godo/webdav" + "io/fs" "log" "net/http" "time" @@ -16,11 +18,8 @@ import ( ) const serverAddress = ":56780" -const staticServerAddress = ":8215" var srv *http.Server -var staticSrv *http.Server -var staticRouter *http.ServeMux func OsStart() { libs.InitServer() @@ -32,12 +31,6 @@ func OsStart() { staticDir := libs.GetStaticDir() router.PathPrefix("/static").Handler(http.StripPrefix("/static", http.FileServer(http.Dir(staticDir)))) router.HandleFunc("/ping", store.Ping).Methods(http.MethodGet) - if !libs.PathExists("./dist") { - router.HandleFunc("/", store.Ping).Methods(http.MethodGet) - } else { - staticRouter = http.NewServeMux() - staticRouter.Handle("/", http.FileServer(http.Dir("./dist"))) - } progressRouter := router.PathPrefix("/store").Subrouter() progressRouter.HandleFunc("/start/{name}", store.StartProcess).Methods(http.MethodGet) @@ -101,15 +94,10 @@ func OsStart() { webdavRouter.HandleFunc("/writefile", webdav.HandleWriteFile).Methods(http.MethodPost) webdavRouter.HandleFunc("/appendfile", webdav.HandleAppendFile).Methods(http.MethodPost) - // 将静态文件服务放在最后,作为默认处理程序 - router.PathPrefix("/").Handler(http.NotFoundHandler()) - if staticRouter != nil { - go func() { - log.Printf("Static Server listening on port: %v", staticServerAddress) - staticSrv = &http.Server{Addr: staticServerAddress, Handler: staticRouter} - Serve(staticSrv) - }() - } + distFS, _ := fs.Sub(deps.Frontendassets, "dist") + fileServer := http.FileServer(http.FS(distFS)) + router.PathPrefix("/").Handler(fileServer) + go store.CheckActive(context.Background()) log.Printf("Listening on port: %v", serverAddress) srv = &http.Server{Addr: serverAddress, Handler: router} @@ -125,10 +113,5 @@ func OsStop() { if err := srv.Shutdown(ctx); err != nil { log.Fatalf("Server forced to shutdown: %v", err) } - if staticSrv != nil { - if err := staticSrv.Shutdown(ctx); err != nil { - log.Fatalf("Static Server forced to shutdown: %v", err) - } - } log.Println("Server stopped.") } diff --git a/godo/deps/frontend.go b/godo/deps/frontend.go new file mode 100644 index 0000000..5ae8944 --- /dev/null +++ b/godo/deps/frontend.go @@ -0,0 +1,6 @@ +package deps + +import "embed" + +//go:embed dist +var Frontendassets embed.FS diff --git a/godo/sys/update.go b/godo/sys/update.go index fc7348a..0251e43 100644 --- a/godo/sys/update.go +++ b/godo/sys/update.go @@ -8,7 +8,6 @@ import ( "log" "net/http" "path/filepath" - "runtime" "time" "github.com/minio/selfupdate" @@ -45,6 +44,19 @@ type DownloadStatus struct { Downloading bool `json:"downloading"` Done bool `json:"done"` } +type UpdateAdReq struct { + Img string `json:"img"` + Name string `json:"name"` + Link string `json:"link"` + Desc string `json:"desc"` +} +type UpdateVersionReq struct { + Version string `json:"version"` + Url string `json:"url"` + Name string `json:"name"` + Desc string `json:"desc"` + AdList []UpdateAdReq `json:"adList"` +} func (pr *ProgressReader) Read(p []byte) (n int, err error) { n, err = pr.reader.Read(p) @@ -117,7 +129,12 @@ func UpdateAppHandler(w http.ResponseWriter, r *http.Request) { } func GetUpdateUrlHandler(w http.ResponseWriter, r *http.Request) { - updateUrl := "https://gitee.com/ruitao_admin/godoos-image/raw/master/version/version.json" + info, err := libs.GetSystemInfo() + if err != nil { + http.Error(w, "update error:"+err.Error(), http.StatusInternalServerError) + return + } + updateUrl := "https://godocms.com/version?info=" + info res, err := http.Get(updateUrl) if err != nil { libs.ErrorMsg(w, err.Error()) @@ -129,47 +146,12 @@ func GetUpdateUrlHandler(w http.ResponseWriter, r *http.Request) { libs.ErrorMsg(w, err.Error()) return } - var info VersionInfo - err = json.Unmarshal(body, &info) + var updateInfo UpdateVersionReq + err = json.Unmarshal(body, &updateInfo) if err != nil { fmt.Println("Error unmarshalling JSON:", err) return } - //log.Printf("info: %v", info) - // 根据操作系统和架构获取路径 - path := getPathForOSAndArch(&info) - // 将结果以 JSON 格式返回给前端 - response := map[string]string{"url": path, "version": info.Version} - json.NewEncoder(w).Encode(response) - - } -} - -// 根据操作系统和架构获取路径 -func getPathForOSAndArch(info *VersionInfo) string { - os := runtime.GOOS - arch := runtime.GOARCH - switch os { - case "windows": - if arch == "amd64" { - return info.Windows.Amd64 - } else if arch == "arm64" { - return info.Windows.Arm64 - } - case "linux": - if arch == "amd64" { - return info.Linux.Amd64 - } else if arch == "arm64" { - return info.Linux.Arm64 - } - case "darwin": - if arch == "amd64" { - return info.Darwin.Amd64 - } else if arch == "arm64" { - return info.Darwin.Arm64 - } - default: - return "" + json.NewEncoder(w).Encode(updateInfo) } - return "" } diff --git a/main.go b/main.go index d04ffb0..938db10 100644 --- a/main.go +++ b/main.go @@ -1,9 +1,9 @@ package main import ( - "embed" "os" + "godo/deps" App "godoos/app" "github.com/wailsapp/wails/v2" @@ -11,9 +11,6 @@ import ( "github.com/wailsapp/wails/v2/pkg/options/assetserver" ) -//go:embed all:frontend/dist -var assets embed.FS - func main() { // Create an instance of the app structure app := App.NewApp() @@ -24,7 +21,7 @@ func main() { Width: 1024, Height: 768, AssetServer: &assetserver.Options{ - Assets: assets, + Assets: deps.Frontendassets, }, BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, OnStartup: app.Startup,