2017-02-09 22:06:19 +03:00
|
|
|
/**
|
|
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD-style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
2017-08-22 19:06:53 +03:00
|
|
|
*
|
|
|
|
* @flow
|
|
|
|
* @format
|
2017-02-09 22:06:19 +03:00
|
|
|
*/
|
2017-08-22 19:06:53 +03:00
|
|
|
|
2017-02-09 22:06:19 +03:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const ALLOWED_SCALES = {
|
|
|
|
ios: [1, 2, 3],
|
|
|
|
};
|
|
|
|
|
2017-08-22 19:06:53 +03:00
|
|
|
function filterPlatformAssetScales(
|
|
|
|
platform: string,
|
|
|
|
scales: $ReadOnlyArray<number>,
|
|
|
|
): $ReadOnlyArray<number> {
|
2017-02-09 22:06:19 +03:00
|
|
|
const whitelist = ALLOWED_SCALES[platform];
|
|
|
|
if (!whitelist) {
|
|
|
|
return scales;
|
|
|
|
}
|
|
|
|
const result = scales.filter(scale => whitelist.indexOf(scale) > -1);
|
|
|
|
if (result.length === 0 && scales.length > 0) {
|
2017-08-22 19:06:53 +03:00
|
|
|
// No matching scale found, but there are some available. Ideally we don't
|
|
|
|
// want to be in this situation and should throw, but for now as a fallback
|
|
|
|
// let's just use the closest larger image
|
2017-02-09 22:06:19 +03:00
|
|
|
const maxScale = whitelist[whitelist.length - 1];
|
|
|
|
for (const scale of scales) {
|
|
|
|
if (scale > maxScale) {
|
|
|
|
result.push(scale);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// There is no larger scales available, use the largest we have
|
|
|
|
if (result.length === 0) {
|
|
|
|
result.push(scales[scales.length - 1]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = filterPlatformAssetScales;
|