From b6bf0f1873b75d4e7698817926709d8b623ab927 Mon Sep 17 00:00:00 2001 From: NeilClack Date: Wed, 15 Apr 2026 11:01:28 -0500 Subject: [PATCH] Sync proclamations when entering proclamation list --- internal/application/application.go | 4 ++-- internal/page/proclamationOptions.go | 5 ++++- internal/sync/sync.go | 13 ++++++++----- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/internal/application/application.go b/internal/application/application.go index a725d94..e77e332 100644 --- a/internal/application/application.go +++ b/internal/application/application.go @@ -154,8 +154,8 @@ func Run() { }) // Sync the proclamations from the API to the Database - sync.SyncProclamations(apiURL, DB) - sync.SyncCategories(apiURL, DB) + sync.SyncProclamations(DB) + sync.SyncCategories(DB) app.runEventLoop() } diff --git a/internal/page/proclamationOptions.go b/internal/page/proclamationOptions.go index 6719c0b..e57f6b7 100644 --- a/internal/page/proclamationOptions.go +++ b/internal/page/proclamationOptions.go @@ -15,6 +15,7 @@ import ( "rhemawavetech.com/rhemawave/internal/fontManager" "rhemawavetech.com/rhemawave/internal/logger" "rhemawavetech.com/rhemawave/internal/shaderManager" + "rhemawavetech.com/rhemawave/internal/sync" ) // Scrollbar Visuals @@ -78,10 +79,12 @@ func (p *ProclamationOptions) Init(ctx *PageCtx) error { p.allItems = []*FlatItem{} p.scrollOffset = 0 p.isSearchActive = false - p.scrollTrackWidth = 30 p.scrollTrackX = p.ScreenWidth - p.scrollTrackWidth + // Syncronize proclamations first + sync.SyncProclamations(ctx.DbPtr) + fm := fontManager.Get() font, _ := fm.GetFont("Roboto-Regular") p.font = font diff --git a/internal/sync/sync.go b/internal/sync/sync.go index d9b5fd0..ce375cf 100644 --- a/internal/sync/sync.go +++ b/internal/sync/sync.go @@ -1,7 +1,6 @@ package sync import ( - "fmt" "regexp" "gorm.io/gorm" @@ -14,8 +13,9 @@ var htmlRegex = regexp.MustCompile(`<[^>]*>`) // SyncProclamations fetches data from the API, cleans it, and updates the local DB. // It returns the slice of proclamations so the UI can update immediately. -func SyncProclamations(apiURL string, database *gorm.DB) ([]db.Proclamation, error) { - fullURL := fmt.Sprintf("%s/proclamations", apiURL) +func SyncProclamations(database *gorm.DB) ([]db.Proclamation, error) { + fullURL := "https://portal.rhemawavetech.com/api/v1/proclamations" + logger.Debug("Syncronizing proclamations. URL: %s", fullURL) // 1. Fetch from API proclamations, err := netreq.GetJSON[db.Proclamation](fullURL) @@ -25,6 +25,7 @@ func SyncProclamations(apiURL string, database *gorm.DB) ([]db.Proclamation, err logger.Error("Proclamation sync failed, skipping update: %v", err) return nil, err } + logger.Debug("Request Granted") // 2. Data Transformation (Cleaning) for i := range proclamations { @@ -40,6 +41,8 @@ func SyncProclamations(apiURL string, database *gorm.DB) ([]db.Proclamation, err return nil }) + logger.Debug("Proclamations stored to database") + if err != nil { logger.Error("Failed to save synced proclamations: %v", err) return nil, err @@ -49,8 +52,8 @@ func SyncProclamations(apiURL string, database *gorm.DB) ([]db.Proclamation, err return proclamations, nil } -func SyncCategories(apiURL string, database *gorm.DB) ([]db.ProclamationCategory, error) { - fullURL := fmt.Sprintf("%s/categories", apiURL) +func SyncCategories(database *gorm.DB) ([]db.ProclamationCategory, error) { + fullURL := "https://portal.rhemawavetech.com/api/v1/categories" categories, err := netreq.GetJSON[db.ProclamationCategory](fullURL) if err != nil { logger.Error("Category sync failed, skipping update: %v", err)