-
Notifications
You must be signed in to change notification settings - Fork 24.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Load assets from same folder as JSbundle (Android)
Summary: #3679 was only partially fixed as the behaviour only works on iOS. This implements the same behaviour for Android. If the JSBundle was loaded from the assets folder, this will load images from the built-in resources. Else, load the image from the same folder as the JS bundle. EDIT: For added clarity: On iOS, Bundle Location: 'file:///Path/To/Sample.app/main.bundle' httpServerLocation: '/assets/module/a/' Name: 'logo' type: 'png' **Resolved Asset location: '/Path/To/Sample.app/assets/module/a/logo.png'** On Android, Bundle Location: 'file:///sdcard/Path/To/main.bundle' httpServerLocation: '/assets/module/a/', name: 'logo' type: 'png' **Resolved Asset location: 'file:///sdcard/Path/To/drawable_mdpi/module_a_logo.png'** Closes #4527 Reviewed By: svcscm Differential Revision: D2788005 Pulled By: mkonicek fb-gh-sync-id: 3f6462a7ee6370a92dd6727ac422c5de346c3ff1
- Loading branch information
Showing
6 changed files
with
115 additions
and
53 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/** | ||
* 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. | ||
*/ | ||
'use strict'; | ||
|
||
function getAndroidAssetSuffix(scale) { | ||
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'; | ||
} | ||
} | ||
|
||
function getAndroidDrawableFolderName(asset, scale) { | ||
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) { | ||
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) { | ||
var basePath = asset.httpServerLocation; | ||
if (basePath[0] === '/') { | ||
basePath = basePath.substr(1); | ||
} | ||
return basePath; | ||
} | ||
|
||
module.exports = { | ||
getAndroidAssetSuffix: getAndroidAssetSuffix, | ||
getAndroidDrawableFolderName: getAndroidDrawableFolderName, | ||
getAndroidResourceIdentifier: getAndroidResourceIdentifier, | ||
getBasePath: getBasePath | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters