@@ -13,6 +13,8 @@ import co.adityarajput.notifilter.data.Repository
1313import co.adityarajput.notifilter.data.models.*
1414import co.adityarajput.notifilter.services.NotificationListener
1515import co.adityarajput.notifilter.utils.Logger
16+ import co.adityarajput.notifilter.utils.containsMatchIn
17+ import co.adityarajput.notifilter.utils.isValidRegex
1618import kotlinx.coroutines.Dispatchers
1719import kotlinx.coroutines.delay
1820import kotlinx.coroutines.launch
@@ -108,26 +110,20 @@ class UpsertFilterViewModel(
108110
109111 FormPage .PATTERN -> {
110112 if (values.queryPattern.isBlank()) return FormError .BLANK_FIELDS
111- try {
112- Regex (values.queryPattern).pattern == values.queryPattern
113- if (values.regexTarget == RegexTarget .AND ) {
114- if (values.secondaryQueryPattern.isBlank()) return FormError .BLANK_FIELDS
115- Regex (values.secondaryQueryPattern).pattern == values.secondaryQueryPattern
116- }
117- } catch (_: Exception ) {
118- return FormError .INVALID_NOTIFICATION_REGEX
113+
114+ if (! values.queryPattern.isValidRegex()) return FormError .INVALID_NOTIFICATION_REGEX
115+
116+ if (values.regexTarget == RegexTarget .AND ) {
117+ if (values.secondaryQueryPattern.isBlank()) return FormError .BLANK_FIELDS
118+ if (! values.secondaryQueryPattern.isValidRegex()) return FormError .INVALID_NOTIFICATION_REGEX
119119 }
120120 }
121121
122122 FormPage .ACTION -> {
123123 if (values.action is Action .TAP_BUTTON ) {
124- try {
125- if (values.action.buttonRegex.isBlank()) return FormError .BLANK_FIELDS
126- Regex (values.action.buttonRegex).pattern == values.action.buttonRegex
127- } catch (_: Exception ) {
128- Logger .d(" FiltersViewModel.getError" , " Button pattern regex invalid" )
129- return FormError .INVALID_BUTTON_REGEX
130- }
124+ if (values.action.buttonRegex.isBlank()) return FormError .BLANK_FIELDS
125+
126+ if (! values.action.buttonRegex.isValidRegex()) return FormError .INVALID_BUTTON_REGEX
131127 }
132128
133129 if (values.action is Action .DEBOUNCE && values.app == Any ) {
@@ -156,15 +152,15 @@ class UpsertFilterViewModel(
156152
157153 if (
158154 regexTarget != RegexTarget .CONTENT
159- && ! Regex ( values.queryPattern) .containsMatchIn(notification.title)
155+ && ! values.queryPattern.containsMatchIn(notification.title)
160156 ) warnings.add(FormWarning .REGEX_DOESNT_MATCH_TITLE )
161157 if (
162158 (regexTarget == RegexTarget .CONTENT || regexTarget == RegexTarget .OR )
163- && ! Regex ( values.queryPattern) .containsMatchIn(notification.content)
159+ && ! values.queryPattern.containsMatchIn(notification.content)
164160 ) warnings.add(FormWarning .REGEX_DOESNT_MATCH_CONTENT )
165161 if (
166162 regexTarget == RegexTarget .AND &&
167- ! Regex ( values.secondaryQueryPattern) .containsMatchIn(notification.content)
163+ ! values.secondaryQueryPattern.containsMatchIn(notification.content)
168164 ) warnings.add(FormWarning .REGEX_DOESNT_MATCH_CONTENT )
169165
170166 return warnings
0 commit comments