Skip to content

Commit c232111

Browse files
[infra] updated naming for media capabilities hook considering its context
1 parent 5f7a6b4 commit c232111

File tree

4 files changed

+44
-44
lines changed

4 files changed

+44
-44
lines changed

README.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { useNetworkStatus } from 'react-adaptive-hooks/network';
2929
import { useSaveData } from 'react-adaptive-hooks/save-data';
3030
import { useHardwareConcurrency } from 'react-adaptive-hooks/hardware-concurrency';
3131
import { useMemoryStatus } from 'react-adaptive-hooks/memory';
32-
import { useMediaCapabilities } from 'react-adaptive-hooks/media-capabilities';
32+
import { useMediaCapabilitiesDecodingInfo } from 'react-adaptive-hooks/media-capabilities';
3333
```
3434

3535
and then use them in your components. Examples for each hook and utility can be found below:
@@ -160,16 +160,16 @@ const { deviceMemory } = useMemoryStatus(initialMemoryStatus);
160160

161161
### Media Capabilities
162162

163-
`useMediaCapabilities` utility for adapting based on the user's device media capabilities.
163+
`useMediaCapabilitiesDecodingInfo` utility for adapting based on the user's device media capabilities.
164164

165165
**Use case:** this hook can be used to check if we can play a certain content type. For example, Safari does not support WebM so we want to fallback to MP4 but if Safari at some point does support WebM it will automatically load WebM videos.
166166

167167
```js
168168
import React from 'react';
169169

170-
import { useMediaCapabilities } from 'react-adaptive-hooks/media-capabilities';
170+
import { useMediaCapabilitiesDecodingInfo } from 'react-adaptive-hooks/media-capabilities';
171171

