-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Saving settings to local storage #3017
Conversation
try { | ||
const newSettings: any = {}; | ||
const loadedSettings = JSON.parse(localStorage.getItem('clientSettings') as string); | ||
for (const [sectionKey, section] of Object.entries(settings)) { | ||
for (const [key, value] of Object.entries(section)) { | ||
let settedValue = value; | ||
if (sectionKey in loadedSettings && key in loadedSettings[sectionKey]) { | ||
settedValue = loadedSettings[sectionKey][key]; | ||
} | ||
if (!(sectionKey in newSettings)) newSettings[sectionKey] = {}; | ||
newSettings[sectionKey][key] = settedValue; | ||
} | ||
} | ||
dispatch(setSettings(newSettings)); | ||
} catch { | ||
notification.error({ | ||
message: 'Failed to load settings from local storage', | ||
}); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not to do it in defaultState for settings reducer?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First of all, code for saving and restoring settings is placed in the same place. Secondly, we will try to load settings after first render, so it's a very small time gain for the first render, i guess. And it will be easier to modify this solution for server side config loading, for example.
<Tooltip title='Will save settings from this page and appearance settings on standard workspace page in browser'> | ||
<Button type='primary' onClick={onSaveSettings}> | ||
Save | ||
</Button> | ||
</Tooltip> | ||
<Button type='default' onClick={onClose}> | ||
Close | ||
</Button> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to update dock. Do we need button close? We have "X" and also click everywhere out of the modal closes the modal
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's default behaviour for the modal element.
@TOsmanov, hi, can you adjust documentation according this new feature, please? |
Motivation and context
This PR provide saving user settings to local storage. Resolved #1209
How has this been tested?
Manually
Checklist
develop
branch- [ ] I have updated the documentation accordingly- [ ] I have added tests to cover my changescvat-core, cvat-data and cvat-ui)
License
Feel free to contact the maintainers if that's a concern.