Skip to content

Commit 10da142

Browse files
authored
fix tab crash when loading from url (#454)
1 parent 8f2df29 commit 10da142

File tree

3 files changed

+28
-29
lines changed

3 files changed

+28
-29
lines changed

web/src/components/netflow-tab.tsx

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { Filters } from '../model/filters';
1616
import { loadConfig } from '../utils/config';
1717
import { findFilter, getFilterDefinitions } from '../utils/filter-definitions';
1818
import { usePrevious } from '../utils/previous-hook';
19-
import NetflowTraffic from './netflow-traffic';
2019
import NetflowTrafficParent from './netflow-traffic-parent';
2120

2221
type RouteProps = K8sResourceCommon & {
@@ -39,10 +38,9 @@ type HPAProps = K8sResourceCommon & {
3938

4039
export const NetflowTab: React.FC<PageComponentProps> = ({ obj }) => {
4140
const { t } = useTranslation('plugin__netobserv-plugin');
42-
const [loading, setLoading] = React.useState(true);
4341
const initState = React.useRef<Array<'initDone' | 'configLoading' | 'configLoaded' | 'forcedFiltersLoaded'>>([]);
4442
const [config, setConfig] = React.useState<Config>(defaultConfig);
45-
const [forcedFilters, setForcedFilters] = React.useState<Filters | null>(null);
43+
const [forcedFilters, setForcedFilters] = React.useState<Filters>();
4644
const previous = usePrevious({ obj });
4745

4846
React.useEffect(() => {
@@ -55,7 +53,6 @@ export const NetflowTab: React.FC<PageComponentProps> = ({ obj }) => {
5553
initState.current.push('configLoading');
5654
loadConfig().then(v => {
5755
setConfig(v);
58-
setLoading(false);
5956
initState.current.push('configLoaded');
6057
});
6158
}
@@ -171,26 +168,26 @@ export const NetflowTab: React.FC<PageComponentProps> = ({ obj }) => {
171168
}
172169
}, [config, obj, previous, t]);
173170

174-
return forcedFilters ? (
175-
<NetflowTrafficParent>
176-
<NetflowTraffic forcedFilters={forcedFilters} isTab parentConfig={config} />
177-
</NetflowTrafficParent>
178-
) : (
179-
<PageSection id="pageSection" data-test="tab-page-section">
180-
{loading ? (
181-
<Bullseye data-test="loading-tab">
182-
<Spinner size="xl" />
183-
</Bullseye>
184-
) : (
171+
if (!initState.current.includes('forcedFiltersLoaded')) {
172+
return (
173+
<Bullseye data-test="loading-tab">
174+
<Spinner size="xl" />
175+
</Bullseye>
176+
);
177+
} else if (forcedFilters) {
178+
return <NetflowTrafficParent forcedFilters={forcedFilters} isTab={true} parentConfig={config} />;
179+
} else {
180+
return (
181+
<PageSection id="pageSection" data-test="tab-page-section">
185182
<EmptyState data-test="error-state" variant={EmptyStateVariant.small}>
186183
<Title headingLevel="h2" size="lg">
187184
{t('Kind not managed')}
188185
</Title>
189186
<EmptyStateBody>{obj?.kind}</EmptyStateBody>
190187
</EmptyState>
191-
)}
192-
</PageSection>
193-
);
188+
</PageSection>
189+
);
190+
}
194191
};
195192

196193
export default NetflowTab;

web/src/components/netflow-traffic-parent.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import * as React from 'react';
22
import { clearURLParams } from '../utils/url';
33
import { clearLocalStorage } from '../utils/local-storage-hook';
4-
import NetflowTraffic from './netflow-traffic';
4+
import NetflowTraffic, { NetflowTrafficProps } from './netflow-traffic';
55
import AlertFetcher from './alerts/fetcher';
66
import DynamicLoader from './dynamic-loader/dynamic-loader';
77

8-
type Props = {};
8+
type Props = NetflowTrafficProps & {};
9+
910
type State = {
1011
error?: Error;
1112
};
@@ -47,15 +48,14 @@ class NetflowTrafficParent extends React.Component<Props, State> {
4748
</div>
4849
);
4950
}
50-
if (this.props.children) {
51-
return this.props.children;
52-
}
53-
// else render default NetworkTraffic
54-
5551
return (
5652
<DynamicLoader>
5753
<AlertFetcher>
58-
<NetflowTraffic forcedFilters={null} />
54+
<NetflowTraffic
55+
isTab={this.props.isTab}
56+
forcedFilters={this.props.isTab ? this.props.forcedFilters : null}
57+
parentConfig={this.props.parentConfig}
58+
/>
5959
</AlertFetcher>
6060
</DynamicLoader>
6161
);

web/src/components/netflow-traffic.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,13 @@ import { SearchComponent, SearchEvent, SearchHandle } from './search/search';
169169

170170
export type ViewId = 'overview' | 'table' | 'topology';
171171

172-
export const NetflowTraffic: React.FC<{
173-
forcedFilters: Filters | null;
172+
export type NetflowTrafficProps = {
173+
forcedFilters?: Filters | null;
174174
isTab?: boolean;
175175
parentConfig?: Config;
176-
}> = ({ forcedFilters, isTab, parentConfig }) => {
176+
};
177+
178+
export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, isTab, parentConfig }) => {
177179
const { t } = useTranslation('plugin__netobserv-plugin');
178180
const [extensions] = useResolvedExtensions<ModelFeatureFlag>(isModelFeatureFlag);
179181
const k8sModels = useK8sModelsWithColors();

0 commit comments

Comments
 (0)