* feat: hide note contents if the protection expires when the protected note is open and wasn't edited for a while
* feat: handle session expiration for opened protected note for both plain advanced editors
* fix: if after canceling session expiry modal only one unprotected note stays selected, show its contents in the editor
* refactor: handle session expiration for opened protected note (move the logic to web client)
* feat: handle the case of selecting "Don't remember" option in session expiry dialog
* test (WIP): add unit tests for protecting opened note after the session has expired
* test: add remaining unit tests
* refactor: move the opened note protection logic to "editor_view"
* refactor: reviewer comments
- don't rely on user signed-in/out status to require authentication for protected note
- remove unnecessary async/awaits
- better wording on ui
* refactor: reviewer's comments:
- use snjs method to check if "Don't remember" option is selected in authentication modal
- move the constant to snjs
- fix eslint error
* refactor: avoid `any` type for `appEvent` payload
* test: add unit tests
* chore: update function name
* refactor: use simpler protection session event types
* refactor: protected access terminology
* refactor: start counting idle timer after every edit (instead of counting by interval in spite of edits)
* test: unit tests
* style: don't give extra brightness to the "View Note"/"Authenticate" button on hover/focus
* chore: bump snjs version
* chore: put snjs "beta" version
* fix: run protection timeout when the note is marked as protected
* chore: snjs version bump
* refactor: immediately lock the note if it's marked as "Protected"
* refactor: rename component, directive and some props
* refactor: remove extra check
* refactor: rename the method
* chore: update snjs version
Co-authored-by: Mo Bitar <me@bitar.io>
* feat: hide note contents if the protection expires when the protected note is open and wasn't edited for a while
* feat: handle session expiration for opened protected note for both plain advanced editors
* fix: if after canceling session expiry modal only one unprotected note stays selected, show its contents in the editor
* refactor: handle session expiration for opened protected note (move the logic to web client)
* feat: handle the case of selecting "Don't remember" option in session expiry dialog
* test (WIP): add unit tests for protecting opened note after the session has expired
* test: add remaining unit tests
* refactor: move the opened note protection logic to "editor_view"
* refactor: reviewer comments
- don't rely on user signed-in/out status to require authentication for protected note
- remove unnecessary async/awaits
- better wording on ui
* refactor: reviewer's comments:
- use snjs method to check if "Don't remember" option is selected in authentication modal
- move the constant to snjs
- fix eslint error
* refactor: avoid `any` type for `appEvent` payload
* test: add unit tests
* chore: update function name
* refactor: use simpler protection session event types
* refactor: protected access terminology
* refactor: start counting idle timer after every edit (instead of counting by interval in spite of edits)
* test: unit tests
* style: don't give extra brightness to the "View Note"/"Authenticate" button on hover/focus
* chore: bump snjs version
Co-authored-by: Mo Bitar <me@bitar.io>
* feat: fetch features and store locally for offline users
* feat: handle success and error cases
* refactor: move offline activation code reading/validation to snjs
* chore: update after renaming snjs function
* fix: correct condition for checking offline users
* feat: let users remove their previous offline keys (WIP)
* refactor: handle setOfflineFeatures function response accordingly
* feat: remove corresponding local data when removing offline key
* fix: use snjs' confirm dialog instead of custom one
* feat: show warning before installing extension from untrusted source
* refactor: move functions for validating external feature url and checking if custom server host was used to snjs
* chore: put correct snjs version
* chore: make `eslint-plugin-react-hooks` in yarn.lock to match the `develop` branch
* chore: deps update
* chore: deps update
* feat: toggleable extensions
* fix: return all themes for quick settings
* chore: bump snjs deps
* feat: Use Switch component for toggle in Quick Settings Menu
* feat: Add toggleableComponents to footer_view
* refactor: Change "components" to "toggleableComponents"
* feat: Add checked state to component toggle in quick settings menu
* feat: Add "Manage subscription" button to Subscription preferences
* Update app/assets/javascripts/preferences/panes/account/subscription/SubscriptionInformation.tsx
Co-authored-by: Mo <mo@standardnotes.org>
* feat: Use convertTimestamp function instead of manual conversion in Subscription Info
Co-authored-by: Mo <mo@standardnotes.org>
* feat: Add new icons
* Revert "feat: Add new icons"
This reverts commit 0acb403fe846dbb2e48fd22de35c3568c3cb4453.
* feat: Add new icons for account menu
* feat: Add new Icons
* feat: Add "currentPane" state to prefs view
* feat: Update account menu to new design
* feat: Add input component with icon & toggle
* fix: sync icon & function
* fix: Fix eye icon
* feat: Create re-usable checkbox
feat: Add "merge local" option
* feat: Allow using className on IconButton
* feat: Add disabled state on input
feat: Make toggle circle
* refactor: Move checkbox to components
* feat: Handle invalid email/password error
* feat: Implement new design for Create Account
* feat: Implement new account menu design
* feat: Add disabled option to IconButton
* feat: Set account menu pane from other component
* feat: Add 2fa account menu pane
feat: Add lock icon
* feat: Remove unnecessary 2FA menu pane
feat: Reset current menu pane on clickOutside
* feat: Change "Log in" to "Sign in"
* feat: Remove sync from footer
* feat: Change "Login" to "Sign in"
feat: Add spinner to "Syncing..."
refactor: Use then-catch-finally for sync
* feat: Use common enableCustomServer state
* feat: Animate account menu closing
* fix: Reset menu pane only after it's closed
* feat: Add keyDown handler to InputWithIcon
* feat: Handle Enter press in inputs
* Update app/assets/javascripts/components/InputWithIcon.tsx
Co-authored-by: Antonella Sgarlatta <antsgar@gmail.com>
* Update app/assets/javascripts/components/InputWithIcon.tsx
Co-authored-by: Antonella Sgarlatta <antsgar@gmail.com>
* refactor: Use server state from AccountMenuState
* Update app/assets/javascripts/components/AccountMenu/CreateAccount.tsx
Co-authored-by: Antonella Sgarlatta <antsgar@gmail.com>
* Update app/assets/javascripts/components/AccountMenu/ConfirmPassword.tsx
Co-authored-by: Antonella Sgarlatta <antsgar@gmail.com>
* feat: Use common AdvancedOptions
* feat: Add "eye-off" icon and toggle state
* feat: Allow undefined values
* refactor: Remove enableCustomServer state
* feat: Persist server option state
* feat: Add bottom-100 and cursor-auto util classes
refactor: Use bottom-100 and cursor-auto classes
* refactor: Invert ternary operator
* refactor: Remove unused imports
* refactor: Use toggled as prop instead of state
* refactor: Change "Log in/out" to "Sign in/out"
* refactor: Change "Login" to "Sign in"
* refactor: Remove hardcoded width/height
* refactor: Use success class
* feat: Remove hardcoded width & height from svg
* fix: Fix chevron-down icon
Co-authored-by: Antonella Sgarlatta <antsgar@gmail.com>
Co-authored-by: Antonella Sgarlatta <antonella@standardnotes.org>