fix(sqllab): dedupe active_tab in tabHistory (#23265)

This commit is contained in:
JUST.in DO IT 2023-03-22 14:33:41 -07:00 committed by GitHub
parent fae3ad0462
commit b1526c14e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 2 deletions

View File

@ -19,6 +19,14 @@
import { t } from '@superset-ui/core';
import getToastsFromPyFlashMessages from 'src/components/MessageToasts/getToastsFromPyFlashMessages';
export function dedupeTabHistory(tabHistory) {
return tabHistory.reduce(
(result, tabId) =>
result.slice(-1)[0] === tabId ? result : result.concat(tabId),
[],
);
}
export default function getInitialState({
defaultDbId,
common,
@ -193,7 +201,7 @@ export default function getInitialState({
offline: false,
queries,
queryEditors: Object.values(queryEditors),
tabHistory,
tabHistory: dedupeTabHistory(tabHistory),
tables,
queriesLastUpdate: Date.now(),
user,

View File

@ -17,7 +17,7 @@
* under the License.
*/
import getInitialState from './getInitialState';
import getInitialState, { dedupeTabHistory } from './getInitialState';
const apiData = {
defaultDbId: 1,
@ -51,4 +51,21 @@ describe('getInitialState', () => {
.templateParams,
).toBeUndefined();
});
describe('dedupeTabHistory', () => {
it('should dedupe the tab history', () => {
[
{ value: [], expected: [] },
{ value: [12, 3, 4, 5, 6], expected: [12, 3, 4, 5, 6] },
{ value: [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], expected: [1, 2] },
{
value: [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3],
expected: [1, 2, 3],
},
{ value: [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3], expected: [2, 3] },
].forEach(({ value, expected }) => {
expect(dedupeTabHistory(value)).toEqual(expected);
});
});
});
});