|
@@ -1,6 +1,6 @@
|
|
|
import {ParseResult, parseSearch, Token} from 'sentry/components/searchSyntax/parser';
|
|
|
import {Organization} from 'sentry/types';
|
|
|
-import {FieldKey} from 'sentry/utils/fields';
|
|
|
+import {FieldKey, getFieldDefinition} from 'sentry/utils/fields';
|
|
|
import {
|
|
|
ON_DEMAND_METRICS_SUPPORTED_TAGS,
|
|
|
STANDARD_SEARCH_FIELD_KEYS,
|
|
@@ -14,12 +14,21 @@ function isOnDemandSupportedFilterKey(key: FieldKey): boolean {
|
|
|
return ON_DEMAND_METRICS_SUPPORTED_TAGS.has(key);
|
|
|
}
|
|
|
|
|
|
+function isCustomTag(key: FieldKey): boolean {
|
|
|
+ return !getFieldDefinition(key);
|
|
|
+}
|
|
|
+
|
|
|
export function createOnDemandFilterWarning(warning: React.ReactNode) {
|
|
|
- return (key: string) =>
|
|
|
- !isStandardSearchFilterKey(key as FieldKey) &&
|
|
|
- isOnDemandSupportedFilterKey(key as FieldKey)
|
|
|
- ? warning
|
|
|
- : null;
|
|
|
+ return (key: string) => {
|
|
|
+ const fieldKey = key as FieldKey;
|
|
|
+ if (isCustomTag(fieldKey)) {
|
|
|
+ return warning;
|
|
|
+ }
|
|
|
+ if (!isStandardSearchFilterKey(fieldKey) && isOnDemandSupportedFilterKey(fieldKey)) {
|
|
|
+ return warning;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
export function isOnDemandQueryString(query: string): boolean {
|
|
@@ -33,7 +42,8 @@ export function isOnDemandQueryString(query: string): boolean {
|
|
|
const isOnDemandSupportedSearch = searchFilterKeys.some(key =>
|
|
|
ON_DEMAND_METRICS_SUPPORTED_TAGS.has(key)
|
|
|
);
|
|
|
- return !isStandardSearch && isOnDemandSupportedSearch;
|
|
|
+ const hasCustomTags = searchFilterKeys.some(isCustomTag);
|
|
|
+ return !isStandardSearch && (isOnDemandSupportedSearch || hasCustomTags);
|
|
|
}
|
|
|
|
|
|
type SearchFilterKey = FieldKey | null;
|