irec fileapi - CGastrell/phonegap GitHub Wiki
fileApi
Que vamos a necesitar para la aplicacion?
- un archivo donde podamos almacenar las guias:
guias.json
- un archivo donde podamos almacenar las entrevistas:
entrevistas.json
- un directorio donde vayamos a guardar los audios de las entrevistas:
audio
- generar archivos para las entrevistas:
audio/*
Con esto en mente, es poco lo que necesitamos del fileApi
. Por otro lado, vamos a cambiar la inicializacion. Ya que el resto de la aplicacion va a depender de la correcta inicializacion de fileApi
vamos a hacer que la funcion initialize
sea asincronica:
var fileApi = {
ready: false, // <--solo por las dudas
initialize: function(callback){
var path = cordova.file.externalDataDirectory;
//si no hay problemas, llamamos a callback con el primer
//parametro en null (lo que seria el error)
var onResolve = function(directoryEntry) {
fileApi.dir = directoryEntry;
fileApi.ready = true;
callback && callback(null, fileApi);
}
//si hay un error llamamos a callback con el error
//como primer parametro (ver arriba)
var onError = function(err){
callback && callback(err, fileApi);
}
window.resolveLocalFileSystemURL(path, onResolve, onError);
},
writeTextFile: function(file, content, callback) {
var onFile = function(fileEntry) {
fileEntry.createWriter(
function(fileWriter){
fileWriter.write(content);
callback && callback(content);
}, fileApi.onError);
}
fileApi.dir.getFile(file, {create: true}, onFile, fileApi.onError);
},
onError: function(err) {
console.log(err);
},
getDir: function(dir, callback) {
var onDir = function(dir){
callback && callback(null, dir);
}
var onError = function(err) {
callback && callback(err, null);
}
fileApi.dir.getDirectory(dir, {create:true}, onDir, onError);
}
}
Ver que las funciones que usamos usan la opcion {create: true}
para evitarnos el paso de saber si existe o no. Si no existe, se crea.
Inicializacion
Para inicializar fileApi
vamos a llamar a fileApi.initialize
desde nuestra funcion init()
de esta manera:
function init(){
console.log('init');
// Configuracion de JQM para phonegap
$.mobile.allowCrossDomainPages = true;
$.support.cors = true;
$.mobile.buttonMarkup.hoverDelay = 0;
$.mobile.pushStateEnabled = false;
$.mobile.defaultPageTransition = "none";
fileApi.initialize(function(err){
if(err) { // <-- checkeamos si hay error
console.log('file api error');
console.log(err);
return; // <-- y cortamos la ejecucion de ser asi
}
// aca va mas codigo de inicializacion
// sabiendo que fileApi esta inicializado
});
}
A continuacion vemos como inicializar guias
y entrevistas
que necesitan acceder/crear un archivo para almacenar sus respectivos listados.