From 661697a5cca83ead0d6946b8ffaae1f97801389c Mon Sep 17 00:00:00 2001 From: "Roman.Sergeenko" Date: Tue, 24 May 2022 11:05:06 +0400 Subject: [PATCH 1/2] #RI-2965 - fix duplication requests after add key #RI-2966 - fix json display value --- .../rejson-details/RejsonDetailsWrapper.tsx | 41 ++++++++++--------- redisinsight/ui/src/slices/browser/keys.ts | 1 - 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx b/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx index 44776cac14..ee956655ad 100644 --- a/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx +++ b/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx @@ -68,33 +68,34 @@ const RejsonDetailsWrapper = () => { return (
- {loading && ( + {loading ? ( + ) : ( + {}} + handleOpenExpiryDialog={() => {}} + keyProperty={{}} + /> )} - {}} - handleOpenExpiryDialog={() => {}} - keyProperty={{}} - />
) } diff --git a/redisinsight/ui/src/slices/browser/keys.ts b/redisinsight/ui/src/slices/browser/keys.ts index bcd89455ed..1752a41526 100644 --- a/redisinsight/ui/src/slices/browser/keys.ts +++ b/redisinsight/ui/src/slices/browser/keys.ts @@ -612,7 +612,6 @@ function addTypedKey( onSuccessAction() } dispatch(addKeySuccess()) - dispatch(fetchKeyInfo(data.keyName)) dispatch( addMessageNotification(successMessages.ADDED_NEW_KEY(data.keyName)) ) From 8c55fe01f0aa00315d107e63d82f23112bf57878 Mon Sep 17 00:00:00 2001 From: "Roman.Sergeenko" Date: Tue, 24 May 2022 11:41:16 +0400 Subject: [PATCH 2/2] [pull/692] - fix tests, fix json display value --- .../rejson-details/JSONScalar/JSONScalar.tsx | 12 +- .../rejson-details/RejsonDetailsWrapper.tsx | 5 +- redisinsight/ui/src/slices/browser/rejson.ts | 5 +- .../ui/src/slices/interfaces/instances.ts | 306 +++++++++--------- .../ui/src/slices/tests/browser/keys.spec.ts | 6 - 5 files changed, 166 insertions(+), 168 deletions(-) diff --git a/redisinsight/ui/src/pages/browser/components/rejson-details/JSONScalar/JSONScalar.tsx b/redisinsight/ui/src/pages/browser/components/rejson-details/JSONScalar/JSONScalar.tsx index c7c6ee382c..18a0639a82 100644 --- a/redisinsight/ui/src/pages/browser/components/rejson-details/JSONScalar/JSONScalar.tsx +++ b/redisinsight/ui/src/pages/browser/components/rejson-details/JSONScalar/JSONScalar.tsx @@ -58,17 +58,17 @@ const JSONScalar = (props: Props) => { path = keyName.includes('"') ? `${parentPath}['${keyName}']` : `${parentPath}["${keyName}"]` } - let changedValue = value + let val = value if (value === null) { - changedValue = JSON.stringify(value) + val = JSON.stringify(value) } if (typeof value === 'string') { - changedValue = `"${value}"` + val = `"${value}"` } - setChangedValue(changedValue) + setChangedValue(val) setPath(path) - }, [parentPath, keyName]) + }, [parentPath, keyName, value]) const validateJSONValue = (value: JSONScalarValue) => { let error: string = '' @@ -208,7 +208,7 @@ const JSONScalar = (props: Props) => { updateLoading={false} showPopover={(item) => setDeleting(`${item}scalar`)} handleDeleteItem={() => handleSubmitRemoveKey(path, keyName.toString())} - /> + /> diff --git a/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx b/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx index ee956655ad..6ca3a2d8ec 100644 --- a/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx +++ b/redisinsight/ui/src/pages/browser/components/rejson-details/RejsonDetailsWrapper.tsx @@ -68,14 +68,15 @@ const RejsonDetailsWrapper = () => { return (
- {loading ? ( + {loading && ( - ) : ( + )} + {!(loading && data === undefined) && ( ; - provider?: string; - id: string; - endpoints?: Nullable; - connectionType?: ConnectionType; - lastConnection?: Date; - password?: Nullable; - username?: Nullable; - name?: string; - tls?: TlsSettings; - tlsClientAuthRequired?: boolean; - tlsClientCertId?: number | undefined; - verifyServerCert?: boolean; - caCertName?: string; - authUsername?: Nullable; - authPass?: Nullable; - isDeleting?: boolean; - sentinelMaster?: SentinelMasterDto; - modules: RedisModuleDto[]; - isRediStack?: boolean; + host: string + port: number + nameFromProvider?: Nullable + provider?: string + id: string + endpoints?: Nullable + connectionType?: ConnectionType + lastConnection?: Date + password?: Nullable + username?: Nullable + name?: string + tls?: TlsSettings + tlsClientAuthRequired?: boolean + tlsClientCertId?: number | undefined + verifyServerCert?: boolean + caCertName?: string + authUsername?: Nullable + authPass?: Nullable + isDeleting?: boolean + sentinelMaster?: SentinelMasterDto + modules: RedisModuleDto[] + isRediStack?: boolean } export enum ConnectionType { @@ -52,55 +52,55 @@ export const CONNECTION_TYPE_DISPLAY = Object.freeze({ }) export interface Endpoints { - host: string; - port: number; + host: string + port: number } export interface InstanceRedisCluster { - host: string; - port: number; - uid: number; - name: string; - id?: number; - dnsName: string; - address: string; - status: InstanceRedisClusterStatus; - modules: RedisDefaultModules[]; - tls: boolean; - options: any; - message?: string; - uidAdded?: number; - statusAdded?: AddRedisDatabaseStatus; - messageAdded?: string; - databaseDetails?: InstanceRedisCluster; + host: string + port: number + uid: number + name: string + id?: number + dnsName: string + address: string + status: InstanceRedisClusterStatus + modules: RedisDefaultModules[] + tls: boolean + options: any + message?: string + uidAdded?: number + statusAdded?: AddRedisDatabaseStatus + messageAdded?: string + databaseDetails?: InstanceRedisCluster } export interface InstanceRedisCloud { - accessKey: string; - secretKey: string; - credentials: Nullable; - account: Nullable; - host: string; - port: number; + accessKey: string + secretKey: string + credentials: Nullable + account: Nullable + host: string + port: number uid: number; - name: string; - id?: number; - dnsName: string; - address: string; - status: InstanceRedisClusterStatus; - modules: RedisDefaultModules[]; - tls: boolean; - options: any; - message?: string; - publicEndpoint?: string; - databaseId: number; - databaseIdAdded?: number; - subscriptionId?: number; - subscriptionName: string; - subscriptionIdAdded?: number; - statusAdded?: AddRedisDatabaseStatus; - messageAdded?: string; - databaseDetails?: InstanceRedisCluster; + name: string + id?: number + dnsName: string + address: string + status: InstanceRedisClusterStatus + modules: RedisDefaultModules[] + tls: boolean + options: any + message?: string + publicEndpoint?: string + databaseId: number + databaseIdAdded?: number + subscriptionId?: number + subscriptionName: string + subscriptionIdAdded?: number + statusAdded?: AddRedisDatabaseStatus + messageAdded?: string + databaseDetails?: InstanceRedisCluster } export interface IBulkOperationResult { @@ -185,16 +185,16 @@ export enum InstanceRedisClusterStatus { } export interface TlsSettings { - caCertId?: string; - clientCertPairId?: string; - verifyServerCert?: boolean; + caCertId?: string + clientCertPairId?: string + verifyServerCert?: boolean } export interface ClusterNode { - host: string; - port: number; - role?: 'slave' | 'master'; - slot?: number; + host: string + port: number + role?: 'slave' | 'master' + slot?: number } export enum RedisCloudSubscriptionStatus { @@ -214,66 +214,66 @@ export const RedisCloudSubscriptionStatusText = Object.freeze({ }) export interface RedisCloudSubscription { - id: number; - name: string; - numberOfDatabases: number; - provider: string; - region: string; - status: RedisCloudSubscriptionStatus; + id: number + name: string + numberOfDatabases: number + provider: string + region: string + status: RedisCloudSubscriptionStatus } export interface DatabaseConfigInfo { - version: string; - totalKeys?: Nullable; - usedMemory?: Nullable; - connectedClients?: Nullable; - opsPerSecond?: Nullable; - networkInKbps?: Nullable; - networkOutKbps?: Nullable; - cpuUsagePercentage?: Nullable; + version: string + totalKeys?: Nullable + usedMemory?: Nullable + connectedClients?: Nullable + opsPerSecond?: Nullable + networkInKbps?: Nullable + networkOutKbps?: Nullable + cpuUsagePercentage?: Nullable } export interface InitialStateInstances { - loading: boolean; - error: string; - data: Instance[]; - loadingChanging: boolean; - errorChanging: string; - changedSuccessfully: boolean; - deletedSuccessfully: boolean; - connectedInstance: Instance; - instanceOverview: DatabaseConfigInfo; + loading: boolean + error: string + data: Instance[] + loadingChanging: boolean + errorChanging: string + changedSuccessfully: boolean + deletedSuccessfully: boolean + connectedInstance: Instance + instanceOverview: DatabaseConfigInfo } export interface InitialStateCluster { - loading: boolean; - data: Nullable; - dataAdded: InstanceRedisCluster[]; - error: string; - credentials: Nullable; + loading: boolean + data: Nullable + dataAdded: InstanceRedisCluster[] + error: string + credentials: Nullable } export interface InitialStateCloud { - loading: boolean; - data: Nullable; - dataAdded: InstanceRedisCloud[]; - error: string; - credentials: Nullable; - subscriptions: Nullable; + loading: boolean + data: Nullable + dataAdded: InstanceRedisCloud[] + error: string + credentials: Nullable + subscriptions: Nullable account: { - data: Nullable; - error: string; - }; - loaded: ILoadedCloud; + data: Nullable + error: string + } + loaded: ILoadedCloud } export interface InitialStateSentinel { - loading: boolean; - instance: Nullable; - data: ModifiedSentinelMaster[]; - statuses: AddSentinelMasterResponse[]; - error: string; - loaded: ILoadedSentinel; + loading: boolean + instance: Nullable + data: ModifiedSentinelMaster[] + statuses: AddSentinelMasterResponse[] + error: string + loaded: ILoadedSentinel } export enum LoadedCloud { @@ -288,42 +288,42 @@ export enum LoadedSentinel { } export interface ILoadedCloud { - [LoadedCloud.Subscriptions]?: boolean; - [LoadedCloud.Instances]?: boolean; - [LoadedCloud.InstancesAdded]?: boolean; + [LoadedCloud.Subscriptions]?: boolean + [LoadedCloud.Instances]?: boolean + [LoadedCloud.InstancesAdded]?: boolean } export interface ILoadedSentinel { - [LoadedSentinel.Masters]?: boolean; - [LoadedSentinel.MastersAdded]?: boolean; + [LoadedSentinel.Masters]?: boolean + [LoadedSentinel.MastersAdded]?: boolean } export interface ModifiedGetSetMembersResponse extends GetSetMembersResponse { - key?: string; - match?: string; + key?: string + match?: string } export interface ModifiedZsetMembersResponse extends SearchZSetMembersResponse { - key?: string; - match?: string; + key?: string + match?: string } export interface ModifiedGetHashMembersResponse extends GetHashFieldsResponse { - key?: string; - match?: string; + key?: string + match?: string } export interface ModifiedSentinelMaster extends AddSentinelMasterDto { - id?: string; - alias?: string; - host?: string; - port?: string; - username?: string; - password?: string; - loading?: boolean; - message?: string; - status?: AddRedisDatabaseStatus; - error?: string | object; + id?: string + alias?: string + host?: string + port?: string + username?: string + password?: string + loading?: boolean + message?: string + status?: AddRedisDatabaseStatus + error?: string | object } export interface ModifiedGetListElementsResponse @@ -339,29 +339,33 @@ export interface InitialStateSet { data: ModifiedGetSetMembersResponse; } +export interface GetRejsonRlResponse extends GetRejsonRlResponseDto { + data: Maybe +} + export interface InitialStateRejson { - loading: boolean; - error: string; - data: GetRejsonRlResponseDto; + loading: boolean + error: string + data: GetRejsonRlResponse } export interface ICredentialsRedisCluster { - host: string; - port: number; - username: string; - password: string; + host: string + port: number + username: string + password: string } export interface RedisCloudAccount { - accountId: Nullable; - accountName: Nullable; - ownerEmail: Nullable; - ownerName: Nullable; + accountId: Nullable + accountName: Nullable + ownerEmail: Nullable + ownerName: Nullable } export interface ICredentialsRedisCloud { - accessKey: Nullable; - secretKey: Nullable; + accessKey: Nullable + secretKey: Nullable } export enum InstanceType { diff --git a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts index 04a60eab10..298948ba4a 100644 --- a/redisinsight/ui/src/slices/tests/browser/keys.spec.ts +++ b/redisinsight/ui/src/slices/tests/browser/keys.spec.ts @@ -1015,7 +1015,6 @@ describe('keys slice', () => { const expectedActions = [ addKey(), addKeySuccess(), - defaultSelectedKeyAction(), addMessageNotification(successMessages.ADDED_NEW_KEY(data.keyName)), ] expect(store.getActions()).toEqual(expectedActions) @@ -1040,7 +1039,6 @@ describe('keys slice', () => { const expectedActions = [ addKey(), addKeySuccess(), - defaultSelectedKeyAction(), addMessageNotification(successMessages.ADDED_NEW_KEY(data.keyName)), ] expect(store.getActions()).toEqual(expectedActions) @@ -1065,7 +1063,6 @@ describe('keys slice', () => { const expectedActions = [ addKey(), addKeySuccess(), - defaultSelectedKeyAction(), addMessageNotification(successMessages.ADDED_NEW_KEY(data.keyName)), ] expect(store.getActions()).toEqual(expectedActions) @@ -1090,7 +1087,6 @@ describe('keys slice', () => { const expectedActions = [ addKey(), addKeySuccess(), - defaultSelectedKeyAction(), addMessageNotification(successMessages.ADDED_NEW_KEY(data.keyName)), ] expect(store.getActions()).toEqual(expectedActions) @@ -1116,7 +1112,6 @@ describe('keys slice', () => { const expectedActions = [ addKey(), addKeySuccess(), - defaultSelectedKeyAction(), addMessageNotification(successMessages.ADDED_NEW_KEY(data.keyName)), ] expect(store.getActions()).toEqual(expectedActions) @@ -1141,7 +1136,6 @@ describe('keys slice', () => { const expectedActions = [ addKey(), addKeySuccess(), - defaultSelectedKeyAction(), addMessageNotification(successMessages.ADDED_NEW_KEY(data.keyName)), ] expect(store.getActions()).toEqual(expectedActions)