Skip to content

Commit ab12859

Browse files
committed
default web initial value to current media query value
1 parent b6db28c commit ab12859

3 files changed

Lines changed: 21 additions & 21 deletions

File tree

src/targets/native/index.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ import { useReduceMotion } from './';
1212

1313
test('returns true if "Reduce motion" is enabled', async () => {
1414
AccessibilityInfo.isReduceMotionEnabled.mockResolvedValue(true);
15-
const { result, waitForNextUpdate } = renderHook(() => useReduceMotion());
15+
const { result, waitForNextUpdate } = renderHook(useReduceMotion);
1616
expect(result.current).toBe(false);
1717
await waitForNextUpdate();
1818
expect(result.current).toBe(true);
1919
});
2020

2121
test('returns false if "Reduce motion" is disabled', async () => {
2222
AccessibilityInfo.isReduceMotionEnabled.mockResolvedValue(false);
23-
const { result } = renderHook(() => useReduceMotion());
23+
const { result } = renderHook(useReduceMotion);
2424
expect(result.current).toBe(false);
2525
});

src/targets/web/index.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,18 @@ if (
1414
}
1515

1616
export function useReduceMotion() {
17-
const [matches, setMatch] = React.useState(false);
18-
const mediaQuery = React.useRef();
17+
const [matches, setMatch] = React.useState(
18+
window.matchMedia('(prefers-reduced-motion: reduce)')
19+
);
1920
React.useEffect(() => {
20-
mediaQuery.current = window.matchMedia('(prefers-reduced-motion: reduce)');
21+
const mq = window.matchMedia('(prefers-reduced-motion: reduce)');
2122
const handleChange = () => {
22-
setMatch(mediaQuery.current.matches);
23+
setMatch(mq.matches);
2324
};
2425
handleChange();
25-
mediaQuery.current.addEventListener('change', handleChange);
26+
mq.addEventListener('change', handleChange);
2627
return () => {
27-
mediaQuery.current.removeEventListener('change', handleChange);
28+
mq.removeEventListener('change', handleChange);
2829
};
2930
}, []);
3031
return matches;

src/targets/web/index.test.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ const mqDefaults = {
99
removeEventListener: jest.fn(),
1010
};
1111

12-
window.matchMedia = jest.fn().mockImplementationOnce(query => {
13-
return {
14-
...mqDefaults,
15-
matches: true,
16-
media: query,
17-
};
18-
});
19-
2012
test('returns true if "Reduce motion" is enabled', async () => {
21-
const { result } = renderHook(() => useReduceMotion());
13+
window.matchMedia = jest.fn().mockImplementation(query => {
14+
return {
15+
...mqDefaults,
16+
matches: true,
17+
media: query,
18+
};
19+
});
20+
21+
const { result } = renderHook(useReduceMotion);
2222

2323
expect(result.current).toBe(true);
2424
});
@@ -31,14 +31,14 @@ test('returns false if "Reduce motion" is disabled', async () => {
3131
};
3232
});
3333

34-
const { result } = renderHook(() => useReduceMotion());
34+
const { result } = renderHook(useReduceMotion);
3535

3636
expect(result.current).toBe(false);
3737
});
3838

3939
test('handles change of "prefers-reduce-motion" media query value', async () => {
4040
let change;
41-
const mockMedia = jest.fn().mockImplementationOnce(query => {
41+
window.matchMedia = jest.fn().mockImplementation(query => {
4242
return {
4343
...mqDefaults,
4444
matches: false,
@@ -49,9 +49,8 @@ test('handles change of "prefers-reduce-motion" media query value', async () =>
4949
media: query,
5050
};
5151
});
52-
window.matchMedia = mockMedia;
5352

54-
const { result } = renderHook(() => useReduceMotion());
53+
const { result } = renderHook(useReduceMotion);
5554

5655
expect(result.current).toBe(false);
5756

0 commit comments

Comments
 (0)