feat: support the magic break string '[...]' in content, such that if found, outbound federation will use all content up to (and including) that string in its summary

This commit is contained in:
Julian Lam
2026-02-25 15:51:38 -05:00
parent 4809b6c76f
commit cd357aaff5

View File

@@ -755,30 +755,36 @@ Mocks.notes.public = async (post) => {
// attachment,
// };
const sentences = tokenizer.sentences(post.content, { newline_boundaries: true });
// Append sentences to summary until it contains just under 500 characters of content
const limit = 500;
let remaining = limit;
let finished = false;
summary = sentences.reduce((memo, sentence) => {
if (finished) {
const breakString = '[...]';
if (post.content.includes(breakString)) {
const index = post.content.indexOf(breakString);
summary = post.content.slice(0, index + breakString.length);
} else {
const sentences = tokenizer.sentences(post.content, { newline_boundaries: true });
// Append sentences to summary until it contains just under 500 characters of content
const limit = 500;
let remaining = limit;
let finished = false;
summary = sentences.reduce((memo, sentence) => {
if (finished) {
return memo;
}
const clean = sanitize(sentence, {
allowedTags: [],
allowedAttributes: {},
});
remaining = remaining - clean.length;
if (remaining > 0) {
memo += ` ${sentence}`;
} else { // There was more but summary generation is complete
finished = true;
memo += ' [...]';
}
return memo;
}
const clean = sanitize(sentence, {
allowedTags: [],
allowedAttributes: {},
});
remaining = remaining - clean.length;
if (remaining > 0) {
memo += ` ${sentence}`;
} else { // There was more but summary generation is complete
finished = true;
memo += ' [...]';
}
return memo;
}, '');
}, '');
}
// Final sanitization to clean up tags
summary = posts.sanitize(summary);