Skip to content
Snippets Groups Projects
Commit b210a169 authored by Leonardo's avatar Leonardo
Browse files

fix: update database error of read only property being changed

parent 7cfb3663
No related branches found
Tags v1.121.0
1 merge request!476fix: update database error of read only property being changed
Pipeline #146701 failed
import { wsTestDatabaseConnection, wsCreateState, wsUpdateState, useAuthCache, useAppDispatch, useProjects } from '../../data-access';
import {
wsTestDatabaseConnection,
wsCreateState,
wsUpdateState,
useAuthCache,
useAppDispatch,
useProjects,
DatabaseStatus,
} from '../../data-access';
import { useState } from 'react';
import { addNewQuery, addSaveState, selectSaveState, setActiveQueryID, testedSaveState } from '../../data-access/store/sessionSlice';
import { addSaveState, selectSaveState, testedSaveState } from '../../data-access/store/sessionSlice';
import { setSchemaLoading } from '../../data-access/store/schemaSlice';
import { PartialSaveState, SaveState } from 'ts-common';
import { addError } from '@/lib/data-access/store/configSlice';
import { Button } from '@/lib/components';
import { wsAddQuery, wsDeleteQuery, wsUpdateQuery } from '@/lib/data-access/broker';
import { queryAllByAltText } from '@testing-library/react';
import { wsAddQuery, wsUpdateQuery } from '@/lib/data-access/broker';
export type ConnectionStatus = {
updating: boolean;
......@@ -35,22 +41,23 @@ export const useHandleDatabase = () => {
status: 'Testing database connection',
verified: null,
}));
const newSaveStateData = JSON.parse(JSON.stringify(saveStateData)) as PartialSaveState; // undo readonly
const currentProject = project.currentProject;
if (currentProject) {
saveStateData.project = currentProject;
newSaveStateData.project = currentProject;
} else {
saveStateData.project = null;
newSaveStateData.project = null;
}
wsTestDatabaseConnection(saveStateData.dbConnections?.[0], data => {
if (!saveStateData) {
wsTestDatabaseConnection(newSaveStateData.dbConnections?.[0], data => {
if (!newSaveStateData) {
console.error('formData is null');
return;
}
if (saveStateData.userId !== authCache.authentication?.userID && authCache.authentication?.userID) {
if (newSaveStateData.userId !== authCache.authentication?.userID && authCache.authentication?.userID) {
console.error('user_id is not equal to auth.userID');
saveStateData.userId = authCache.authentication.userID;
newSaveStateData.userId = authCache.authentication.userID;
}
if (data && data.status === 'success') {
setConnectionStatus(prevState => ({
......@@ -62,18 +69,17 @@ export const useHandleDatabase = () => {
dispatch(selectSaveState(undefined));
if (type === 'add' || forceAdd) {
// Reset query state, backend should handle creating this anew
const data = JSON.parse(JSON.stringify(saveStateData)) as any; // undo readonly
const queryStateToClone = JSON.parse(JSON.stringify(saveStateData.queryStates ?? {}));
delete data.queryStates;
const queryStateToClone = JSON.parse(JSON.stringify(newSaveStateData.queryStates ?? {}));
delete newSaveStateData.queryStates;
wsCreateState(data, async newSaveState => {
wsCreateState(newSaveStateData, async newSaveState => {
if (!newSaveState) {
dispatch(addError('Failed to create new save state.'));
return;
}
// Only if we are adding a save state that is cloned and contains a queryState
if (saveStateData.queryStates != null) {
if (newSaveStateData.queryStates != null) {
// Clone query state
for (const i in queryStateToClone.openQueryArray) {
const query = queryStateToClone.openQueryArray[i];
......@@ -108,7 +114,7 @@ export const useHandleDatabase = () => {
}
dispatch(addSaveState(newSaveState));
dispatch(testedSaveState(newSaveState.id));
dispatch(testedSaveState({ saveStateID: newSaveState.id, status: DatabaseStatus.untested }));
setConnectionStatus({
updating: false,
status: null,
......@@ -118,9 +124,9 @@ export const useHandleDatabase = () => {
});
} else {
if (data.saveStateID) {
dispatch(testedSaveState(data.saveStateID));
dispatch(testedSaveState({ saveStateID: data.saveStateID, status: DatabaseStatus.untested }));
}
wsUpdateState(saveStateData as SaveState, updatedSaveState => {
wsUpdateState(newSaveStateData as SaveState, updatedSaveState => {
if (!updatedSaveState) {
dispatch(addError('Failed to update save state.'));
return;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment