@@ -223,37 +223,27 @@ var WorkflowRunItem = app.DefineComponent("WorkflowRunItem",
223223var App = app .DefineComponent ("App" ,
224224 func (ctx context.Context , _ struct {}) any {
225225 vdom .UseSetAppTitle (ctx , "GitHub Actions Monitor" )
226-
227- workflowRuns , setWorkflowRuns , _ := vdom .UseAtom [[]WorkflowRun ](ctx , workflowRunsAtom )
228- lastError , setLastError , _ := vdom .UseAtom [string ](ctx , lastErrorAtom )
229- isLoading , setIsLoading , _ := vdom .UseAtom [bool ](ctx , isLoadingAtom )
230- lastRefreshTime , setLastRefreshTime , _ := vdom .UseAtom [time.Time ](ctx , lastRefreshTimeAtom )
231- pollInterval , _ , _ := vdom .UseAtom [int ](ctx , pollIntervalAtom )
232- repository , _ , _ := vdom .UseAtom [string ](ctx , repositoryAtom )
233- workflow , _ , _ := vdom .UseAtom [string ](ctx , workflowAtom )
234- maxWorkflowRuns , _ , _ := vdom .UseAtom [int ](ctx , maxWorkflowRunsAtom )
235-
236- _ , _ , setTickerFn := vdom .UseState [int ](ctx , 0 )
226+ _ , _ , setTickerFn := vdom .UseState (ctx , 0 )
237227
238228 vdom .UseEffect (ctx , func () func () {
239- ticker := time .NewTicker (time .Duration (pollInterval ) * time .Second )
229+ ticker := time .NewTicker (time .Duration (pollIntervalAtom . Get () ) * time .Second )
240230 done := make (chan bool )
241231
242232 fetchData := func () {
243233 currentMaxRuns := maxWorkflowRunsAtom .Get ()
244- runs , err := fetchWorkflowRuns (repository , workflow , currentMaxRuns )
234+ runs , err := fetchWorkflowRuns (repositoryAtom . Get (), workflowAtom . Get () , currentMaxRuns )
245235 if err != nil {
246236 log .Printf ("Error fetching workflow runs: %v" , err )
247- setLastError (err .Error ())
237+ lastErrorAtom . Set (err .Error ())
248238 } else {
249239 sort .Slice (runs , func (i , j int ) bool {
250240 return runs [i ].CreatedAt .After (runs [j ].CreatedAt )
251241 })
252- setWorkflowRuns (runs )
253- setLastError ("" )
242+ workflowRunsAtom . Set (runs )
243+ lastErrorAtom . Set ("" )
254244 }
255- setLastRefreshTime (time .Now ())
256- setIsLoading (false )
245+ lastRefreshTimeAtom . Set (time .Now ())
246+ isLoadingAtom . Set (false )
257247 }
258248
259249 fetchData ()
@@ -275,29 +265,38 @@ var App = app.DefineComponent("App",
275265 ticker .Stop ()
276266 close (done )
277267 }
278- }, []any {pollInterval })
268+ }, []any {pollIntervalAtom . Get () })
279269
280270 handleRefresh := func () {
281- setIsLoading (true )
271+ isLoadingAtom . Set (true )
282272 go func () {
283273 currentMaxRuns := maxWorkflowRunsAtom .Get ()
284- runs , err := fetchWorkflowRuns (repository , workflow , currentMaxRuns )
274+ runs , err := fetchWorkflowRuns (repositoryAtom . Get (), workflowAtom . Get () , currentMaxRuns )
285275 if err != nil {
286276 log .Printf ("Error fetching workflow runs: %v" , err )
287- setLastError (err .Error ())
277+ lastErrorAtom . Set (err .Error ())
288278 } else {
289279 sort .Slice (runs , func (i , j int ) bool {
290280 return runs [i ].CreatedAt .After (runs [j ].CreatedAt )
291281 })
292- setWorkflowRuns (runs )
293- setLastError ("" )
282+ workflowRunsAtom . Set (runs )
283+ lastErrorAtom . Set ("" )
294284 }
295- setLastRefreshTime (time .Now ())
296- setIsLoading (false )
285+ lastRefreshTimeAtom . Set (time .Now ())
286+ isLoadingAtom . Set (false )
297287 app .SendAsyncInitiation ()
298288 }()
299289 }
300290
291+ workflowRuns := workflowRunsAtom .Get ()
292+ lastError := lastErrorAtom .Get ()
293+ isLoading := isLoadingAtom .Get ()
294+ lastRefreshTime := lastRefreshTimeAtom .Get ()
295+ pollInterval := pollIntervalAtom .Get ()
296+ repository := repositoryAtom .Get ()
297+ workflow := workflowAtom .Get ()
298+ maxWorkflowRuns := maxWorkflowRunsAtom .Get ()
299+
301300 return vdom .H ("div" , map [string ]any {
302301 "className" : "min-h-screen bg-gray-900 text-white p-6" ,
303302 },
@@ -312,7 +311,7 @@ var App = app.DefineComponent("App",
312311 }, "GitHub Actions Monitor" ),
313312 vdom .H ("p" , map [string ]any {
314313 "className" : "text-gray-400" ,
315- }, "Monitoring " , repository , " " , workflow , " workflow" ),
314+ }, "Monitoring " , repositoryAtom . Get () , " " , workflowAtom . Get () , " workflow" ),
316315 ),
317316
318317 vdom .H ("div" , map [string ]any {
@@ -327,11 +326,11 @@ var App = app.DefineComponent("App",
327326 vdom .H ("button" , map [string ]any {
328327 "className" : vdom .Classes (
329328 "px-4 py-2 rounded-md text-sm font-medium transition-colors cursor-pointer" ,
330- vdom .IfElse (isLoading , "bg-gray-600 text-gray-400" , "bg-blue-600 hover:bg-blue-700 text-white" ),
329+ vdom .IfElse (isLoadingAtom . Get () , "bg-gray-600 text-gray-400" , "bg-blue-600 hover:bg-blue-700 text-white" ),
331330 ),
332- "onClick" : vdom .If (! isLoading , handleRefresh ),
333- "disabled" : isLoading ,
334- }, vdom .IfElse (isLoading , "Refreshing..." , "Refresh" )),
331+ "onClick" : vdom .If (! isLoadingAtom . Get () , handleRefresh ),
332+ "disabled" : isLoadingAtom . Get () ,
333+ }, vdom .IfElse (isLoadingAtom . Get () , "Refreshing..." , "Refresh" )),
335334
336335 vdom .H ("div" , map [string ]any {
337336 "className" : "flex items-center gap-2" ,
0 commit comments