From 0b97866be3a15f64170673af9813b39cbc585db5 Mon Sep 17 00:00:00 2001 From: FChannel <> Date: Sat, 4 Jun 2022 15:12:24 -0700 Subject: archive page works --- route/routes/actor.go | 67 ++++++++++++++++++++++++--------------------------- route/structs.go | 1 + route/util.go | 10 ++++++++ 3 files changed, 42 insertions(+), 36 deletions(-) (limited to 'route') diff --git a/route/routes/actor.go b/route/routes/actor.go index fc9795a..a7711d3 100644 --- a/route/routes/actor.go +++ b/route/routes/actor.go @@ -213,18 +213,6 @@ func ActorFollowers(ctx *fiber.Ctx) error { return actor.GetFollowersResp(ctx) } -func ActorReported(c *fiber.Ctx) error { - // STUB - - return c.SendString("actor reported") -} - -func ActorArchive(c *fiber.Ctx) error { - // STUB - - return c.SendString("actor archive") -} - func ActorPost(ctx *fiber.Ctx) error { header, _ := ctx.FormFile("file") @@ -450,10 +438,6 @@ func ActorPostGet(ctx *fiber.Ctx) error { } } - if len(data.Posts) > 0 { - data.PostId = util.ShortURL(data.Board.To, data.Posts[0].Id) - } - data.Board.Name = actor.Name data.Board.PrefName = actor.PreferredUsername data.Board.To = actor.Outbox @@ -463,6 +447,11 @@ func ActorPostGet(ctx *fiber.Ctx) error { data.Board.Domain = config.Domain data.Board.Restricted = actor.Restricted data.ReturnTo = "feed" + data.PostType = "reply" + + if len(data.Posts) > 0 { + data.PostId = util.ShortURL(data.Board.To, data.Posts[0].Id) + } capt, err := util.GetRandomCaptcha() if err != nil { @@ -496,28 +485,19 @@ func ActorPostGet(ctx *fiber.Ctx) error { }, "layouts/main") } -func ActorCatalogGet(ctx *fiber.Ctx) error { +func ActorCatalog(ctx *fiber.Ctx) error { actorName := ctx.Params("actor") actor, err := activitypub.GetActorByNameFromDB(actorName) + if err != nil { - return util.MakeError(err, "CatalogGet") + return util.MakeError(err, "ActorCatalog") } collection, err := actor.GetCatalogCollection() - // TODO: implement this in template functions - // "showArchive": func() bool { - // col, err := db.GetActorCollectionDBTypeLimit(collection.Actor.Id, "Archive", 1) - // if err != nil { - // // TODO: figure out what to do here - // panic(err) - // } - // - // if len(col.OrderedItems) > 0 { - // return true - // } - // return false - //}, + if err != nil { + return util.MakeError(err, "ActorCatalog") + } var data route.PageData data.Board.Name = actor.Name @@ -531,6 +511,7 @@ func ActorCatalogGet(ctx *fiber.Ctx) error { data.Board.Restricted = actor.Restricted data.Key = config.Key data.ReturnTo = "catalog" + data.PostType = "new" data.Board.Post.Actor = actor.Id @@ -612,6 +593,7 @@ func ActorOutboxGet(ctx *fiber.Ctx) error { data.Board.Restricted = actor.Restricted data.CurrentPage = page data.ReturnTo = "feed" + data.PostType = "new" data.Board.Post.Actor = actor.Id @@ -644,9 +626,19 @@ func ActorOutboxGet(ctx *fiber.Ctx) error { }, "layouts/main") } -func ActorArchiveGet(ctx *fiber.Ctx) error { - collection := ctx.Locals("collection").(activitypub.Collection) - actor := collection.Actor +func ActorArchive(ctx *fiber.Ctx) error { + actorName := ctx.Params("actor") + actor, err := activitypub.GetActorByNameFromDB(actorName) + + if err != nil { + return util.MakeError(err, "ActorArchive") + } + + collection, err := actor.GetCollectionType("Archive") + + if err != nil { + return util.MakeError(err, "ActorArchive") + } var returnData route.PageData returnData.Board.Name = actor.Name @@ -663,12 +655,11 @@ func ActorArchiveGet(ctx *fiber.Ctx) error { returnData.Board.Post.Actor = actor.Id - var err error returnData.Instance, err = activitypub.GetActorFromDB(config.Domain) capt, err := util.GetRandomCaptcha() if err != nil { - return util.MakeError(err, "ArchiveGet") + return util.MakeError(err, "ActorArchive") } returnData.Board.Captcha = config.Domain + "/" + capt returnData.Board.CaptchaCode = post.GetCaptchaCode(returnData.Board.Captcha) @@ -679,6 +670,10 @@ func ActorArchiveGet(ctx *fiber.Ctx) error { returnData.Posts = collection.OrderedItems + returnData.Meta.Description = returnData.Board.Summary + returnData.Meta.Url = returnData.Board.Actor.Id + returnData.Meta.Title = returnData.Title + returnData.Themes = &config.Themes returnData.ThemeCookie = route.GetThemeCookie(ctx) diff --git a/route/structs.go b/route/structs.go index fbfb327..73371ae 100644 --- a/route/structs.go +++ b/route/structs.go @@ -24,6 +24,7 @@ type PageData struct { NewsItems []db.NewsItem BoardRemainer []int Meta Meta + PostType string Themes *[]string ThemeCookie string diff --git a/route/util.go b/route/util.go index 9a2de75..defa60e 100644 --- a/route/util.go +++ b/route/util.go @@ -386,4 +386,14 @@ func TemplateFunctions(engine *html.Engine) { return board.Name + "/" + util.ShortURL(board.Outbox, OP) + "#" + util.ShortURL(board.Outbox, link) }) + + engine.AddFunc("showArchive", func(actor activitypub.Actor) bool { + col, err := actor.GetCollectionTypeLimit("Archive", 1) + + if err != nil || len(col.OrderedItems) == 0 { + return false + } + + return true + }) } -- cgit v1.2.3