blob: f70c9d30b5d26108a0db02cd2fb3bf14bc999b1d [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
/*
* createEntryFromNative
*
* IN
* native - webkit Entry
* OUT
* returns Cordova entry
*/
var info = require('cordova-plugin-file.bb10FileSystemInfo');
var fileSystems = require('cordova-plugin-file.fileSystems');
module.exports = function (native) {
var entry = {
nativeEntry: native,
isDirectory: !!native.isDirectory,
isFile: !!native.isFile,
name: native.name,
fullPath: native.fullPath,
filesystemName: native.filesystem.name,
nativeURL: native.toURL()
};
var persistentPath = info.persistentPath.substring(7);
var temporaryPath = info.temporaryPath.substring(7);
// fix bb10 webkit incorrect nativeURL
if (native.filesystem.name === 'root') {
/* eslint-disable no-undef */
entry.nativeURL = 'file:///' + FileSystem.encodeURIPath(native.fullPath);
} else if (entry.nativeURL.indexOf('filesystem:local:///persistent/') === 0) {
entry.nativeURL = info.persistentPath + FileSystem.encodeURIPath(native.fullPath);
} else if (entry.nativeURL.indexOf('filesystem:local:///temporary') === 0) {
entry.nativeURL = info.temporaryPath + FileSystem.encodeURIPath(native.fullPath);
}
/* eslint-enable no-undef */
// translate file system name from bb10 webkit
if (entry.filesystemName === 'local__0:Persistent' || entry.fullPath.indexOf(persistentPath) !== -1) {
entry.filesystemName = 'persistent';
} else if (entry.filesystemName === 'local__0:Temporary' || entry.fullPath.indexOf(temporaryPath) !== -1) {
entry.filesystemName = 'temporary';
}
// add file system property (will be called sync)
fileSystems.getFs(entry.filesystemName, function (fs) {
entry.filesystem = fs;
});
// set root on fullPath for persistent / temporary locations
entry.fullPath = entry.fullPath.replace(persistentPath, '');
entry.fullPath = entry.fullPath.replace(temporaryPath, '');
// set trailing slash on directory
if (entry.isDirectory && entry.fullPath.substring(entry.fullPath.length - 1) !== '/') {
entry.fullPath += '/';
}
if (entry.isDirectory && entry.nativeURL.substring(entry.nativeURL.length - 1) !== '/') {
entry.nativeURL += '/';
}
return entry;
};