|
|
|
@ -102,12 +102,11 @@
|
|
|
|
|
_.each(storeNames, function(storeName) {
|
|
|
|
|
var transaction = idb_db.transaction(storeNames, 'readwrite');
|
|
|
|
|
transaction.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'exportToJsonFile: transaction error',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'exportToJsonFile transaction error (store: ' + storeName + ')',
|
|
|
|
|
transaction.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
reject(error);
|
|
|
|
|
};
|
|
|
|
|
transaction.oncomplete = function() {
|
|
|
|
|
console.log('transaction complete');
|
|
|
|
@ -117,13 +116,11 @@
|
|
|
|
|
var request = store.openCursor();
|
|
|
|
|
var count = 0;
|
|
|
|
|
request.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'Error attempting to export store',
|
|
|
|
|
storeName,
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'exportToJsonFile request error (store: ' + storeNames + ')',
|
|
|
|
|
request.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
reject(error);
|
|
|
|
|
};
|
|
|
|
|
request.onsuccess = function(event) {
|
|
|
|
|
if (count === 0) {
|
|
|
|
@ -169,6 +166,16 @@
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleDOMException(prefix, error, reject) {
|
|
|
|
|
console.log(
|
|
|
|
|
prefix + ':',
|
|
|
|
|
error && error.name,
|
|
|
|
|
error && error.message,
|
|
|
|
|
error && error.code
|
|
|
|
|
);
|
|
|
|
|
reject(error || new Error(prefix));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Import data from JSON into an IndexedDB database. This does not delete any existing data
|
|
|
|
|
* from the database, so keys could clash
|
|
|
|
@ -195,12 +202,11 @@
|
|
|
|
|
|
|
|
|
|
var transaction = idb_db.transaction(storeNames, 'readwrite');
|
|
|
|
|
transaction.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'importFromJsonString error:',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'importFromJsonString transaction error',
|
|
|
|
|
transaction.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
reject(error || new Error('importFromJsonString: transaction.onerror'));
|
|
|
|
|
};
|
|
|
|
|
transaction.oncomplete = finish.bind(null, 'transaction complete');
|
|
|
|
|
|
|
|
|
@ -230,15 +236,11 @@
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
request.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'Error adding object to store',
|
|
|
|
|
storeName,
|
|
|
|
|
':',
|
|
|
|
|
toAdd,
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'importFromJsonString request error (store: ' + storeName + ')',
|
|
|
|
|
request.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
reject(error || new Error('importFromJsonString: request.onerror'));
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
@ -399,14 +401,11 @@
|
|
|
|
|
return new Promise(function(resolve, reject) {
|
|
|
|
|
var transaction = idb_db.transaction('messages', 'readwrite');
|
|
|
|
|
transaction.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'exportConversation transaction error for conversation',
|
|
|
|
|
name,
|
|
|
|
|
':',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'exportConversation transaction error (conversation: ' + name + ')',
|
|
|
|
|
transaction.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
return reject(error || new Error('exportConversation: transaction.onerror'));
|
|
|
|
|
};
|
|
|
|
|
transaction.oncomplete = function() {
|
|
|
|
|
// this doesn't really mean anything - we may have attachment processing to do
|
|
|
|
@ -424,14 +423,11 @@
|
|
|
|
|
stream.write('{"messages":[');
|
|
|
|
|
|
|
|
|
|
request.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'exportConversation: error pulling messages for conversation',
|
|
|
|
|
name,
|
|
|
|
|
':',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'exportConversation request error (conversation: ' + name + ')',
|
|
|
|
|
request.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
return reject(error || new Error('exportConversation: request.onerror'));
|
|
|
|
|
};
|
|
|
|
|
request.onsuccess = function(event) {
|
|
|
|
|
var cursor = event.target.result;
|
|
|
|
@ -515,12 +511,11 @@
|
|
|
|
|
return new Promise(function(resolve, reject) {
|
|
|
|
|
var transaction = idb_db.transaction('conversations', 'readwrite');
|
|
|
|
|
transaction.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'exportConversations: transaction error:',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'exportConversations transaction error',
|
|
|
|
|
transaction.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
return reject(error || new Error('exportConversations: transaction.onerror'));
|
|
|
|
|
};
|
|
|
|
|
transaction.oncomplete = function() {
|
|
|
|
|
// not really very useful - fires at unexpected times
|
|
|
|
@ -530,12 +525,11 @@
|
|
|
|
|
var store = transaction.objectStore('conversations');
|
|
|
|
|
var request = store.openCursor();
|
|
|
|
|
request.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'exportConversations: error pulling conversations:',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'exportConversations request error',
|
|
|
|
|
request.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
return reject(error || new Error('exportConversations: request.onerror'));
|
|
|
|
|
};
|
|
|
|
|
request.onsuccess = function(event) {
|
|
|
|
|
var cursor = event.target.result;
|
|
|
|
@ -621,12 +615,11 @@
|
|
|
|
|
|
|
|
|
|
var transaction = idb_db.transaction('messages', 'readwrite');
|
|
|
|
|
transaction.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'saveAllMessages transaction error:',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'saveAllMessages transaction error',
|
|
|
|
|
transaction.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
return reject(error || new Error('saveAllMessages: transaction.onerror'));
|
|
|
|
|
};
|
|
|
|
|
transaction.oncomplete = finish.bind(null, 'transaction complete');
|
|
|
|
|
|
|
|
|
@ -650,12 +643,11 @@
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
request.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'Error adding object to store:',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'saveAllMessages request error',
|
|
|
|
|
request.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
reject(error || new Error('saveAllMessages: request.onerror'));
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
@ -748,12 +740,11 @@
|
|
|
|
|
|
|
|
|
|
transaction.oncomplete = finish.bind(null, 'transaction complete');
|
|
|
|
|
transaction.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'saveAllMessages transaction error:',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'clearAllStores transaction error',
|
|
|
|
|
transaction.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
return reject(error);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var count = 0;
|
|
|
|
@ -772,12 +763,11 @@
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
request.onerror = function(e) {
|
|
|
|
|
var error = e.target.error;
|
|
|
|
|
console.log(
|
|
|
|
|
'clearAllStores transaction error:',
|
|
|
|
|
error && error.stack ? error.stack : error
|
|
|
|
|
handleDOMException(
|
|
|
|
|
'clearAllStores request error',
|
|
|
|
|
request.error,
|
|
|
|
|
reject
|
|
|
|
|
);
|
|
|
|
|
return reject(error || new Error('clearAllStores: request.onerror'));
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
@ -854,11 +844,12 @@
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
// for testing
|
|
|
|
|
sanitizeFileName: sanitizeFileName,
|
|
|
|
|
trimFileName: trimFileName,
|
|
|
|
|
getAttachmentFileName: getAttachmentFileName,
|
|
|
|
|
getConversationDirName: getConversationDirName,
|
|
|
|
|
getConversationLoggingName: getConversationLoggingName
|
|
|
|
|
handleDOMException,
|
|
|
|
|
sanitizeFileName,
|
|
|
|
|
trimFileName,
|
|
|
|
|
getAttachmentFileName,
|
|
|
|
|
getConversationDirName,
|
|
|
|
|
getConversationLoggingName,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}());
|
|
|
|
|