Skip to content

Commit 3e2784c

Browse files
committed
Show filter title in placeholder instead of reason. More efficient detection
1 parent 27d785e commit 3e2784c

File tree

4 files changed

+30
-13
lines changed

4 files changed

+30
-13
lines changed

src/data/filters-database.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,15 @@ export const filtersDatabase: Record<string, FiltersDatabaseItem> = {
3636
keywordsDB: keywordsPerLanguage.peopleYouMayKnow,
3737
},
3838
uncategorized: {
39-
title: "Uncategorized",
39+
title: "Follow/Join",
4040
description: "Removes suggested pages with join/follow link",
4141
icon: "󱠂",
4242
keywordsDB: keywordsPerLanguage.uncategorized,
4343
},
4444
}
45+
46+
export const filterTitlePerKeywordIndex = new Map<string, string>(
47+
Object.entries(filtersDatabase).flatMap(([_category, { title, keywordsDB }]) =>
48+
Object.values(keywordsDB).flatMap((keyword) => Array.isArray(keyword) ? keyword.map(k => [k, title]) : [[keyword, title]])
49+
)
50+
)

src/lib/purge-element.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@ import { showPlaceholder, theme } from "@/config"
22

33
export const purgeElement = ({
44
element,
5+
filter,
56
reason,
67
author,
78
placeHolderMessage,
89
sponsoredFilters,
910
}: {
1011
element: HTMLElement
12+
filter: string
1113
reason: string
1214
author: string
1315
placeHolderMessage: string
1416
sponsoredFilters: string[]
1517
}) => {
1618
element.tabIndex = -1
1719
element.dataset.purged = "true"
20+
element.dataset.reason = reason
1821

1922
// Sponsored posts get removed in an "out of order" fashion automatically.
2023
// Having placeholder inside them results in a scroll jump
@@ -25,7 +28,7 @@ export const purgeElement = ({
2528

2629
const overlay = document.createElement("article")
2730
overlay.className = "placeholder"
28-
overlay.innerHTML = `<p style="color: ${theme.textColor}">${placeHolderMessage}: ${author} (${reason})</p>`
31+
overlay.innerHTML = `<p style="color: ${theme.textColor}">${placeHolderMessage}: ${author} (${filter})</p>`
2932
element.appendChild(overlay)
3033
} else {
3134
// Hide elements by resizing to 0px

src/lib/run-feeds-cleaner.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
possibleTargetsSelectorInPost,
44
postContainerSelector,
55
} from "@/config"
6-
import { filtersDatabase } from "@/data/filters-database"
6+
import { filterTitlePerKeywordIndex, filtersDatabase } from "@/data/filters-database"
77
import { keywordsPerLanguage } from "@/data/keywords-per-language"
88
import { BlockCounter } from "@/lib/block-counter"
99
import { getOwnLangFilters } from "./get-own-language-filters"
@@ -52,32 +52,39 @@ export const runFeedsCleaner = (): (() => void) => {
5252
const checkElement = (element: HTMLElement) => {
5353
// Handled already
5454
if (element.dataset.purged === "true") return
55-
let suspect: boolean = false
56-
let reason: string | null = null
57-
let raw: string | null = null
55+
let flagged: boolean = false
56+
let matchedfilter: string
57+
let reason: string
5858

5959
for (const span of element.querySelectorAll(
6060
possibleTargetsSelectorInPost
6161
)) {
62-
if (!activeFilters.some(str => span.textContent?.includes(str))) continue
63-
suspect = true
64-
reason = span.innerHTML.split("󰞋")[0]
65-
raw = span.innerHTML
66-
break
62+
let done: boolean = false
63+
for (const filter of activeFilters){
64+
if (!span.textContent?.includes(filter)) continue
65+
flagged = true
66+
matchedfilter = filterTitlePerKeywordIndex.get(filter)!
67+
reason = span.innerHTML
68+
if (devMode) console.log(`Flagged post containing: "${reason}" with filter: "${matchedfilter}"`)
69+
done = true
70+
break
71+
}
72+
if (done) break
6773
}
6874

69-
if (!suspect) {
75+
if (!flagged) {
7076
BlockCounter.getInstance().increaseWhite()
7177
return
7278
}
7379
BlockCounter.getInstance().increaseBlack()
7480

7581
purgeElement({
7682
element,
77-
reason: reason ?? raw ?? "",
83+
reason: reason!,
7884
author: element.querySelector("span.f2")?.innerHTML ?? "",
7985
placeHolderMessage,
8086
sponsoredFilters,
87+
filter: matchedfilter!,
8188
})
8289
}
8390

src/lib/settings-menu-injector.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export class SettingsMenuInjector {
5353
<div class="settingsIcon native-text" style="color: ${theme.iconColor}"><span>${closeMenuIcon}</span></div>
5454
<div class="settingsLabelContainer">
5555
<span class="settingsLabel">Close Menu</span>
56+
<span class="settingsDescription" style="color: ${theme.iconColor}" >Changes take effect on newly retrieved posts</span>
5657
</div>
5758
</div>`
5859
)}

0 commit comments

Comments
 (0)