From d925dfb0827c1560b1d5a215319f72d99ec5dc52 Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Mon, 14 Sep 2015 00:59:58 +0430 Subject: [PATCH] fix compatibility: polyfill device storage "getFilesAndDirectories" method --- Gruntfile.js | 2 +- build/main.js | 17 +++++++--- build/polyfill.js | 74 ++++++++++++++++++++++++++++++++++++++++++ src/js/api/files.js | 10 ++++-- src/js/reducers/cwd.js | 2 +- src/js/utils.js | 3 +- src/polyfill.js | 74 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 173 insertions(+), 9 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 01a84a1..4895f4f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -99,7 +99,7 @@ module.exports = function(grunt) { tasks: ['browserify:dev'] }, assets: { - files: ['src/index.html', 'src/manifest.webapp', + files: ['src/index.html', 'src/manifest.webapp', 'src/polyfill.js', 'src/fonts/**', 'src/img/**', 'src/data/**'], tasks: ['copy'] } diff --git a/build/main.js b/build/main.js index 0ed2927..cac27ec 100644 --- a/build/main.js +++ b/build/main.js @@ -29971,7 +29971,7 @@ var getFile = _asyncToGenerator(function* () { exports.getFile = getFile; var children = _asyncToGenerator(function* (dir, gatherInfo) { - var parent = yield getFile(dir); + var parent = shimDirectory((yield getFile(dir))); var childs = yield parent.getFilesAndDirectories(); if (gatherInfo) { @@ -29993,7 +29993,9 @@ var children = _asyncToGenerator(function* (dir, gatherInfo) { child.children = subchildren.length; } else { - child.path = dir + '/'; + if (typeof child.path === 'undefined') { + child.path = dir + '/'; + } } } } catch (err) { @@ -30139,19 +30141,25 @@ function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, a var _utils = require('utils'); +var _actionsFilesView = require('actions/files-view'); + +var _store = require('store'); + var SD_CACHE = undefined; function sdcard() { if (SD_CACHE) return SD_CACHE; SD_CACHE = navigator.getDeviceStorage('sdcard'); + SD_CACHE.onchange = (0, _store.bind)((0, _actionsFilesView.refresh)()); window.sdcard = SD_CACHE; + return SD_CACHE; } var ROOT_CACHE = undefined; -},{"utils":"utils"}],229:[function(require,module,exports){ +},{"actions/files-view":220,"store":"store","utils":"utils"}],229:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { @@ -32584,7 +32592,7 @@ var _store2 = _interopRequireDefault(_store); var _actionsDialog = require('actions/dialog'); function type(obj) { - return Object.prototype.toString.call(obj).slice(8, -1); + return obj.toString().slice(8, -1); } function template(string, props) { @@ -32610,6 +32618,7 @@ function getKey(object, key) { } function reportError(err) { + console.error(err); var action = (0, _actionsDialog.show)('errorDialog', { description: err.message }); _store2['default'].dispatch(action); } diff --git a/build/polyfill.js b/build/polyfill.js index 49f3781..6a6c9a9 100644 --- a/build/polyfill.js +++ b/build/polyfill.js @@ -2,3 +2,77 @@ var args=[],i=1;while(arguments.length>i)args.push(arguments[i++]);queue[++counter]=function(){invoke(typeof fn=="function"?fn:Function(fn),args)};defer(counter);return counter};clearTask=function clearImmediate(id){delete queue[id]};if(require("./$.cof")(process)=="process"){defer=function(id){process.nextTick(ctx(run,id,1))}}else if(MessageChannel){channel=new MessageChannel;port=channel.port2;channel.port1.onmessage=listner;defer=ctx(port.postMessage,port,1)}else if(global.addEventListener&&typeof postMessage=="function"&&!global.importScript){defer=function(id){global.postMessage(id+"","*")};global.addEventListener("message",listner,false)}else if(ONREADYSTATECHANGE in cel("script")){defer=function(id){html.appendChild(cel("script"))[ONREADYSTATECHANGE]=function(){html.removeChild(this);run.call(id)}}}else{defer=function(id){setTimeout(ctx(run,id,1),0)}}}module.exports={set:setTask,clear:clearTask}},{"./$.cof":9,"./$.ctx":15,"./$.dom-create":18,"./$.global":26,"./$.html":29,"./$.invoke":30}],70:[function(require,module,exports){var toInteger=require("./$.to-integer"),max=Math.max,min=Math.min;module.exports=function(index,length){index=toInteger(index);return index<0?max(index+length,0):min(index,length)}},{"./$.to-integer":71}],71:[function(require,module,exports){var ceil=Math.ceil,floor=Math.floor;module.exports=function(it){return isNaN(it=+it)?0:(it>0?floor:ceil)(it)}},{}],72:[function(require,module,exports){var IObject=require("./$.iobject"),defined=require("./$.defined");module.exports=function(it){return IObject(defined(it))}},{"./$.defined":17,"./$.iobject":31}],73:[function(require,module,exports){var toInteger=require("./$.to-integer"),min=Math.min;module.exports=function(it){return it>0?min(toInteger(it),9007199254740991):0}},{"./$.to-integer":71}],74:[function(require,module,exports){var defined=require("./$.defined");module.exports=function(it){return Object(defined(it))}},{"./$.defined":17}],75:[function(require,module,exports){var id=0,px=Math.random();module.exports=function(key){return"Symbol(".concat(key===undefined?"":key,")_",(++id+px).toString(36))}},{}],76:[function(require,module,exports){var UNSCOPABLES=require("./$.wks")("unscopables");if(!(UNSCOPABLES in[]))require("./$.hide")(Array.prototype,UNSCOPABLES,{});module.exports=function(key){[][UNSCOPABLES][key]=true}},{"./$.hide":28,"./$.wks":77}],77:[function(require,module,exports){var store=require("./$.shared")("wks"),Symbol=require("./$.global").Symbol;module.exports=function(name){return store[name]||(store[name]=Symbol&&Symbol[name]||(Symbol||require("./$.uid"))("Symbol."+name))}},{"./$.global":26,"./$.shared":58,"./$.uid":75}],78:[function(require,module,exports){var classof=require("./$.classof"),ITERATOR=require("./$.wks")("iterator"),Iterators=require("./$.iterators");module.exports=require("./$.core").getIteratorMethod=function(it){if(it!=undefined)return it[ITERATOR]||it["@@iterator"]||Iterators[classof(it)]}},{"./$.classof":8,"./$.core":14,"./$.iterators":41,"./$.wks":77}],79:[function(require,module,exports){"use strict";var $=require("./$"),SUPPORT_DESC=require("./$.support-desc"),createDesc=require("./$.property-desc"),html=require("./$.html"),cel=require("./$.dom-create"),has=require("./$.has"),cof=require("./$.cof"),$def=require("./$.def"),invoke=require("./$.invoke"),arrayMethod=require("./$.array-methods"),IE_PROTO=require("./$.uid")("__proto__"),isObject=require("./$.is-object"),anObject=require("./$.an-object"),aFunction=require("./$.a-function"),toObject=require("./$.to-object"),toIObject=require("./$.to-iobject"),toInteger=require("./$.to-integer"),toIndex=require("./$.to-index"),toLength=require("./$.to-length"),IObject=require("./$.iobject"),fails=require("./$.fails"),ObjectProto=Object.prototype,A=[],_slice=A.slice,_join=A.join,defineProperty=$.setDesc,getOwnDescriptor=$.getDesc,defineProperties=$.setDescs,$indexOf=require("./$.array-includes")(false),factories={},IE8_DOM_DEFINE;if(!SUPPORT_DESC){IE8_DOM_DEFINE=!fails(function(){return defineProperty(cel("div"),"a",{get:function(){return 7}}).a!=7});$.setDesc=function(O,P,Attributes){if(IE8_DOM_DEFINE)try{return defineProperty(O,P,Attributes)}catch(e){}if("get"in Attributes||"set"in Attributes)throw TypeError("Accessors not supported!");if("value"in Attributes)anObject(O)[P]=Attributes.value;return O};$.getDesc=function(O,P){if(IE8_DOM_DEFINE)try{return getOwnDescriptor(O,P)}catch(e){}if(has(O,P))return createDesc(!ObjectProto.propertyIsEnumerable.call(O,P),O[P])};$.setDescs=defineProperties=function(O,Properties){anObject(O);var keys=$.getKeys(Properties),length=keys.length,i=0,P;while(length>i)$.setDesc(O,P=keys[i++],Properties[P]);return O}}$def($def.S+$def.F*!SUPPORT_DESC,"Object",{getOwnPropertyDescriptor:$.getDesc,defineProperty:$.setDesc,defineProperties:defineProperties});var keys1=("constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,"+"toLocaleString,toString,valueOf").split(","),keys2=keys1.concat("length","prototype"),keysLen1=keys1.length;var createDict=function(){var iframe=cel("iframe"),i=keysLen1,gt=">",iframeDocument;iframe.style.display="none";html.appendChild(iframe);iframe.src="javascript:";iframeDocument=iframe.contentWindow.document;iframeDocument.open();iframeDocument.write("