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"))
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@ func ProcessActivity(e *core.RequestEvent) error {
|
|||||||
actor, err := e.App.FindFirstRecordByData("activitypub_actors", "iri", activity.Actor.GetID().String())
|
actor, err := e.App.FindFirstRecordByData("activitypub_actors", "iri", activity.Actor.GetID().String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == sql.ErrNoRows {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -177,7 +177,7 @@ func ProcessActivity(e *core.RequestEvent) error {
|
|||||||
case pub.UpdateType:
|
case pub.UpdateType:
|
||||||
fallthrough
|
fallthrough
|
||||||
case pub.CreateType:
|
case pub.CreateType:
|
||||||
err = ProcessCreateOrUpdateActivity(e.App, actor, activity)
|
err = ProcessCreateOrUpdateActivity(e.App, actor, recipient, activity)
|
||||||
case pub.DeleteType:
|
case pub.DeleteType:
|
||||||
err = ProcessDeleteActivity(e.App, actor, activity)
|
err = ProcessDeleteActivity(e.App, actor, activity)
|
||||||
case pub.AnnounceType:
|
case pub.AnnounceType:
|
||||||
|
|||||||
@@ -444,15 +444,15 @@ func CreateListActivity(app core.App, list *core.Record, typ pub.ActivityVocabul
|
|||||||
return app.Save(record)
|
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
|
var err error
|
||||||
if strings.Contains(activity.Object.GetID().String(), "/api/v1/trail") {
|
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") {
|
} else if strings.Contains(activity.Object.GetID().String(), "/api/v1/summit-log") {
|
||||||
err = processCreateOrUpdateSummitLogActivity(activity, app, actor)
|
err = processCreateOrUpdateSummitLogActivity(activity, app, actor)
|
||||||
} else if strings.Contains(activity.Object.GetID().String(), "/api/v1/list") {
|
} else if strings.Contains(activity.Object.GetID().String(), "/api/v1/list") {
|
||||||
err = processCreateOrUpdateListActivity(activity, app, actor)
|
err = processCreateOrUpdateListActivity(activity, app, actor, recipient)
|
||||||
} else {
|
} else {
|
||||||
err = processCreateOrUpdateCommentActivity(activity, app, actor)
|
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)
|
trail, err := util.TrailFromActivity(activity, app, actor)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
trailAuthor, err := app.FindRecordById("activitypub_actors", trail.GetString("author"))
|
_, err = util.InsertIntoFeed(app, recipient.Id, actor.Id, trail.Id, util.TrailFeed)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = util.InsertIntoFeed(app, actor.Id, trailAuthor.Id, trail.Id, util.TrailFeed)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -798,18 +793,13 @@ func processCreateOrUpdateSummitLogActivity(activity pub.Activity, app core.App,
|
|||||||
return nil
|
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)
|
list, err := util.ListFromActivity(activity, app, actor)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
listAuthor, err := app.FindRecordById("activitypub_actors", list.GetString("author"))
|
_, err = util.InsertIntoFeed(app, recipient.Id, actor.Id, list.Id, util.ListFeed)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = util.InsertIntoFeed(app, actor.Id, listAuthor.Id, list.Id, util.ListFeed)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ package federation
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"pocketbase/util"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"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 {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
recordId := path.Base(trailUrl.Path)
|
|
||||||
|
|
||||||
trail, err := app.FindRecordById("trails", recordId)
|
err = util.DeleteFromFeed(app, trail.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return app.Delete(trail)
|
return app.Delete(trail)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,8 +370,10 @@ func processDeleteListActivity(app core.App, actor *core.Record, activity pub.Ac
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if list.GetString("author") != actor.Id {
|
err = util.DeleteFromFeed(app, list.Id)
|
||||||
return fmt.Errorf("actor is not summit log author")
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return app.Delete(list)
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = util.DeleteFromFeed(e.App, record.Id)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return e.Next()
|
return e.Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -679,6 +684,11 @@ func deleteListHandler(client meilisearch.ServiceManager) func(e *core.RecordEve
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = util.DeleteFromFeed(e.App, record.Id)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return e.Next()
|
return e.Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -905,7 +915,7 @@ func listFeedHandler() func(e *core.RecordsListRequestEvent) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
r.MergeExpand(map[string]any{"item": item})
|
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)
|
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>
|
<EmptyStateFeed></EmptyStateFeed>
|
||||||
{/if}
|
{/if}
|
||||||
{#each feed.items as f}
|
{#each feed.items as f}
|
||||||
<a
|
{#if f.expand.item}
|
||||||
class="block"
|
<a
|
||||||
href={(f.type === "trail" ? "/trail/view/" : "/lists/") +
|
class="block"
|
||||||
`@${f.expand.author?.preferred_username}@${f.expand.author?.domain}/${f.item}`}
|
href={(f.type === "trail"
|
||||||
>
|
? "/trail/view/"
|
||||||
<FeedCard feedItem={f}></FeedCard>
|
: "/lists/") +
|
||||||
</a>
|
`@${f.expand.author?.preferred_username}@${f.expand.author?.domain}/${f.item}`}
|
||||||
|
>
|
||||||
|
<FeedCard feedItem={f}></FeedCard>
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
Reference in New Issue
Block a user