Skip to content

Commit ff2e8f3

Browse files
committed
#RIVS-289 - Decompressors not applied after adding new database
1 parent 7e7b160 commit ff2e8f3

File tree

11 files changed

+47
-8
lines changed

11 files changed

+47
-8
lines changed

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export async function activate(context: vscode.ExtensionContext) {
159159

160160
vscode.commands.registerCommand('RedisForVSCode.addDatabaseClose', (args) => {
161161
WebviewPanel.getInstance({ viewId: ViewId.AddDatabase }).dispose()
162-
sidebarProvider.view?.webview.postMessage({ action: 'RefreshTree', data: args })
162+
sidebarProvider.view?.webview.postMessage({ action: 'AddDatabase', data: args })
163163
}),
164164

165165
vscode.commands.registerCommand('RedisForVSCode.editDatabaseClose', (args) => {

src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export const handleMessage = async (message: any = {}) => {
5353
vscode.commands.executeCommand('RedisForVSCode.addDatabase')
5454
break
5555
case 'CloseAddDatabase':
56-
vscode.commands.executeCommand('RedisForVSCode.addDatabaseClose')
56+
vscode.commands.executeCommand('RedisForVSCode.addDatabaseClose', message.data)
5757
break
5858
case 'CloseEditDatabase':
5959
vscode.commands.executeCommand('RedisForVSCode.editDatabaseClose', message.data)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { useDatabasesStore } from 'uiSrc/store'
2+
3+
export const addDatabaseAction = (message: any) => {
4+
if (message.data?.database?.id) {
5+
useDatabasesStore.getState().addDatabaseToList(message.data?.database!)
6+
}
7+
}

src/webviews/src/actions/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export { setSelectedKeyAction } from './setSelectedKeyAction'
33
export { setDatabaseAction } from './setDatabaseAction'
44
export { processCliAction } from './processCliAction'
55
export { refreshTreeAction } from './refreshTreeAction'
6+
export { addDatabaseAction } from './addDatabaseAction'

src/webviews/src/constants/vscode/vscode.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export enum VscodeMessageAction {
1010
AddCli = 'AddCli',
1111
SelectKey = 'SelectKey',
1212
RefreshTree = 'RefreshTree',
13+
AddDatabase = 'AddDatabase',
1314
CloseKey = 'CloseKey',
1415
CloseKeyAndRefresh = 'CloseKeyAndRefresh',
1516
EditKeyName = 'EditKeyName',

src/webviews/src/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
selectKeyAction,
1919
setDatabaseAction,
2020
refreshTreeAction,
21+
addDatabaseAction,
2122
} from './actions'
2223
import { MonacoLanguages } from './components'
2324

@@ -52,6 +53,9 @@ document.addEventListener('DOMContentLoaded', () => {
5253
case VscodeMessageAction.RefreshTree:
5354
refreshTreeAction(message)
5455
break
56+
case VscodeMessageAction.AddDatabase:
57+
addDatabaseAction(message)
58+
break
5559
case VscodeMessageAction.EditDatabase:
5660
fetchCerts(() => {
5761
fetchEditedDatabase(message?.data?.database as SetDatabaseAction['data']['database'])

src/webviews/src/interfaces/vscode/api.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ export interface SetDatabaseAction {
3232
| VscodeMessageAction.CloseEditDatabase
3333
| VscodeMessageAction.RefreshTree
3434
| VscodeMessageAction.SetDatabase
35+
| VscodeMessageAction.CloseAddDatabase
36+
| VscodeMessageAction.AddDatabase
3537
data: {
3638
database: Database
3739
}
@@ -73,8 +75,7 @@ export interface SelectedKeyCloseAction {
7375
}
7476

7577
export interface NoDataAction {
76-
action: VscodeMessageAction.CloseAddDatabase
77-
| VscodeMessageAction.OpenAddDatabase
78+
action: VscodeMessageAction.OpenAddDatabase
7879
}
7980

8081
export interface CloseAddKeyAction {

src/webviews/src/modules/manual-connection/ManualConnection.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ const ManualConnection = (props: Props) => {
6464
createDatabaseStandalone(payload, onMastersSentinelFetched, onDbAdded)
6565
}
6666

67-
const onDbAdded = () => {
68-
vscodeApi.postMessage({ action: VscodeMessageAction.CloseAddDatabase })
67+
const onDbAdded = (database: Database) => {
68+
vscodeApi.postMessage({ action: VscodeMessageAction.CloseAddDatabase, data: { database } })
6969
}
7070

7171
const onDbEdited = (database: Database) => {

src/webviews/src/store/hooks/use-databases-store/interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ export interface DatabasesActions {
107107
loadDatabasesSuccess: (data: Database[]) => void
108108
setDatabaseToList: (database: Database) => void
109109
setEditDatabase: (data: Database) => void
110+
addDatabaseToList: (data: Database) => void
110111
setConnectedDatabase: (data: Database) => void
111112
resetConnectedDatabase: () => void
112113
getDatabaseOverviewSuccess: (data: DatabaseOverview) => void

src/webviews/src/store/hooks/use-databases-store/useDatabasesStore.spec.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,26 @@ describe('useDatabasesStore', () => {
142142
})
143143
})
144144

145+
describe('addDatabaseToList', () => {
146+
it('should properly add database to the list of databases', () => {
147+
const { addDatabaseToList, loadDatabasesSuccess } = useDatabasesStore.getState()
148+
const mockCompressor = 'zstd'
149+
150+
// set databases
151+
loadDatabasesSuccess(databases)
152+
153+
const database = {
154+
...databases[1],
155+
compressor: mockCompressor,
156+
}
157+
158+
addDatabaseToList(database)
159+
160+
// Assert
161+
expect(useDatabasesStore.getState().data[databases.length].compressor).toEqual(mockCompressor)
162+
})
163+
})
164+
145165
describe('thunks', () => {
146166
describe('fetchDatabases', () => {
147167
it('call both fetchDatabases and loadDatabasesSuccess when fetch is successed', async () => {

src/webviews/src/store/hooks/use-databases-store/useDatabasesStore.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ export const useDatabasesStore = create<DatabasesStore & DatabasesActions>()(
5959
state.data = databases
6060
}),
6161

62+
addDatabaseToList: (database: Database) => set((state) => {
63+
state.data.push(database)
64+
}),
65+
6266
setEditDatabase: (editDatabase: Database) => set({ editDatabase }),
6367
setConnectedDatabase: (connectedDatabase: Database) => set({ connectedDatabase }),
6468
resetConnectedDatabase: () => set({ connectedDatabase: cloneDeep(initialDatabasesState.connectedDatabase) }),
@@ -96,7 +100,7 @@ export const fetchDatabases = (onSuccess?: () => void) => {
96100
export const createDatabaseStandalone = (
97101
payload: Database,
98102
onRedirectToSentinel?: () => void,
99-
onSuccess?: (id: string) => void,
103+
onSuccess?: (database: Database) => void,
100104
) => {
101105
useDatabasesStore.setState(async (state) => {
102106
state.processDatabase()
@@ -108,7 +112,7 @@ export const createDatabaseStandalone = (
108112

109113
showInformationMessage(successMessages.ADDED_NEW_DATABASE(payload.name ?? '').title)
110114

111-
onSuccess?.(data.id)
115+
onSuccess?.(data)
112116
}
113117
} catch (error) {
114118
showErrorMessage(getApiErrorMessage(error as AxiosError))

0 commit comments

Comments
 (0)