From d0d03c05d6a4fdd6bf7513f7470a6e7ac2ab2595 Mon Sep 17 00:00:00 2001 From: Ionys <9364594+Ionys320@users.noreply.github.com> Date: Sun, 22 Dec 2024 11:24:36 +0100 Subject: [PATCH] fix(monitors search): Correctly handle null/undefined/empty values. Also optimize a bit search tags by replacing `.find` with `.some`. Thanks @homelab-alpha --- src/components/MonitorList.vue | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/components/MonitorList.vue b/src/components/MonitorList.vue index 9dab5e28a..34074afab 100644 --- a/src/components/MonitorList.vue +++ b/src/components/MonitorList.vue @@ -324,14 +324,21 @@ export default { // finds monitor name, tag name or tag value let searchTextMatch = true; if (this.searchText !== "") { - const regex = new RegExp(this.searchText, "i"); - - searchTextMatch = - regex.test(monitor.name) || - regex.test(monitor.url) || - regex.test(monitor.hostname) || - regex.test(monitor.dns_resolve_server) || - monitor.tags.find((tag) => regex.test(tag.name) || regex.test(tag.value)); + try { + const regex = new RegExp(this.searchText, "i"); // "i" for case-insensitive matching + + const safeRegexTest = (str) => str && regex.test(str); + + searchTextMatch = + regex.test(monitor.name) || + safeRegexTest(monitor.url) || + safeRegexTest(monitor.hostname) || + safeRegexTest(monitor.dns_resolve_server) || + monitor.tags.some(tag => regex.test(tag.name) || safeRegexTest(tag.value)); + } catch (e) { + console.error("Invalid regex pattern:", e); + searchTextMatch = false; + } } // filter by status