172-
const webmMediaConfig = {
172+
const webmMediaDecodingConfig = {
173173
type: 'file', // 'record', 'transmission', or 'media-source'
174174
video: {
175175
contentType: 'video/webm;codecs=vp8', // valid content type
@@ -180,15 +180,15 @@ const webmMediaConfig = {
180180
}
181181
};
182182

183-
const initialMediaCapabilities = {showWarning: true};
183+
const initialMediaCapabilitiesInfo = {showWarning: true};
184184

185185
const MyComponent = ({ videoSources }) => {
186-
const { mediaCapabilities } = useMediaCapabilities(webmMediaConfig, initialMediaCapabilities);
186+
const { mediaCapabilitiesInfo } = useMediaCapabilitiesDecodingInfo(webmMediaDecodingConfig, initialMediaCapabilitiesInfo);
187187

188188
return (
189189
<div>
190-
<video src={mediaCapabilities.supported ? videoSources.webm : videoSources.mp4} controls>...</video>
191-
{ mediaCapabilities.showWarning && (
190+
<video src={mediaCapabilitiesInfo.supported ? videoSources.webm : videoSources.mp4} controls>...</video>
191+
{ mediaCapabilitiesInfo.showWarning && (
192192
<div class='muted'>
193193
Defaulted to mp4.
194194
Couldn't test webm support,
@@ -200,7 +200,7 @@ const MyComponent = ({ videoSources }) => {
200200
};
201201
```
202202
203-
This hook accepts a [media configuration](https://developer.mozilla.org/en-US/docs/Web/API/MediaConfiguration) object argument and an optional `initialMediaCapabilities` object argument, which can be used to provide a `mediaCapabilities` state value when the user's browser does not support the relevant [Media Capabilities API](https://developer.mozilla.org/en-US/docs/Web/API/Media_Capabilities_API) or no media configuration was given.
203+
This utility accepts a [MediaDecodingConfiguration](https://developer.mozilla.org/en-US/docs/Web/API/MediaDecodingConfiguration) object argument and an optional `initialMediaCapabilitiesInfo` object argument, which can be used to provide a `mediaCapabilitiesInfo` state value when the user's browser does not support the relevant [Media Capabilities API](https://developer.mozilla.org/en-US/docs/Web/API/Media_Capabilities_API) or no media configuration was given.
204204

205205
### Adaptive Code-loading & Code-splitting
206206

index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ export { useNetworkStatus } from './network';
22
export { useSaveData } from './save-data';
33
export { useMemoryStatus } from './memory';
44
export { useHardwareConcurrency } from './hardware-concurrency';
5-
export { useMediaCapabilities } from './media-capabilities';
5+
export { useMediaCapabilitiesDecodingInfo } from './media-capabilities';

media-capabilities/index.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,22 @@
1616

1717
const supported = typeof window !== 'undefined' && 'mediaCapabilities' in navigator;
1818

19-
const useMediaCapabilities = (mediaConfig, initialMediaCapabilities = {}) => {
20-
let mediaCapabilities = {
19+
const useMediaCapabilitiesDecodingInfo = (mediaDecodingConfig, initialMediaCapabilitiesInfo = {}) => {
20+
let mediaCapabilitiesInfo = {
2121
supported,
22-
hasMediaConfig: !!mediaConfig
22+
hasMediaDecodingConfig: !!mediaDecodingConfig
2323
};
2424

25-
mediaCapabilities = (mediaCapabilities.supported && mediaCapabilities.hasMediaConfig)
26-
? navigator.mediaCapabilities.decodingInfo(mediaConfig)
25+
mediaCapabilitiesInfo = (mediaCapabilitiesInfo.supported && mediaCapabilitiesInfo.hasMediaDecodingConfig)
26+
? navigator.mediaCapabilities.decodingInfo(mediaDecodingConfig)
2727
: {
28-
...mediaCapabilities,
29-
...initialMediaCapabilities
28+
...mediaCapabilitiesInfo,
29+
...initialMediaCapabilitiesInfo
3030
};
3131

32-
return {mediaCapabilities};
32+
return {mediaCapabilitiesInfo};
3333
};
3434

3535
export {
36-
useMediaCapabilities
36+
useMediaCapabilitiesDecodingInfo
3737
};

media-capabilities/media-capabilities.test.js

+25-25
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import { renderHook } from '@testing-library/react-hooks';
1818

19-
const mediaConfig = {
19+
const mediaDecodingConfig = {
2020
type: 'file',
2121
audio: {
2222
contentType: 'audio/mp3',
@@ -39,65 +39,65 @@ afterEach(function() {
3939
jest.resetModules();
4040
});
4141

42-
describe('useMediaCapabilities', () => {
42+
describe('useMediaCapabilitiesDecodingInfo', () => {
4343
const navigator = window.navigator;
4444

4545
afterEach(() => {
4646
if (!window.navigator) window.navigator = navigator;
4747
});
4848

4949
test('should return supported flag on unsupported platforms', () => {
50-
const { useMediaCapabilities } = require('./');
51-
const { result } = renderHook(() => useMediaCapabilities(mediaConfig));
50+
const { useMediaCapabilitiesDecodingInfo } = require('./');
51+
const { result } = renderHook(() => useMediaCapabilitiesDecodingInfo(mediaDecodingConfig));
5252

53-
expect(result.current.mediaCapabilities).toEqual({hasMediaConfig: true, supported: false});
53+
expect(result.current.mediaCapabilitiesInfo).toEqual({hasMediaDecodingConfig: true, supported: false});
5454
});
5555

56-
test('should return supported and hasMediaConfig flags on unsupported platforms and no config given', () => {
57-
const { useMediaCapabilities } = require('./');
58-
const { result } = renderHook(() => useMediaCapabilities());
56+
test('should return supported and hasMediaDecodingConfig flags on unsupported platforms and no config given', () => {
57+
const { useMediaCapabilitiesDecodingInfo } = require('./');
58+
const { result } = renderHook(() => useMediaCapabilitiesDecodingInfo());
5959

60-
expect(result.current.mediaCapabilities).toEqual({hasMediaConfig: false, supported: false});
60+
expect(result.current.mediaCapabilitiesInfo).toEqual({hasMediaDecodingConfig: false, supported: false});
6161
});
6262

63-
test('should return initialMediaCapabilities for unsupported', () => {
64-
const initialMediaCapabilities = {
63+
test('should return initialMediaCapabilitiesInfo for unsupported', () => {
64+
const initialMediaCapabilitiesInfo = {
6565
supported: true,
6666
smooth: false,
6767
powerEfficient: true
6868
};
69-
const { useMediaCapabilities } = require('./');
70-
const { result } = renderHook(() => useMediaCapabilities(mediaConfig, initialMediaCapabilities));
69+
const { useMediaCapabilitiesDecodingInfo } = require('./');
70+
const { result } = renderHook(() => useMediaCapabilitiesDecodingInfo(mediaDecodingConfig, initialMediaCapabilitiesInfo));
7171

72-
expect(result.current.mediaCapabilities.supported).toBe(true);
73-
expect(result.current.mediaCapabilities.smooth).toEqual(false);
74-
expect(result.current.mediaCapabilities.powerEfficient).toEqual(true);
72+
expect(result.current.mediaCapabilitiesInfo.supported).toBe(true);
73+
expect(result.current.mediaCapabilitiesInfo.smooth).toEqual(false);
74+
expect(result.current.mediaCapabilitiesInfo.powerEfficient).toEqual(true);
7575
});
7676

77-
test('should return hasMediaConfig flag when no config given', () => {
77+
test('should return hasMediaDecodingConfig flag when no config given', () => {
7878
Object.defineProperty(window.navigator, 'mediaCapabilities', {
7979
value: true,
8080
configurable: true,
8181
writable: true
8282
});
83-
const { useMediaCapabilities } = require('./');
84-
const { result } = renderHook(() => useMediaCapabilities());
83+
const { useMediaCapabilitiesDecodingInfo } = require('./');
84+
const { result } = renderHook(() => useMediaCapabilitiesDecodingInfo());
8585

86-
expect(result.current.mediaCapabilities).toEqual({hasMediaConfig: false, supported: true});
86+
expect(result.current.mediaCapabilitiesInfo).toEqual({hasMediaDecodingConfig: false, supported: true});
8787
});
8888

89-
test('should return MediaDecodingConfiguration for given media configuration', () => {
89+
test('should return MediaCapabilitiesInfo for given media decoding configuration', () => {
9090
Object.defineProperty(window.navigator, 'mediaCapabilities', {
9191
value: {
92-
decodingInfo: mediaConfig => mediaCapabilitiesMapper[mediaConfig.audio.contentType]
92+
decodingInfo: mediaDecodingConfig => mediaCapabilitiesMapper[mediaDecodingConfig.audio.contentType]
9393
},
9494
configurable: true,
9595
writable: true
9696
});
97-
const { useMediaCapabilities } = require('./');
98-
const { result } = renderHook(() => useMediaCapabilities(mediaConfig));
97+
const { useMediaCapabilitiesDecodingInfo } = require('./');
98+
const { result } = renderHook(() => useMediaCapabilitiesDecodingInfo(mediaDecodingConfig));
9999

100-
expect(result.current.mediaCapabilities).toEqual({
100+
expect(result.current.mediaCapabilitiesInfo).toEqual({
101101
powerEfficient: true,
102102
smooth: true,
103103
supported: true

0 commit comments

Comments
 (0)