Browse Source

change update

master
godo 9 months ago
parent
commit
595b997e4b
  1. 3
      frontend/src/system/config.ts
  2. 2
      frontend/src/system/core/FileOs.ts
  3. 57
      frontend/src/system/event/SystemEvent.ts
  4. 5
      frontend/src/system/index.ts
  5. 1
      frontend/vite.config.ts
  6. 29
      godo/cmd/main.go
  7. 6
      godo/deps/frontend.go
  8. 62
      godo/sys/update.go
  9. 7
      main.go

3
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;

2
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<any> {

57
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 };

5
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);

1
frontend/vite.config.ts

@ -40,5 +40,6 @@ export default defineConfig(async () => ({
drop_debugger: true
}
},
outDir: '../godo/deps/dist',
}
}));

29
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.")
}

6
godo/deps/frontend.go

@ -0,0 +1,6 @@
package deps
import "embed"
//go:embed dist
var Frontendassets embed.FS

62
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 ""
}

7
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,

Loading…
Cancel
Save