mirror of
https://github.com/abhijithvijayan/web-extension-starter.git
synced 2025-10-07 07:22:37 +02:00
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import Toggle from "../element-factories/toggle";
|
|
import ProfileLink from "../page-elements/profile-link";
|
|
import Settings from "../settings";
|
|
import TraderRepository from "../trader-repository";
|
|
|
|
export default class WhoWantsEnhancer {
|
|
static async addVisibilityToggle(page: Document, links: ProfileLink[]) {
|
|
let bs = page.querySelectorAll("b");
|
|
|
|
let b = Array.from(bs).find((b) => b.innerText.trim() === "WANTERS:")!;
|
|
|
|
let toggle = Toggle.create();
|
|
toggle.element.style.marginBottom = "1.5em";
|
|
|
|
b.parentNode!.insertBefore(toggle.element, b);
|
|
|
|
toggle.onToggle((on: boolean) => {
|
|
on === true
|
|
? this.hideNonOpenLinks(links)
|
|
: this.showNonOpenLinks(links);
|
|
});
|
|
|
|
if ((await Settings.get("hideNonOpenRows")) === true) {
|
|
toggle.switchOn();
|
|
this.hideNonOpenLinks(links);
|
|
}
|
|
}
|
|
|
|
static async enhance(page: Document) {
|
|
let repository = await TraderRepository.load();
|
|
|
|
let links = ProfileLink.getAll(page, repository);
|
|
|
|
let filteredLinks = links
|
|
.filter((profileLink) => profileLink.trader !== null)
|
|
.filter((profileLink) => profileLink.trader!.ownsCount !== null)
|
|
.filter((profileLink) => profileLink.trader!.ownsCount! > 0);
|
|
|
|
filteredLinks.forEach((profileLink) => {
|
|
profileLink.addOwnsBadge();
|
|
|
|
return profileLink;
|
|
});
|
|
|
|
filteredLinks
|
|
.filter((profileLink) => profileLink.trader!.open)
|
|
.forEach((profileLink) => {
|
|
profileLink.addStar();
|
|
});
|
|
|
|
this.addVisibilityToggle(page, links);
|
|
}
|
|
|
|
static hideNonOpenLinks(links: ProfileLink[] = []) {
|
|
Settings.set("hideNonOpenRows", true);
|
|
|
|
links.filter((link) => !link.open).forEach((link) => link!.hide());
|
|
}
|
|
|
|
static showNonOpenLinks(links: ProfileLink[] = []) {
|
|
Settings.set("hideNonOpenRows", false);
|
|
|
|
links.forEach((link) => link!.show());
|
|
}
|
|
}
|