fixes feed
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
12
db/main.go
12
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})
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -172,13 +172,17 @@
|
||||
<EmptyStateFeed></EmptyStateFeed>
|
||||
{/if}
|
||||
{#each feed.items as f}
|
||||
<a
|
||||
class="block"
|
||||
href={(f.type === "trail" ? "/trail/view/" : "/lists/") +
|
||||
`@${f.expand.author?.preferred_username}@${f.expand.author?.domain}/${f.item}`}
|
||||
>
|
||||
<FeedCard feedItem={f}></FeedCard>
|
||||
</a>
|
||||
{#if f.expand.item}
|
||||
<a
|
||||
class="block"
|
||||
href={(f.type === "trail"
|
||||
? "/trail/view/"
|
||||
: "/lists/") +
|
||||
`@${f.expand.author?.preferred_username}@${f.expand.author?.domain}/${f.item}`}
|
||||
>
|
||||
<FeedCard feedItem={f}></FeedCard>
|
||||
</a>
|
||||
{/if}
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
Reference in New Issue
Block a user