fix: strip HTML-encoded tags (decode entities before stripping)
Release APK / build (push) Has been cancelled
Release APK / build (push) Has been cancelled
The previous stripHtml decoded </> after the regex pass, so content stored as <p>text</p> was never stripped. Now entities are decoded first, then all tags are removed. Also strip HTML when prefilling compose from an existing post (Edit/Repost) so the text field shows clean content, not raw markup. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -155,7 +155,7 @@ export default function PostsScreen() {
|
||||
router.push({
|
||||
pathname: "/(tabs)/compose",
|
||||
params: {
|
||||
prefillContent: post.content,
|
||||
prefillContent: stripHtml(post.content),
|
||||
prefillIntegrationIds: integrations.map((i) => i.id).join(","),
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
export function stripHtml(html: string): string {
|
||||
return html
|
||||
.replace(/<br\s*\/?>/gi, "\n")
|
||||
.replace(/<\/p>/gi, "\n")
|
||||
.replace(/<[^>]+>/g, "")
|
||||
// Decode entities first so encoded tags like <p> are also stripped
|
||||
let s = html
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, "'")
|
||||
.replace(/ /g, " ")
|
||||
.replace(/\n{3,}/g, "\n\n")
|
||||
.trim();
|
||||
.replace(/ /g, " ");
|
||||
// Block-level tags → newlines
|
||||
s = s
|
||||
.replace(/<br\s*\/?>/gi, "\n")
|
||||
.replace(/<\/p>/gi, "\n")
|
||||
.replace(/<\/div>/gi, "\n")
|
||||
.replace(/<\/li>/gi, "\n");
|
||||
// Strip all remaining tags
|
||||
s = s.replace(/<[^>]+>/g, "");
|
||||
return s.replace(/\n{3,}/g, "\n\n").trim();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user