JSFiddle - React, Tailwind, and code Playground

by Michael Dibbets

JavaScript

//This file will cache serverdata every day.

function FileSystemInstance() {
    this.fileSystem = null;
    this.requestFileSystem = null;
    
    this.fileSystemInit();
    
    
}
//request rights to save files to system.
FileSystemInstance.prototype.fileSystemInit = function(){
    //Browser specific
    this.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem;
    this.requestFileSystem = this.requestFileSystem.bind(window);
    console.log(this.requestFileSystem);
	var that = this;
    console.log(that.requestFileSystem);
    navigator.webkitPersistentStorage.requestQuota(1048*1048*256, function(grantedBytes) {
        //once approved (or if previously approved):
        console.log(that.requestFileSystem);
        that.requestFileSystem(PERSISTENT, grantedBytes, function(fs){that.onInitFs(fs)}, function(e){that.errorHandler(e)});
    }, function(e) {
    console.log('Error', e);
    });
};

//make filesystem global.
FileSystemInstance.prototype.onInitFs = function(fs) {
    this.fileSystem = fs;
};


FileSystemInstance.prototype.saveFile = function(url, content, callback){
    var filename = this.makeFilename(url)
    if(!fileSystem){
        console.log('no filesystem registered')
        return;
    }
    this.fileSystem.root.getFile(filename, {create: true}, function(fileEntry) {

        fileEntry.createWriter(function(fileWriter) {
            var blob = new Blob([JSON.stringify(content)], {type: 'application/json'});
            fileWriter.write(blob);

            fileWriter.onwriteend = function(e) {
                console.debug('Write completed.', e);
                if(callback){
                    callback();
                }
            };

            fileWriter.onerror = function(e) {
                console.log('Write failed: ', e);
            };
        }, errorHandler);

    }, errorHandler);
};

FileSystemInstance.prototype.readFile = function(url, callback){
    var filename = this.makeFilename(url)
   ...