From e8c7e7721ade664be0864b20a253939172b80df4 Mon Sep 17 00:00:00 2001
From: Christian Beutel <>
Date: Fri, 11 Jul 2025 17:13:30 +0200
Subject: [PATCH] fixes feed
---
db/federation/activity.go | 6 +++---
db/federation/create.go | 24 +++++++-----------------
db/federation/delete.go | 16 +++++++++-------
db/main.go | 12 +++++++++++-
db/util/feed.go | 10 ++++++++++
web/src/routes/+page.svelte | 18 +++++++++++-------
6 files changed, 51 insertions(+), 35 deletions(-)
diff --git a/db/federation/activity.go b/db/federation/activity.go
index 8874bcd4..b346dda7 100644
--- a/db/federation/activity.go
+++ b/db/federation/activity.go
@@ -143,7 +143,7 @@ func ProcessActivity(e *core.RequestEvent) error {
inbox := fmt.Sprintf("%s%s", origin, e.Request.Header.Get("X-Forwarded-Path"))
- userActor, err := e.App.FindFirstRecordByData("activitypub_actors", "inbox", inbox)
+ recipient, err := e.App.FindFirstRecordByData("activitypub_actors", "inbox", inbox)
if err != nil {
return err
}
@@ -151,7 +151,7 @@ func ProcessActivity(e *core.RequestEvent) error {
actor, err := e.App.FindFirstRecordByData("activitypub_actors", "iri", activity.Actor.GetID().String())
if err != nil {
if err == sql.ErrNoRows {
- actor, err = GetActorByIRI(e.App, userActor, activity.Actor.GetID().String(), false)
+ actor, err = GetActorByIRI(e.App, recipient, activity.Actor.GetID().String(), false)
if err != nil {
return err
}
@@ -177,7 +177,7 @@ func ProcessActivity(e *core.RequestEvent) error {
case pub.UpdateType:
fallthrough
case pub.CreateType:
- err = ProcessCreateOrUpdateActivity(e.App, actor, activity)
+ err = ProcessCreateOrUpdateActivity(e.App, actor, recipient, activity)
case pub.DeleteType:
err = ProcessDeleteActivity(e.App, actor, activity)
case pub.AnnounceType:
diff --git a/db/federation/create.go b/db/federation/create.go
index afeae539..48a53d45 100644
--- a/db/federation/create.go
+++ b/db/federation/create.go
@@ -444,15 +444,15 @@ func CreateListActivity(app core.App, list *core.Record, typ pub.ActivityVocabul
return app.Save(record)
}
-func ProcessCreateOrUpdateActivity(app core.App, actor *core.Record, activity pub.Activity) error {
+func ProcessCreateOrUpdateActivity(app core.App, actor *core.Record, recipient *core.Record, activity pub.Activity) error {
var err error
if strings.Contains(activity.Object.GetID().String(), "/api/v1/trail") {
- err = processCreateOrUpdateTrailActivity(activity, app, actor)
+ err = processCreateOrUpdateTrailActivity(activity, app, actor, recipient)
} else if strings.Contains(activity.Object.GetID().String(), "/api/v1/summit-log") {
err = processCreateOrUpdateSummitLogActivity(activity, app, actor)
} else if strings.Contains(activity.Object.GetID().String(), "/api/v1/list") {
- err = processCreateOrUpdateListActivity(activity, app, actor)
+ err = processCreateOrUpdateListActivity(activity, app, actor, recipient)
} else {
err = processCreateOrUpdateCommentActivity(activity, app, actor)
}
@@ -465,18 +465,13 @@ func ProcessCreateOrUpdateActivity(app core.App, actor *core.Record, activity pu
}
-func processCreateOrUpdateTrailActivity(activity pub.Activity, app core.App, actor *core.Record) error {
+func processCreateOrUpdateTrailActivity(activity pub.Activity, app core.App, actor *core.Record, recipient *core.Record) error {
trail, err := util.TrailFromActivity(activity, app, actor)
if err != nil {
return err
}
- trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author"))
- if err != nil {
- return err
- }
-
- _, err = util.InsertIntoFeed(app, actor.Id, trailAuthor.Id, trail.Id, util.TrailFeed)
+ _, err = util.InsertIntoFeed(app, recipient.Id, actor.Id, trail.Id, util.TrailFeed)
if err != nil {
return err
}
@@ -798,18 +793,13 @@ func processCreateOrUpdateSummitLogActivity(activity pub.Activity, app core.App,
return nil
}
-func processCreateOrUpdateListActivity(activity pub.Activity, app core.App, actor *core.Record) error {
+func processCreateOrUpdateListActivity(activity pub.Activity, app core.App, actor *core.Record, recipient *core.Record) error {
list, err := util.ListFromActivity(activity, app, actor)
if err != nil {
return err
}
- listAuthor, err := app.FindRecordById("activitypub_actors", list.GetString("author"))
- if err != nil {
- return err
- }
-
- _, err = util.InsertIntoFeed(app, actor.Id, listAuthor.Id, list.Id, util.ListFeed)
+ _, err = util.InsertIntoFeed(app, recipient.Id, actor.Id, list.Id, util.ListFeed)
if err != nil {
return err
}
diff --git a/db/federation/delete.go b/db/federation/delete.go
index 57c3211e..6703f550 100644
--- a/db/federation/delete.go
+++ b/db/federation/delete.go
@@ -2,9 +2,8 @@ package federation
import (
"fmt"
- "net/url"
"os"
- "path"
+ "pocketbase/util"
"strings"
"time"
@@ -315,16 +314,17 @@ func ProcessDeleteActivity(app core.App, actor *core.Record, activity pub.Activi
func processDeleteTrailActivity(app core.App, activity pub.Activity) error {
- trailUrl, err := url.Parse(activity.Object.GetID().String())
+ object := activity.Object.GetID().String()
+ trail, err := app.FindFirstRecordByData("trails", "iri", object)
if err != nil {
return err
}
- recordId := path.Base(trailUrl.Path)
- trail, err := app.FindRecordById("trails", recordId)
+ err = util.DeleteFromFeed(app, trail.Id)
if err != nil {
return err
}
+
return app.Delete(trail)
}
@@ -370,8 +370,10 @@ func processDeleteListActivity(app core.App, actor *core.Record, activity pub.Ac
return err
}
- if list.GetString("author") != actor.Id {
- return fmt.Errorf("actor is not summit log author")
+ err = util.DeleteFromFeed(app, list.Id)
+ if err != nil {
+ return err
}
+
return app.Delete(list)
}
diff --git a/db/main.go b/db/main.go
index 3e021acb..d5d1281d 100644
--- a/db/main.go
+++ b/db/main.go
@@ -304,6 +304,11 @@ func deleteTrailHandler(client meilisearch.ServiceManager) func(e *core.RecordEv
return err
}
+ err = util.DeleteFromFeed(e.App, record.Id)
+ if err != nil {
+ return err
+ }
+
return e.Next()
}
}
@@ -679,6 +684,11 @@ func deleteListHandler(client meilisearch.ServiceManager) func(e *core.RecordEve
return err
}
+ err = util.DeleteFromFeed(e.App, record.Id)
+ if err != nil {
+ return err
+ }
+
return e.Next()
}
}
@@ -905,7 +915,7 @@ func listFeedHandler() func(e *core.RecordsListRequestEvent) error {
}
if err != nil {
- return err
+ continue
}
r.MergeExpand(map[string]any{"item": item})
diff --git a/db/util/feed.go b/db/util/feed.go
index 34df48a7..cf9fa1ac 100644
--- a/db/util/feed.go
+++ b/db/util/feed.go
@@ -25,3 +25,13 @@ func InsertIntoFeed(app core.App, actorId string, authorId string, itemId string
return record, app.Save(record)
}
+
+func DeleteFromFeed(app core.App, itemId string) error {
+
+ record, err := app.FindFirstRecordByData("feed", "item", itemId)
+ if err != nil {
+ return err
+ }
+
+ return app.Delete(record)
+}
diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte
index 8d60b213..9f6ccf4a 100644
--- a/web/src/routes/+page.svelte
+++ b/web/src/routes/+page.svelte
@@ -172,13 +172,17 @@
{/if}
{#each feed.items as f}
-
-
-
+ {#if f.expand.item}
+
+
+
+ {/if}
{/each}
{/if}