app

package
v0.0.0-...-0c3ef04 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

templ: version: v0.3.977

templ: version: v0.3.977

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FSStatic

func FSStatic() (http.FileSystem, error)

FSStatic returns an http.FileSystem from the embedded filesystem. Use this in production mode.

func FSStaticDev

func FSStaticDev() http.FileSystem

FSStaticDev returns an http.FileSystem that reads from the filesystem. Use this in development mode for live reloading without server recompilation.

Types

type App

type App struct {
	Metrics
	// contains filtered or unexported fields
}

func NewApp

func NewApp(
	sessions SessionManager,
	repo *domain.Repository,
) *App

func (*App) Head

func (*App) Head(r *http.Request) (body templ.Component, err error)

Page render funcs

func (*App) POSTCause500

func (*App) POSTCause500(r *http.Request) error

POSTCause500 is /cause-500-internal-error/{$}

func (*App) POSTSignOut

func (*App) POSTSignOut(r *http.Request, session Session) (
	closeSession bool,
	redirect string,
	err error,
)

POSTSignOut is /sign-out/{$}

func (*App) Recover500

func (*App) Recover500(
	err error,
	sse *datastar.ServerSentEventGenerator,
) error

type Base

type Base struct{ App *App }

Base is the main page wrapper

func (Base) OnMessagingRead

func (b Base) OnMessagingRead(
	event EventMessagingRead,
	sse *datastar.ServerSentEventGenerator,
	session Session,
) error

func (Base) OnMessagingSent

func (b Base) OnMessagingSent(
	event EventMessagingSent,
	sse *datastar.ServerSentEventGenerator,
	session Session,
) error

type Chat

type Chat struct {
	ID                        string
	Title                     string
	PostID                    string
	PostSlug                  string
	UnreadMessages            int
	LastMessageSenderUserName string
	LastMessageText           string
}

type EventMessagingRead

type EventMessagingRead struct {
	TargetUserIDs []string `json:"-"`

	ChatID    string `json:"chat-id"`
	UserID    string `json:"user-id"`
	MessageID string `json:"message-id"`
}

EventMessagingRead is "messaging.read"

type EventMessagingSent

type EventMessagingSent struct {
	TargetUserIDs []string `json:"-"`

	ChatID string `json:"chat-id"`
	UserID string `json:"user-id"`
}

EventMessagingSent is "messaging.sent"

type EventMessagingWriting

type EventMessagingWriting struct {
	TargetUserIDs []string `json:"-"`

	ChatID string `json:"chat-id"`
	UserID string `json:"user-id"`
}

EventMessagingWriting is "messaging.writing"

type EventMessagingWritingStopped

type EventMessagingWritingStopped struct {
	TargetUserIDs []string `json:"-"`

	ChatID string `json:"chat-id"`
	UserID string `json:"user-id"`
}

EventMessagingWritingStopped is "messaging.writing-stopped"

type EventPostArchived

type EventPostArchived struct {
	PostID string `json:"post-id"`
}

EventPostArchived is "posts.archived"

type EventSessionClosed

type EventSessionClosed struct {
	TargetUserIDs []string `json:"-"`

	Token string `json:"token"`
}

EventSessionClosed is "sessions.closed"

type Metrics

type Metrics struct {
	LoginSubmissions *prometheus.CounterVec
	ChatMessagesSent *prometheus.CounterVec
}

type PageError404

type PageError404 struct {
	App *App
	Base
}

PageError404 is /not-found

func (PageError404) GET

func (p PageError404) GET(
	r *http.Request,
	session Session,
) (body templ.Component, err error)

type PageError500

type PageError500 struct{ App *App }

PageError500 is /whoops

func (PageError500) GET

func (PageError500) GET(r *http.Request) (
	body templ.Component,
	disableRefreshAfterHidden bool,
	err error,
)

type PageIndex

type PageIndex struct {
	App *App
	Base
}

PageIndex is /

func (PageIndex) GET

func (p PageIndex) GET(
	r *http.Request,
	session Session,
) (body templ.Component, err error)

