var fileSystemNatives = requireNative('file_system_natives');
var nameToIds = {};
var idsToEntries = {};
function computeName(entry) {
return entry.filesystem.name + ':' + entry.fullPath;
}
function computeId(entry) {
var fileSystemId = fileSystemNatives.CrackIsolatedFileSystemName(
entry.filesystem.name);
if (!fileSystemId) {
return null;
}
return fileSystemId + ':' + $String.slice(entry.fullPath, 1);
}
function registerEntry(id, entry) {
var name = computeName(entry);
nameToIds[name] = id;
idsToEntries[id] = entry;
}
function getEntryId(entry) {
var name = null;
try {
name = computeName(entry);
} catch(e) {
return null;
}
var id = nameToIds[name];
if (id != null) {
return id;
}
id = computeId(entry);
registerEntry(id, entry);
return id;
}
function getEntryById(id) {
return idsToEntries[id];
}
exports.$set('registerEntry', registerEntry);
exports.$set('getEntryId', getEntryId);
exports.$set('getEntryById', getEntryById);