Improved sKai support and overall download algo
This commit is contained in:
@@ -1,5 +1,20 @@
|
||||
// Kopher UI logic
|
||||
|
||||
function saveBlob(blob, fname, successCb, errorCb) {
|
||||
var storage = navigator.getDeviceStorage(blob.type.startsWith('image/') ? 'pictures' : 'sdcard'),
|
||||
freeSpaceReq = storage.freeSpace()
|
||||
freeSpaceReq.onsuccess = function() {
|
||||
var freeSize = freeSpaceReq.result
|
||||
if(freeSize > blob.size) {
|
||||
var req = storage.addNamed(blob, fname)
|
||||
req.onsuccess = successCb
|
||||
req.onerror = errorCb
|
||||
}
|
||||
else errorCb(new Error('No free space available'))
|
||||
}
|
||||
freeSpaceReq.onerror = errorCb
|
||||
}
|
||||
|
||||
function openURL(url, successCb, errorCb) {
|
||||
if(url.startsWith('about:')) { // handle about: pages first
|
||||
var pageName = url.split(':')[1], allowedPageNames = ['kopher', 'blank', 'help']
|
||||
@@ -27,8 +42,14 @@ function openURL(url, successCb, errorCb) {
|
||||
if(resource.length > 4) input = resource[4]
|
||||
Hi01379.load(resource, input, function(res) {
|
||||
if(res.content && res.content instanceof Blob) { // handle the download here
|
||||
successCb({content: null, serviceMsg: 'Downloaded ' + res.contentName, updateAddr: false})
|
||||
window.open(URL.createObjectURL(res.content))
|
||||
if(res.contentType.startsWith('image/') && confirm('View the image? (press Cancel to save it)')) { // try to open it in an external image viewer
|
||||
window.open(URL.createObjectURL(res.content))
|
||||
successCb({content: null, serviceMsg: 'Viewed ' + res.contentName, updateAddr: false})
|
||||
} else // proceed with storing the file
|
||||
saveBlob(res.content, res.contentName, function() {
|
||||
successCb({content: null, serviceMsg: 'Saved ' + res.contentName, updateAddr: false})
|
||||
navigator.mozNotification.createNotification('File saved', res.contentName).show()
|
||||
}, errorCb)
|
||||
}
|
||||
else successCb(res) // proceed to UI with non-downloads
|
||||
}, errorCb)
|
||||
|
||||
Reference in New Issue
Block a user