type PageLogin

type PageLogin struct{ App *App }

PageLogin is /login

func (PageLogin) GET

func (PageLogin) GET(r *http.Request, session Session) (
	body templ.Component,
	redirect string,
	disableRefreshAfterHidden bool,
	err error,
)

func (PageLogin) POSTSubmit

func (p PageLogin) POSTSubmit(
	r *http.Request,
	session Session,
	signals struct {
		EmailOrUsername string `json:"emailorusername"`
		Password        string `json:"password"`
	},
) (
	body templ.Component,
	redirect string,
	redirectStatus int,
	newSession Session,
	err error,
)

POSTSubmit is /login/submit

type PageMessages

type PageMessages struct {
	App *App
	Base
}

PageMessages is /messages

func (PageMessages) GET

func (p PageMessages) GET(
	r *http.Request,
	session Session,
	query struct {
		Chat string `query:"chat" reflectsignal:"chatselected"`
	},
) (
	body templ.Component,
	redirect string,
	enableBackgroundStreaming bool,
	err error,
)

func (PageMessages) OnMessagingRead

func (p PageMessages) OnMessagingRead(
	event EventMessagingRead,
	sse *datastar.ServerSentEventGenerator,
	session Session,
	signals struct {
		Chat string `json:"chatselected"`
	},
) error

func (PageMessages) OnMessagingSent

func (p PageMessages) OnMessagingSent(
	event EventMessagingSent,
	sse *datastar.ServerSentEventGenerator,
	session Session,
	signals struct {
		Chat string `json:"chatselected"`
	},
) error

func (PageMessages) OnMessagingWriting

func (PageMessages) OnMessagingWriting(
	event EventMessagingWriting,
	sse *datastar.ServerSentEventGenerator,
	session Session,
) error

func (PageMessages) OnMessagingWritingStopped

func (PageMessages) OnMessagingWritingStopped(
	event EventMessagingWritingStopped,
	sse *datastar.ServerSentEventGenerator,
	session Session,
) error

func (PageMessages) POSTRead

func (p PageMessages) POSTRead(
	r *http.Request,
	session Session,
	query struct {
		MessageID string `query:"msgid"`
	},
	signals struct {
		ChatSelected string `json:"chatselected"`
	},
	dispatch func(EventMessagingRead) error,
) error

POSTRead is /messages/read/{$}

func (PageMessages) POSTSendMessage

func (p PageMessages) POSTSendMessage(
	r *http.Request,
	session Session,
	signals struct {
		ChatSelected string `json:"chatselected"`
		MessageText  string `json:"messagetext"`
	},
	dispatch func(
		EventMessagingWritingStopped,
		EventMessagingSent,
	) error,
) error

POSTSendMessage is /messages/sendmessage/{$}

func (PageMessages) POSTWriting

func (p PageMessages) POSTWriting(
	r *http.Request,
	session Session,
	signals struct {
		ChatSelected string `json:"chatselected"`
	},
	dispatch func(
		EventMessagingWriting,
	) error,
) error

POSTWriting is /messages/writing/{$}

func (PageMessages) POSTWritingStopped

func (p PageMessages) POSTWritingStopped(
	r *http.Request,
	session Session,
	signals struct {
		ChatSelected string `json:"chatselected"`
	},
	dispatch func(
		EventMessagingWritingStopped,
	) error,
) error

POSTWritingStopped is /messages/writing-stopped/{$}

type PageMyPosts

type PageMyPosts struct {
	App *App
	Base
}

PageMyPosts is /my-posts

func (PageMyPosts) GET

func (p PageMyPosts) GET(
	r *http.Request,
	session Session,
) (
	body, head templ.Component,
	redirect string,
	err error,
)

type PagePost

type PagePost struct {
	App *App
	Base
}

PagePost is /post/{slug}

func (PagePost) GET

func (p PagePost) GET(
	r *http.Request,
	session Session,
	path struct {
		Slug string `path:"slug"`
	},
) (
	body, head templ.Component,
	redirect string,
	err error,
)

