feat(settings): move Hide IP toggle into Settings modal, persist it
Hide-IP was a sidebar button held only in memory, so it reset on reload. Moved it into the Settings modal Canvas section and persist it to localStorage (new ipDisplay util); the canvas store now seeds hideIp from storage and writes through on toggleHideIp/setHideIp. Settings is now also reachable in standalone (no-backend) builds, with the backend-only status interval guarded so the modal still works there. ha-relevant: yes
This commit is contained in:
@@ -800,6 +800,26 @@ describe('canvasStore', () => {
|
||||
expect(useCanvasStore.getState().nodes).toHaveLength(1)
|
||||
})
|
||||
|
||||
// --- Hide IP preference (persisted to localStorage) ---
|
||||
|
||||
it('toggleHideIp flips the flag and persists it', () => {
|
||||
localStorage.removeItem('homelable.hideIp')
|
||||
useCanvasStore.setState({ hideIp: false })
|
||||
useCanvasStore.getState().toggleHideIp()
|
||||
expect(useCanvasStore.getState().hideIp).toBe(true)
|
||||
expect(localStorage.getItem('homelable.hideIp')).toBe('true')
|
||||
useCanvasStore.getState().toggleHideIp()
|
||||
expect(useCanvasStore.getState().hideIp).toBe(false)
|
||||
expect(localStorage.getItem('homelable.hideIp')).toBe('false')
|
||||
})
|
||||
|
||||
it('setHideIp sets the flag and persists it', () => {
|
||||
localStorage.removeItem('homelable.hideIp')
|
||||
useCanvasStore.getState().setHideIp(true)
|
||||
expect(useCanvasStore.getState().hideIp).toBe(true)
|
||||
expect(localStorage.getItem('homelable.hideIp')).toBe('true')
|
||||
})
|
||||
|
||||
// --- Node resizing (width / height) ---
|
||||
|
||||
it('addNode preserves explicit width and height', () => {
|
||||
|
||||
Reference in New Issue
Block a user