Files
react-native/packages/react-native/Libraries/Image/AssetUtils.js
T
Rubén Norte 5cec1eaabf Make most modules in Image flow strict-local (#40728)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/40728

Just improving type safety of a bunch of modules in the `Image` directory.

Changelog: [internal]

Reviewed By: NickGerleman

Differential Revision: D50080136

fbshipit-source-id: cbfb89aa01cad3882aa08a8ba637e561017d5db6
2023-10-10 05:18:33 -07:00

48 lines
1.2 KiB
JavaScript

/**
* 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 strict-local
* @format
*/
import PixelRatio from '../Utilities/PixelRatio';
let cacheBreaker;
let warnIfCacheBreakerUnset = true;
export function pickScale(scales: Array<number>, deviceScale?: number): number {
const requiredDeviceScale = deviceScale ?? PixelRatio.get();
// Packager guarantees that `scales` array is sorted
for (let i = 0; i < scales.length; i++) {
if (scales[i] >= requiredDeviceScale) {
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;
}