func (PagePost) OnPostArchived

func (p PagePost) OnPostArchived(
	event EventPostArchived,
	sse *datastar.ServerSentEventGenerator,
	session Session,
) error

func (PagePost) POSTSendMessage

func (p PagePost) POSTSendMessage(
	r *http.Request,
	sse *datastar.ServerSentEventGenerator,
	session Session,
	path struct {
		Slug string `path:"slug"`
	},
	signals struct {
		MessageText string `json:"messagetext"`
	},
	dispatch func(EventMessagingSent) error,
) error

POSTSendMessage is /post/{slug}/send-message/{$}

type PageSearch

type PageSearch struct {
	App *App
	Base
}

PageSearch is /search

func (PageSearch) GET

func (p PageSearch) GET(
	r *http.Request,
	session Session,
	query SearchParams,
) (body templ.Component, err error)

func (PageSearch) POSTParamChange

func (p PageSearch) POSTParamChange(
	r *http.Request,
	sse *datastar.ServerSentEventGenerator,
	session Session,
	signals SearchParams,
) error

POSTParamChange is /search/paramchange/{$}

type PageSettings

type PageSettings struct {
	App *App
	Base
}

PageSettings is /settings

func (PageSettings) GET

func (p PageSettings) GET(
	r *http.Request,
	session Session,
) (body templ.Component, redirect string, err error)

func (PageSettings) OnSessionClosed

func (p PageSettings) OnSessionClosed(
	event EventSessionClosed,
	sse *datastar.ServerSentEventGenerator,
	sessionToken string,
	session Session,
) error

func (PageSettings) POSTCloseAllSessions

func (p PageSettings) POSTCloseAllSessions(
	r *http.Request,
	session Session,
	dispatch func(EventSessionClosed) error,
) (redirect string, err error)

POSTCloseAllSessions is /settings/close-all-sessions/{$}

func (PageSettings) POSTCloseSession

func (p PageSettings) POSTCloseSession(
	r *http.Request,
	sessionToken string,
	session Session,
	path struct {
		Token string `path:"token"`
	},
	dispatch func(EventSessionClosed) error,
) (
	closeSession bool,
	redirect string,
	err error,
)

POSTCloseSession is /settings/close-session/{token}/{$}

func (PageSettings) POSTSave

func (p PageSettings) POSTSave(
	r *http.Request,
	sse *datastar.ServerSentEventGenerator,
	session Session,
	signals struct {
		Username string `json:"username"`
	},
) (redirect string, err error)

POSTSave is /settings/save/{$}

type PageUser

type PageUser struct {
	App *App
	Base
}

PageUser is /user/{name}/{$}

func (PageUser) GET

func (p PageUser) GET(
	r *http.Request,
	session Session,
	path struct {
		Name string `path:"name"`
	},
) (
	body, head templ.Component,
	redirect string,
	err error,
)

func (PageUser) OnPostArchived

func (p PageUser) OnPostArchived(
	event EventPostArchived,
	sse *datastar.ServerSentEventGenerator,
	session Session,
) error

type SearchParams

type SearchParams struct {
	Term     string `json:"term" query:"t" reflectsignal:"term"`
	Category string `json:"category" query:"c" reflectsignal:"category"`
	PriceMin int64  `json:"pmin,omitempty" query:"pmin" reflectsignal:"pmin"`
	PriceMax int64  `json:"pmax,omitempty" query:"pmax" reflectsignal:"pmax"`
	Location string `json:"location" query:"l" reflectsignal:"location"`
}

type Session

type Session struct {
	UserID string

	IssuedAt time.Time
}

type SessionManager

type SessionManager interface {
	Session(ctx context.Context, token string) (Session, error)
	CloseSession(ctx context.Context, token string) error
	CloseAllUserSessions(
		ctx context.Context, buffer []string, userID string,
	) ([]string, error)
	UserSessions(
		ctx context.Context, userID string,
	) iter.Seq2[string, Session]
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL