-
Notifications
You must be signed in to change notification settings - Fork 24.2k
/
AssetUtils.js
48 lines (42 loc) · 1.23 KB
/
AssetUtils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
import PixelRatio from '../Utilities/PixelRatio';
let cacheBreaker;
let warnIfCacheBreakerUnset = true;
export function pickScale(scales: Array<number>, deviceScale?: number): number {
if (deviceScale == null) {
deviceScale = PixelRatio.get();
}
// Packager guarantees that `scales` array is sorted
for (let i = 0; i < scales.length; i++) {
if (scales[i] >= deviceScale) {
return scales[i];
}
}
// If nothing matches, device scale is larger than any available
// scales, so we return the biggest one. Unless the array is empty,
// in which case we default to 1
return scales[scales.length - 1] || 1;
}
export function setUrlCacheBreaker(appendage: string) {
cacheBreaker = appendage;
}
export function getUrlCacheBreaker(): string {
if (cacheBreaker == null) {
if (__DEV__ && warnIfCacheBreakerUnset) {
warnIfCacheBreakerUnset = false;
console.warn(
'AssetUtils.getUrlCacheBreaker: Cache breaker value is unset',
);
}
return '';
}
return cacheBreaker;
}