web

package
v0.0.0-...-e76a490 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2025 License: Apache-2.0 Imports: 27 Imported by: 2

Documentation

Index

Constants

View Source
const GetPostsLimitMax = 100

Variables

This section is empty.

Functions

func ApiDeletePost

func ApiDeletePost(c *gin.Context, db *sqlx.DB, dbUser *core.User, postID string) mo.Result[any]

func ApiEditPost

func ApiEditPost(c *gin.Context, db *sqlx.DB, sender sender.Sender, dbUser *core.User, mediaReplacer types.Replacer[string], postID string) mo.Result[*ApiNewPostResponse]

func ApiGetPosts

func ApiGetPosts(c *gin.Context, db *sqlx.DB, userID string) mo.Result[*ApiGetPostsResponse]

func ApiNewPost

func ApiNewPost(c *gin.Context, db *sqlx.DB, sender sender.Sender, dbUser *core.User, mediaReplacer types.Replacer[string]) mo.Result[*ApiNewPostResponse]

func ApiUploadImage

func ApiUploadImage(c *gin.Context, db *sqlx.DB, dbUser *core.User, mediaStorage server.MediaStorage) mo.Result[*ApiUploadImageResponse]

func Controls

func Controls(ctx *gin.Context, db boil.ContextExecutor, userData *auth.UserData) mo.Result[*ControlsPage]

func CreateConnection

func CreateConnection(ctx context.Context, db boil.ContextExecutor, user1ID string, user2ID string) error

CreateConnection assumes it's run in transaction Since connections form an undirected graph, we insert user ids in both combinations to simplify queries with a tradeoff that we need to monitor data for consistency and use twice the size needed

func EditPost

func EditPost(c *gin.Context, db boil.ContextExecutor, userData *auth.UserData, postID string) mo.Result[*EditPostPage]

func Explore

func Explore(ctx *gin.Context, db boil.ContextExecutor, userData *auth.UserData) mo.Result[*FeedPage]

func Feed

func Feed(ctx *gin.Context, db boil.ContextExecutor, userData *auth.UserData, onlyPosts bool) mo.Result[*FeedPage]

func Settings

func Settings(c *gin.Context, db boil.ContextExecutor, userData *auth.UserData) mo.Result[*SettingsPage]

func SharedPost

func SharedPost(c *gin.Context, db boil.ContextExecutor, userData *auth.UserData, shareID string) mo.Result[*SharedPostPage]

func SinglePost

func SinglePost(c *gin.Context, db boil.ContextExecutor, userData *auth.UserData, postID string, editPreview bool) mo.Result[*SinglePostPage]

func UserHome

func UserHome(ctx *gin.Context, db boil.ContextExecutor, userData *auth.UserData, authorUsername string) mo.Result[*UserHomePage]

func Write

func Write(c *gin.Context, db boil.ContextExecutor, userData *auth.UserData) mo.Result[*WritePage]

Types

type ApiGetPostsResponse

type ApiGetPostsResponse struct {
	Posts  []*ApiPost `json:"posts"`
	Cursor string     `json:"cursor"`
}

type ApiNewPostResponse

type ApiNewPostResponse struct {
	ID        string `json:"id"`
	PublicURL string `json:"public_url"`
}

type ApiPost

type ApiPost struct {
	ID          string              `json:"id"`
	Subject     string              `json:"subject"`
	MdBody      string              `json:"md_body"`
	Visibility  core.PostVisibility `json:"visibility"`
	IsPublished bool                `json:"is_published"`
	PublishedAt int64               `json:"published_at,omitempty"`
	UpdatedAt   int64               `json:"updated_at,omitempty"`
	PublicURL   string              `json:"public_url"`
}

type ApiUploadImageResponse

type ApiUploadImageResponse struct {
	ImageID string `json:"image_id"`
}

type BasePage

type BasePage struct {
	ProjectName string
	Name        string
	User        *auth.UserData
	StyleNonce  *string
	ScriptNonce *string
	RSSFeed     string
}

func Index

func Index(c *gin.Context, db boil.ContextExecutor, userData *auth.UserData) *BasePage

type ConnectionRequest

type ConnectionRequest struct {
	Requester  *core.User
	Request    *core.UserConnectionMediationRequest
	Mediations []*MediationResult
}

type ControlsPage

type ControlsPage struct {
	*BasePage
	DirectConnections       core.UserSlice
	SecondDegreeConnections core.UserSlice
	WhitelistedConnections  core.UserSlice
	MediationRequests       []*MediationRequest
	ConnectionRequests      []*ConnectionRequest
	Drafts                  []*Draft
}

type Draft

type Draft struct {
	PostID        string
	Subject       string
	LastUpdatedAt time.Time
}

type EditPostPage

type EditPostPage struct {
	*BasePage
	PostID        string
	Input         forms.PostFormInput
	LastUpdatedAt time.Time
	IsPublished   bool
	Prompt        *postops.PostPrompt
}

type FeedItem

type FeedItem struct {
	Post     *postops.Post
	FeedItem *feedops.RssFeedItem
	Comment  *postops.Comment
}

func (*FeedItem) AddedToFeedAt

func (i *FeedItem) AddedToFeedAt() time.Time

type FeedPage

type FeedPage struct {
	*BasePage
	DirectConnections []*core.User
	OpenPrompts       []*postops.PostPrompt
	Items             []*FeedItem
	Capabilities      FeedPageCapabilities
}

type FeedPageCapabilities

type FeedPageCapabilities struct {
	ShowPromptForm bool
}

type InvitePage

type InvitePage struct {
	*BasePage
	Invite  *core.UserInvitation
	Inviter *core.User
}

func Invite

func Invite(c *gin.Context, db boil.ContextExecutor, invite *core.UserInvitation, userData *auth.UserData) *InvitePage

type LoginPage

type LoginPage struct {
	*BasePage
	ReturnURL string
	Sign      string
}

func Login

func Login(c *gin.Context, db boil.ContextExecutor, userData *auth.UserData, returnUrl string, sign string) *LoginPage

type MediationRequest

type MediationRequest struct {
	Requester *core.User
	Target    *core.User
	Request   *core.UserConnectionMediationRequest
}

type MediationResult

type MediationResult struct {
	Mediation *core.UserConnectionMediator
	Mediator  *core.User
}

type SettingsPage

type SettingsPage struct {
	*BasePage
	AvailableInvites int64
	UsedInvites      core.UserInvitationSlice
	ActiveAPIKey     *core.UserAPIKey
	GeneralSettings  *forms.SettingsGeneralForm
	UserStyles       *forms.SettingsUserStyles
	Feeds            []*feedops.RssFeed
}

type SharedPostPage

type SharedPostPage struct {
	*BasePage
	Author      *core.User
	Post        *core.Post
	PostSubject string
}

type SinglePostPage

type SinglePostPage struct {
	*BasePage
	Post      *postops.Post
	PostShare *core.PostShare
	Comments  []*postops.Comment
}

type UserHomePage

type UserHomePage struct {
	*BasePage
	Author            *core.User
	ConnectionRadius  userops.ConnectionRadius
	ConnectionAllowed bool
	MediationRequest  *core.UserConnectionMediationRequest
	Posts             []*postops.Post
}

type WritePage

type WritePage struct {
	*BasePage
	Prompt *postops.PostPrompt
}

Jump to

Keyboard shortcuts

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