import Badge from "../entities/Badge"; import FunkyArray from "funky-array"; import BadgeService from "../services/BadgeService"; export default abstract class BadgeCache { public static UrlBadges:FunkyArray; public static GoalBadges:FunkyArray; public static async RefreshCache() { const badges = await BadgeService.LoadAll(); const urlBadges = new FunkyArray(); const goalBadges = new FunkyArray(); for (const badge of badges) { if (badge.ForUrl.includes(",")) { const urls = badge.ForUrl.replaceAll(" ", "").split(","); for (const url of urls) { this.processUri(url, badge, goalBadges, urlBadges); } } else { this.processUri(badge.ForUrl, badge, goalBadges, urlBadges); } } BadgeCache.UrlBadges = urlBadges; BadgeCache.GoalBadges = goalBadges; } private static processUri(uri:string, badge: Badge, goalBadges: FunkyArray, urlBadges: FunkyArray) { const urlParts = uri.split("://"); let url = urlParts[1].replace("www.", "").toLowerCase().replace(".htm", "").replace(".html", ""); if (url.endsWith("/index")) { url = url.replace("/index", "/"); } if (urlParts[0] === "mp") { goalBadges.set(url, badge); } else { urlBadges.set(url, badge); } } }