From 21cc79e01f601462827cedd5e487f329835e54ed Mon Sep 17 00:00:00 2001 From: simbiozizv Date: Wed, 5 Feb 2025 17:10:17 +0300 Subject: [PATCH] chore(Queries): crypto helper [YTFRONT-4612] --- .../query-tracker/module/neuralNetwork/actions.ts | 3 ++- .../ui/pages/query-tracker/module/query/actions.ts | 3 ++- .../ui/src/ui/pages/query-tracker/utils/crypto.ts | 12 ++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 packages/ui/src/ui/pages/query-tracker/utils/crypto.ts diff --git a/packages/ui/src/ui/pages/query-tracker/module/neuralNetwork/actions.ts b/packages/ui/src/ui/pages/query-tracker/module/neuralNetwork/actions.ts index 521e52776..84fb75cae 100644 --- a/packages/ui/src/ui/pages/query-tracker/module/neuralNetwork/actions.ts +++ b/packages/ui/src/ui/pages/query-tracker/module/neuralNetwork/actions.ts @@ -3,11 +3,12 @@ import {RootState} from '../../../../store/reducers'; import {wrapApiPromiseByToaster} from '../../../../utils/utils'; import {YTApiId, ytApiV4Id} from '../../../../rum/rum-wrap-api'; import {setContextId} from './neuralNetworkSlice'; +import {makeRandomUUID} from '../../utils/crypto'; export const createContextId = (queryId: string): ThunkAction => async (dispatch) => { - const newContextId = crypto.randomUUID(); + const newContextId = makeRandomUUID(); await wrapApiPromiseByToaster( ytApiV4Id.alterQuery(YTApiId.alterQuery, { diff --git a/packages/ui/src/ui/pages/query-tracker/module/query/actions.ts b/packages/ui/src/ui/pages/query-tracker/module/query/actions.ts index d8a4a4054..4defca991 100644 --- a/packages/ui/src/ui/pages/query-tracker/module/query/actions.ts +++ b/packages/ui/src/ui/pages/query-tracker/module/query/actions.ts @@ -53,6 +53,7 @@ import { } from '../query-tracker-contants'; import {loadVisualization} from '../queryChart/actions'; import {selectNeuralNetworkContextId} from '../neuralNetwork/selectors'; +import {makeRandomUUID} from '../../utils/crypto'; export const setCurrentClusterToQuery = (): ThunkAction => (dispatch, getState) => { @@ -225,7 +226,7 @@ export function createEmptyQuery( const state = getState(); const defaultQueryACO = getDefaultQueryACO(state); - dispatch(setContextId(crypto.randomUUID())); + dispatch(setContextId(makeRandomUUID())); dispatch({ type: SET_QUERY, data: { diff --git a/packages/ui/src/ui/pages/query-tracker/utils/crypto.ts b/packages/ui/src/ui/pages/query-tracker/utils/crypto.ts new file mode 100644 index 000000000..59ace3d4f --- /dev/null +++ b/packages/ui/src/ui/pages/query-tracker/utils/crypto.ts @@ -0,0 +1,12 @@ +export const makeRandomUUID = () => { + try { + return crypto.randomUUID(); + } catch (e) { + // http and old browsers + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (item) => { + const random = Math.floor(Math.random() * 16); + const newValue = item === 'x' ? random : (random % 4) + 8; + return newValue.toString(16); + }); + } +};