diff --git a/database/community.go b/database/community.go index a277d2b..f0bac4c 100644 --- a/database/community.go +++ b/database/community.go @@ -168,18 +168,6 @@ func (c *Community) Host(ctx context.Context) (*User, error) { return AmGetUser(ctx, *c.HostUid) } -// HostQ returns the reference to the community's host, quietly. -func (c *Community) HostQ(ctx context.Context) *User { - if c.HostUid == nil { - return nil - } - u, err := AmGetUser(ctx, *c.HostUid) - if err != nil { - return nil - } - return u -} - // LanguageTag returns the tag for the community's language. func (c *Community) LanguageTag() (*language.Tag, error) { if c.Language == nil { diff --git a/database/user.go b/database/user.go index d6efe74..d0644a4 100644 --- a/database/user.go +++ b/database/user.go @@ -190,15 +190,6 @@ func (u *User) ContactInfo(ctx context.Context) (*ContactInfo, error) { return AmGetContactInfo(ctx, u.ContactID) } -// ContactInfo returns the contact info structure for the user, quietly. -func (u *User) ContactInfoQ(ctx context.Context) *ContactInfo { - if u.ContactID < 0 { - return nil - } - ci, _ := AmGetContactInfo(ctx, u.ContactID) - return ci -} - // SetContactID sets the contact ID of a user. func (u *User) SetContactID(ctx context.Context, cid int32) error { u.Mutex.Lock() diff --git a/ui/templates.go b/ui/templates.go index 01b1899..108cb76 100644 --- a/ui/templates.go +++ b/ui/templates.go @@ -1,6 +1,6 @@ /* * Amsterdam Web Communities System - * Copyright (c) 2025 Erbosoft Metaverse Design Solutions, All Rights Reserved + * Copyright (c) 2025-2026 Erbosoft Metaverse Design Solutions, All Rights Reserved * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this @@ -122,6 +122,28 @@ func extractCommunityLogo(a jet.Arguments) reflect.Value { return reflect.ValueOf(rc) } +// communityHost retrieves the community host for a community. +func communityHost(a jet.Arguments) reflect.Value { + comm := a.Get(0).Convert(reflect.TypeFor[*database.Community]()).Interface().(*database.Community) + ctxt := a.Get(1).Convert(reflect.TypeFor[AmContext]()).Interface().(AmContext) + u, err := comm.Host(ctxt.Ctx()) + if err != nil { + u, _ = database.AmGetAnonUser(ctxt.Ctx()) + } + return reflect.ValueOf(u) +} + +// userContactInfo retrieves the contact info for a user. +func userContactInfo(a jet.Arguments) reflect.Value { + user := a.Get(0).Convert(reflect.TypeFor[*database.User]()).Interface().(*database.User) + ctxt := a.Get(1).Convert(reflect.TypeFor[AmContext]()).Interface().(AmContext) + ci, err := user.ContactInfo(ctxt.Ctx()) + if err != nil { + ci = database.AmNewUserContactInfo(0) + } + return reflect.ValueOf(ci) +} + // displayDateTime formats a date and time value. func displayDateTime(a jet.Arguments) reflect.Value { timeval := a.Get(0).Convert(reflect.TypeFor[time.Time]()).Interface().(time.Time) @@ -286,6 +308,8 @@ func SetupTemplates() { views.AddGlobalFunc("MakeIntRange", makeIntRange) views.AddGlobalFunc("MakeYearRange", makeYearRange) views.AddGlobalFunc("ExtractCommunityLogo", extractCommunityLogo) + views.AddGlobalFunc("CommunityHost", communityHost) + views.AddGlobalFunc("UserContactInfo", userContactInfo) views.AddGlobalFunc("DisplayActivity", displayActivity) views.AddGlobalFunc("DisplayDateTime", displayDateTime) views.AddGlobalFunc("DisplayMemberCount", displayMemberCount) diff --git a/ui/views/find.jet b/ui/views/find.jet index 3959a62..a6e8000 100644 --- a/ui/views/find.jet +++ b/ui/views/find.jet @@ -1,6 +1,6 @@ {* * Amsterdam Web Communities System - * Copyright (c) 2025 Erbosoft Metaverse Design Solutions, All Rights Reserved + * Copyright (c) 2025-2026 Erbosoft Metaverse Design Solutions, All Rights Reserved * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this @@ -102,7 +102,7 @@ class="px-3 py-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"> - + - + @@ -217,7 +217,7 @@