This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.0 KiB
78 lines
2.0 KiB
/** |
|
* Copyright (c) 2015-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* @flow |
|
*/ |
|
|
|
'use strict'; |
|
|
|
import type {PackagerAsset} from '../../Libraries/Image/AssetRegistry'; |
|
|
|
/** |
|
* FIXME: using number to represent discrete scale numbers is fragile in essence because of |
|
* floating point numbers imprecision. |
|
*/ |
|
function getAndroidAssetSuffix(scale: number): string { |
|
switch (scale) { |
|
case 0.75: return 'ldpi'; |
|
case 1: return 'mdpi'; |
|
case 1.5: return 'hdpi'; |
|
case 2: return 'xhdpi'; |
|
case 3: return 'xxhdpi'; |
|
case 4: return 'xxxhdpi'; |
|
} |
|
throw new Error('no such scale'); |
|
} |
|
|
|
// See https://developer.android.com/guide/topics/resources/drawable-resource.html |
|
const drawableFileTypes = new Set([ |
|
'gif', |
|
'jpeg', |
|
'jpg', |
|
'png', |
|
'svg', |
|
'webp', |
|
'xml', |
|
]); |
|
|
|
function getAndroidResourceFolderName(asset: PackagerAsset, scale: number) { |
|
if (!drawableFileTypes.has(asset.type)) { |
|
return 'raw'; |
|
} |
|
var suffix = getAndroidAssetSuffix(scale); |
|
if (!suffix) { |
|
throw new Error( |
|
'Don\'t know which android drawable suffix to use for asset: ' + |
|
JSON.stringify(asset) |
|
); |
|
} |
|
const androidFolder = 'drawable-' + suffix; |
|
return androidFolder; |
|
} |
|
|
|
function getAndroidResourceIdentifier(asset: PackagerAsset) { |
|
var folderPath = getBasePath(asset); |
|
return (folderPath + '/' + asset.name) |
|
.toLowerCase() |
|
.replace(/\//g, '_') // Encode folder structure in file name |
|
.replace(/([^a-z0-9_])/g, '') // Remove illegal chars |
|
.replace(/^assets_/, ''); // Remove "assets_" prefix |
|
} |
|
|
|
function getBasePath(asset: PackagerAsset) { |
|
var basePath = asset.httpServerLocation; |
|
if (basePath[0] === '/') { |
|
basePath = basePath.substr(1); |
|
} |
|
return basePath; |
|
} |
|
|
|
module.exports = { |
|
getAndroidAssetSuffix: getAndroidAssetSuffix, |
|
getAndroidResourceFolderName: getAndroidResourceFolderName, |
|
getAndroidResourceIdentifier: getAndroidResourceIdentifier, |
|
getBasePath: getBasePath |
|
};
|
|
|