Skip to content

Commit

Permalink
fix: set preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
hamed-musallam committed Jun 26, 2023
1 parent 0bc6183 commit 24d7613
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 29 deletions.
42 changes: 18 additions & 24 deletions src/component/hooks/useSaveSettings.tsx
@@ -1,6 +1,6 @@
import { Formik, FormikProps } from 'formik';
import { Workspace } from 'nmr-load-save';
import { useRef, forwardRef, useState } from 'react';
import { useRef, forwardRef } from 'react';
import { Modal, useOnOff } from 'react-science/ui';
import * as Yup from 'yup';

Expand Down Expand Up @@ -46,33 +46,33 @@ const WorkspaceAddForm = forwardRef<FormikProps<any>, any>(
export function useSaveSettings() {
const alert = useAlert();
const [isOpenDialog, openDialog, closeDialog] = useOnOff(false);
const [values, setValues] = useState<Partial<Workspace> | undefined>(
undefined,
);
const settingsRef = useRef<Workspace>();
const { dispatch, current } = usePreferences();
const formRef = useRef<FormikProps<any>>(null);
function addNewWorkspace(workspaceName, values) {
dispatch({
type: 'ADD_WORKSPACE',
payload: {
workspace: workspaceName,
data: values,
},
});
closeDialog();
alert.success('Preferences saved successfully');
function addNewWorkspace({ workspaceName }) {
if (settingsRef.current) {
dispatch({
type: 'ADD_WORKSPACE',
payload: {
workspaceKey: workspaceName,
data: settingsRef.current,
},
});
closeDialog();
alert.success('Preferences saved successfully');
}
}

return {
saveSettings: (values: Partial<Workspace> = {}) => {
setValues(values);
saveSettings: (values?: Partial<Workspace>) => {
settingsRef.current = values as Workspace;

if (current.source !== 'user') {
openDialog();
} else {
dispatch({
type: 'SET_PREFERENCES',
payload: values,
...(values && { payload: values }),
});
closeDialog();
}
Expand All @@ -82,13 +82,7 @@ export function useSaveSettings() {
message:
'Please enter a new user workspace name in order to save your changes locally',
render: (props) => (
<WorkspaceAddForm
{...props}
onSave={({ workspaceName }) =>
addNewWorkspace(workspaceName, values)
}
ref={formRef}
/>
<WorkspaceAddForm {...props} onSave={addNewWorkspace} ref={formRef} />
),
buttons: [
{
Expand Down
2 changes: 1 addition & 1 deletion src/component/modal/setting/GeneralSettings.tsx
Expand Up @@ -168,7 +168,7 @@ function GeneralSettingsModal({ height }: GeneralSettingsModalProps) {
dispatch({
type: 'ADD_WORKSPACE',
payload: {
workspace: name,
workspaceKey: name,
data: refForm.current?.values,
},
});
Expand Down
4 changes: 2 additions & 2 deletions src/component/reducer/preferences/actions/addWorkspace.ts
Expand Up @@ -14,7 +14,7 @@ export function addWorkspace(
draft: Draft<PreferencesState>,
action: AddWorkspaceAction,
) {
const { workspace: workspaceName, data } = action.payload;
const { workspaceKey, data } = action.payload;

const newWorkSpace = lodashMerge(
{},
Expand All @@ -23,7 +23,7 @@ export function addWorkspace(
data ? data : draft.workspaces[draft.workspace.current],
{
version: 1,
label: workspaceName,
label: workspaceKey,
source: 'user',
},
);
Expand Down
6 changes: 4 additions & 2 deletions src/component/reducer/preferences/preferencesReducer.ts
Expand Up @@ -55,7 +55,9 @@ type InitPreferencesAction = ActionType<
dispatch: any;
}
>;
type SetPreferencesAction = ActionType<'SET_PREFERENCES', Partial<Workspace>>;
type SetPreferencesAction =
| ActionType<'SET_PREFERENCES', Partial<Workspace>>
| ActionType<'SET_PREFERENCES', void>;
type SetPanelsPreferencesAction = ActionType<
'SET_PANELS_PREFERENCES',
{ key: string; value: string }
Expand All @@ -72,7 +74,7 @@ export type WorkspaceAction = ActionType<
>;
export type AddWorkspaceAction = ActionType<
'ADD_WORKSPACE',
{ workspace: string; data?: Omit<Workspace, 'version' | 'label'> }
{ workspaceKey: string; data?: Omit<Workspace, 'version' | 'label'> }
>;
export type ApplyGeneralPreferences = ActionType<
'APPLY_General_PREFERENCES',
Expand Down

0 comments on commit 24d7613

Please sign in to comment.