26 lines
677 B
TypeScript
26 lines
677 B
TypeScript
import { useEffect, useMemo } from 'react';
|
|
|
|
import { CloudWatchMetricsQuery } from '../types';
|
|
|
|
import { migrateMetricQuery } from './metricQueryMigrations';
|
|
|
|
/**
|
|
* Returns queries with migrations, and calls onChange function to notify if it changes
|
|
*/
|
|
const useMigratedMetricsQuery = (
|
|
query: CloudWatchMetricsQuery,
|
|
onChangeQuery: (newQuery: CloudWatchMetricsQuery) => void
|
|
) => {
|
|
const migratedQUery = useMemo(() => migrateMetricQuery(query), [query]);
|
|
|
|
useEffect(() => {
|
|
if (migratedQUery !== query) {
|
|
onChangeQuery(migratedQUery);
|
|
}
|
|
}, [migratedQUery, query, onChangeQuery]);
|
|
|
|
return migratedQUery;
|
|
};
|
|
|
|
export default useMigratedMetricsQuery;
|