-
Notifications
You must be signed in to change notification settings - Fork 619
Description
Feature Title
Sync Dark Mode Theme Preference to Server/Database
Feature Description
First, I want to say thank you for including a dark mode option in OpenSign! As someone with very light-sensitive eyes, this feature is incredibly valuable to me.
Currently, the dark mode preference is stored only in the browser's localStorage (via the ThemeToggle component). This means that when a user logs in from a different browser or device, their theme preference is reset to the default light mode.
I'm proposing that the theme preference be persisted to the user's profile on the server (in the contracts_Users collection), similar to how other user preferences like DateFormat and Is12HourTime are already saved via the updatepreferences cloud function.
Current behavior:
- User selects dark mode → stored in
localStorage.setItem("theme", "dark") - User logs in on different device → theme resets to light mode
- User clears browser data → theme preference is lost
Proposed behavior:
- User selects dark mode → saved to server AND localStorage
- User logs in on different device → theme is retrieved from server and applied
- Consistent experience across all browsers and devices
Feature Type
- UI/UX Improvement
Importance
Medium
Additional Context
The existing updatepreferences cloud function in apps/OpenSignServer/cloud/parsefunction/Abortsigndocaliases.js already handles saving user preferences like DateFormat, Is12HourTime, and Language. Adding Theme to this existing pattern would provide a consistent approach to user preference management.
Technical reference:
- Theme toggle component:
apps/OpenSign/src/components/ThemeToggle.jsx - Preferences update:
updatepreferencescloud function
This would be a great quality-of-life improvement for users who work across multiple devices or browsers.
Code of Conduct
- I agree to follow this project's Code of Conduct
- I have searched the existing issues & discussions to make sure that this is not a duplicate.