V10 property update issue
mlctrez opened this issue · comments
With the recent V10 code base, I was testing the app update functionality and came across an issue that I can't resolve:
// the go-app version I used
github.com/maxence-charriere/go-app/v10 v10.0.0-20240312064243-fd8d583dcdfa
I was trying to develop a version component that allows click to check for new version and then click to reload the application if a new version is available. Here's the component ( it contains some additional logging of the pointer to *Version
):
package compo
import (
"fmt"
"github.com/maxence-charriere/go-app/v10/pkg/app"
)
var _ app.AppUpdater = (*Version)(nil)
var _ app.Mounter = (*Version)(nil)
type Version struct {
app.Compo
UpdateAvailable string
}
func (v *Version) OnMount(ctx app.Context) {
app.Log("OnMount", fmt.Sprintf("%v %q", &v, v.UpdateAvailable))
}
func (v *Version) OnAppUpdate(ctx app.Context) {
app.Log("OnAppUpdate 1", fmt.Sprintf("%v %q", &v, v.UpdateAvailable))
if ctx.AppUpdateAvailable() {
v.UpdateAvailable = "yes"
app.Log("OnAppUpdate 2", fmt.Sprintf("%v %q", &v, v.UpdateAvailable))
}
}
func (v *Version) Render() app.UI {
app.Log("Render", fmt.Sprintf("%v %q", &v, v.UpdateAvailable))
if v.UpdateAvailable == "yes" {
return app.Div().Class("version").Text("Update Available").
OnClick(func(ctx app.Context, e app.Event) {
ctx.Reload()
})
}
return app.Div().Class("version").Text(app.Getenv("GOAPP_VERSION")).
OnClick(func(ctx app.Context, e app.Event) {
ctx.Dispatch(func(context app.Context) {
context.TryUpdateApp()
})
})
}
The root object and route are as follows:
func (r *Root) Render() app.UI {
return app.Div().Body(&Version{})
}
app.Route("/", func() app.Composer { return &Root{} })
The log indicates the pointer to *Version
changes in between the OnAppUpdate() and Render() calls so the if
condition in the Render()
does not find the proper value for v.AppUpdateAvailable
The console log:
At 19:49:39 is when the version component is first clicked.
The full code is located here:
https://github.com/mlctrez/mlctrez.github.io/tree/v0.0.7/goapp/compo
Try "c.updateAvailable" instead of "c.UpdateAvailable"
Don’t export the UpdateAvailable field.
My bad. I could have sworn I knew that rule and already tried making it lowercase to see if that worked. Closing.