From d5d981923329686a4a3b1d4753c7fe9076c4da44 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 11 Jan 2025 23:40:57 +0100 Subject: [PATCH] Implement displaying breaking changes --- addon.go | 15 +++++++-------- addonService.go | 10 +++++----- app.go | 6 +++--- frontend/src/lib/components/AddonCard.svelte | 5 +++++ frontend/src/lib/router/routes/Home.svelte | 1 - frontend/wailsjs/go/main/App.d.ts | 2 +- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/addon.go b/addon.go index 8162819..87a99bd 100644 --- a/addon.go +++ b/addon.go @@ -74,14 +74,13 @@ func UpdateFile(localPath string, data []byte) (err error) { return nil } -func (a *Addon) Update(body []byte) (err error) { +func (a *Addon) Update(body []byte) (hasBreakingChanges bool, err error) { log.Printf("Updating %s", a.Name) zipReader, err := zip.NewReader(bytes.NewReader(body), int64(len(body))) if err != nil { - return fmt.Errorf("error creating zip reader: %w", err) + return false, fmt.Errorf("error creating zip reader: %w", err) } log.Printf("Found %d files", len(zipReader.File)) - hasBreakingChanges := false for _, file := range zipReader.File { if file.FileInfo().IsDir() { continue @@ -89,11 +88,11 @@ func (a *Addon) Update(body []byte) (err error) { log.Printf("Found file %s", file.Name) fileHandle, err := file.Open() if err != nil { - return fmt.Errorf("error opening file: %w", err) + return false, fmt.Errorf("error opening file: %w", err) } fileData, err := io.ReadAll(fileHandle) if err != nil { - return fmt.Errorf("error reading file: %w", err) + return false, fmt.Errorf("error reading file: %w", err) } if strings.HasSuffix(file.Name, ".toc") { @@ -102,7 +101,7 @@ func (a *Addon) Update(body []byte) (err error) { if os.IsNotExist(err) { localToc = []byte{} } else { - return fmt.Errorf("error reading local toc: %w", err) + return false, fmt.Errorf("error reading local toc: %w", err) } } if a.HasBreakingChanges(string(localToc), string(fileData)) { @@ -115,13 +114,13 @@ func (a *Addon) Update(body []byte) (err error) { log.Printf("Updating file %s", localPath) err = UpdateFile(localPath, fileData) if err != nil { - return fmt.Errorf("error updating file: %w", err) + return false, fmt.Errorf("error updating file: %w", err) } } if hasBreakingChanges { Warning.Printf("Has breaking changes") } - return nil + return hasBreakingChanges, nil } func (a *Addon) GetLocalTocPath() string { return filepath.Join(settings.GamePath, "Interface", "AddOns", a.Name, a.Name+".toc") diff --git a/addonService.go b/addonService.go index 3cfc811..c95c40e 100644 --- a/addonService.go +++ b/addonService.go @@ -36,18 +36,18 @@ func (a *AddonService) GetLocalVersion(name string) (string, error) { return addon.GetLocalVersion() } -func (a *AddonService) UpdateAddon(name string) (addon Addon, err error) { - addon, err = a.GetAddon(name) +func (a *AddonService) UpdateAddon(name string) (hasBreakingChanges bool, err error) { + addon, err := a.GetAddon(name) if err != nil { - return + return false, err } release, err := addon.GetRemoteRelease() if err != nil { return } - err = addon.Update(release) + hasBreakingChanges, err = addon.Update(release) if err != nil { return } - return addon, nil + return hasBreakingChanges, nil } diff --git a/app.go b/app.go index 311d6fc..fab3445 100644 --- a/app.go +++ b/app.go @@ -76,9 +76,9 @@ func (a *App) GetAddonLocalVersion(name string) (res StringResponse) { return res } -func (a *App) UpdateAddon(name string) (res AddonResponse) { - addon, err := addonService.UpdateAddon(name) - res.Data = addon +func (a *App) UpdateAddon(name string) (res BoolResponse) { + hasBreakingChanges, err := addonService.UpdateAddon(name) + res.Data = hasBreakingChanges if err != nil { res.Error = err.Error() } diff --git a/frontend/src/lib/components/AddonCard.svelte b/frontend/src/lib/components/AddonCard.svelte index 81f2e58..5db58f8 100644 --- a/frontend/src/lib/components/AddonCard.svelte +++ b/frontend/src/lib/components/AddonCard.svelte @@ -5,6 +5,8 @@ let localVersion = "0.0.0"; let remoteVersion = "0.0.0"; let upToDate = true; + let breakingChanges = false; + let wasUpdated = false; GetAddonLocalVersion(addon.name).then((res) => { localVersion = res.data; }); @@ -17,6 +19,9 @@ const res = await UpdateAddon(addon.name); if (res.error) { console.error(res.error); + } else { + breakingChanges = res.data; + wasUpdated = true; } GetAddonLocalVersion(addon.name).then((res) => { localVersion = res.data; diff --git a/frontend/src/lib/router/routes/Home.svelte b/frontend/src/lib/router/routes/Home.svelte index 66ea785..28cbe30 100644 --- a/frontend/src/lib/router/routes/Home.svelte +++ b/frontend/src/lib/router/routes/Home.svelte @@ -12,7 +12,6 @@ } }); - let gamePath = ""; let gamePathValid = false; IsGamePathValid().then((res) => { if (res.error) { diff --git a/frontend/wailsjs/go/main/App.d.ts b/frontend/wailsjs/go/main/App.d.ts index 78e4f20..a9270b5 100644 --- a/frontend/wailsjs/go/main/App.d.ts +++ b/frontend/wailsjs/go/main/App.d.ts @@ -20,4 +20,4 @@ export function SelectDirectory():Promise; export function SetGamePath(arg1:string):Promise; -export function UpdateAddon(arg1:string):Promise; +export function UpdateAddon(arg1:string):Promise;