diff --git a/db/main.go b/db/main.go index 33fe73a0..e5117d90 100644 --- a/db/main.go +++ b/db/main.go @@ -99,6 +99,7 @@ func registerMigrations(app *pocketbase.PocketBase) { func setupEventHandlers(app *pocketbase.PocketBase, client meilisearch.ServiceManager) { app.OnRecordAfterCreateSuccess("users").BindFunc(createUserHandler(client)) + app.OnRecordAfterUpdateSuccess("users").BindFunc(updateUserHandler(client)) app.OnRecordAfterCreateSuccess("trails").BindFunc(createTrailHandler(client)) app.OnRecordAfterUpdateSuccess("trails").BindFunc(updateTrailHandler(client)) @@ -224,6 +225,47 @@ func createUserHandler(client meilisearch.ServiceManager) func(e *core.RecordEve } } +func updateUserHandler(client meilisearch.ServiceManager) func(e *core.RecordEvent) error { + return func(e *core.RecordEvent) error { + actor, err := e.App.FindFirstRecordByData("activitypub_actors", "user", e.Record.Id) + if err != nil { + return e.Next() + } + + icon := "" + origin := os.Getenv("ORIGIN") + if origin != "" && e.Record.GetString("avatar") != "" { + icon = fmt.Sprintf("%s/api/v1/files/_pb_users_auth_/%s/%s", origin, e.Record.Id, e.Record.GetString("avatar")) + } + actor.Set("icon", icon) + if err := e.App.Save(actor); err != nil { + return err + } + + trails, err := e.App.FindRecordsByFilter("trails", "author={:author}", "", -1, 0, dbx.Params{"author": actor.Id}) + if err != nil { + return err + } + if len(trails) > 0 { + if err := util.IndexTrails(e.App, trails, client); err != nil { + return err + } + } + + lists, err := e.App.FindRecordsByFilter("lists", "author={:author}", "", -1, 0, dbx.Params{"author": actor.Id}) + if err != nil { + return err + } + if len(lists) > 0 { + if err := util.IndexLists(e.App, lists, client); err != nil { + return err + } + } + + return e.Next() + } +} + func createDefaultUserSettings(app core.App, userId string) error { collection, err := app.FindCollectionByNameOrId("settings") if err != nil { diff --git a/web/src/lib/components/nav_bar.svelte b/web/src/lib/components/nav_bar.svelte index a428587f..137402d2 100644 --- a/web/src/lib/components/nav_bar.svelte +++ b/web/src/lib/components/nav_bar.svelte @@ -20,6 +20,7 @@ } let { user }: Props = $props(); + const navUser = $derived($currentUser ?? user); let navBarItems = [ { text: "Home", value: "/" }, @@ -139,7 +140,7 @@