Federation (#327)

* initial commit federation

* more federation

* more federation

* more federation

* completes follow, accept, undo

* add trail create activity

* process trail create activity

* more trail create activity

* adds missing endpoints

* adds update and delete activity

* adds comment activities

* adds activities back

* adds summit logs activities

* deletes follow counts table

* fixes migrations

* fixes migrations

* fixes migrations

* fixes migrations

* adds remote profiles

* ctd

* ctd

* we are getting closer...

* adds public summit logs

* fixes federated trails in lists

* adds remote lists

* adds list activites

* fixes lists

* adds notifications

* adds iri redirect

* fixes comments and summitlogs

* fixes follows and profiles

* adds asynchronous send

* fixes list search

* adds encryption key

* bug fixes

* fixes activity signing

* removes custon activity object types

* adds html editor

* fixes html editor

* fixes display issues on mastodon

* adds federated sharing

* finishes announcements

* fixes small summit log issues

* adds trail likes

* finalizes likes

* fixes images for komoot

* add disable federation option

* adds private profiles

* updates docs

* adds federated comments

* adds trail and comments actvitiypub routes

* adds mentions to editor

* adds mentions to trails, comments, summit logs

* updates theme

* updates theme

* update docs

* update docs

* updates docs

* fixes various frontend problems

* fixes activitypub follows api

* updates docs

* updates docs

---------

Co-authored-by: Christian Beutel <>
This commit is contained in:
Flomp
2025-06-21 10:09:22 +02:00
committed by GitHub
parent 742a6d9d30
commit 9276690d60
356 changed files with 57150 additions and 35470 deletions

View File

@@ -23,10 +23,11 @@
interface Props {
trail: Trail;
handle: string;
mode: "overview" | "map" | "list";
}
let { trail, mode }: Props = $props();
let { trail, handle, mode }: Props = $props();
let confirmModal: ConfirmModal;
let listSelectModal: ListSelectModal;
@@ -35,8 +36,10 @@
let lists: List[] = $state([]);
const isOwned: boolean = trail.author == $currentUser?.actor;
const allowEdit =
trail.author == $currentUser?.id ||
isOwned ||
trail.expand?.trail_share_via_trail?.some(
(s) => s.permission == "edit",
);
@@ -61,16 +64,16 @@
]
: []),
{ text: $_("print"), value: "print", icon: "print" },
...(trail.author != $currentUser?.id
? []
: [{ text: $_("add-to-list"), value: "list", icon: "bookmark" }]),
...(trail.author != $currentUser?.id
? []
: [{ text: $_("share"), value: "share", icon: "share" }]),
...(isOwned
? [{ text: $_("add-to-list"), value: "list", icon: "bookmark" }]
: []),
...(isOwned
? [{ text: $_("share"), value: "share", icon: "share" }]
: []),
...(allowEdit
? [{ text: $_("edit"), value: "edit", icon: "pen" }]
: []),
...(trail.author == $currentUser?.id
...(isOwned
? [{ text: $_("delete"), value: "delete", icon: "trash" }]
: []),
];
@@ -79,13 +82,13 @@
if (item.value == "show") {
goto(
mode == "overview"
? `/map/trail/${trail.id!}`
: `/trail/view/${trail.id!}`,
? `/map/trail/${handle}/${trail.id!}`
: `/trail/view/${handle}/${trail.id!}`,
);
} else if (item.value == "list") {
lists = (
await lists_index(
{ q: "", author: $currentUser?.id ?? "" },
{ q: "", author: $currentUser?.actor ?? "" },
1,
-1,
)
@@ -99,7 +102,7 @@
)
?.focus();
} else if (item.value == "print") {
goto(`/map/trail/${trail.id}/print`);
goto(`/map/trail/${handle}/${trail.id}/print`);
} else if (item.value == "share") {
trailShareModal.openModal();
} else if (item.value == "download") {
@@ -155,7 +158,7 @@
}
if (exportSettings.summitLog) {
let summitLogString = "";
for (const summitLog of trail.expand?.summit_logs ?? []) {
for (const summitLog of trail.expand?.summit_logs_via_trail ?? []) {
summitLogString += `${summitLog.date},${summitLog.text}\n`;
}
zip.file(