Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Log out information from DOMException when import fails #1923

Merged
merged 1 commit into from
Jan 5, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 64 additions & 73 deletions js/backup.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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) {
Expand Down Expand Up @@ -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
Expand All @@ -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');

Expand Down Expand Up @@ -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'));
};
});
});
Expand Down Expand Up @@ -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
Expand All @@ -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;
Expand Down Expand Up @@ -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
Expand All @@ -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;
Expand Down Expand Up @@ -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');

Expand All @@ -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'));
};
});
});
Expand Down Expand Up @@ -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;
Expand All @@ -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'));
};
});
});
Expand Down Expand Up @@ -854,11 +844,12 @@
});
},
// for testing
sanitizeFileName: sanitizeFileName,
trimFileName: trimFileName,
getAttachmentFileName: getAttachmentFileName,
getConversationDirName: getConversationDirName,
getConversationLoggingName: getConversationLoggingName
handleDOMException,
sanitizeFileName,
trimFileName,
getAttachmentFileName,
getConversationDirName,
getConversationLoggingName,
};

}());
31 changes: 31 additions & 0 deletions test/backup_test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,37 @@
'use strict';

describe('Backup', function() {
describe('handleDOMException', function() {
it('handles null, still calls reject', function() {
var called = 0;
var reject = function() {
called += 1;
};
var error = null;
var prefix = 'something';

Whisper.Backup.handleDOMException(prefix, error, reject);

assert.strictEqual(called, 1);
});

it('handles object code and message', function() {
var called = 0;
var reject = function() {
called += 1;
};
var error = {
code: 4,
message: 'some cryptic error',
};
var prefix = 'something';

Whisper.Backup.handleDOMException(prefix, error, reject);

assert.strictEqual(called, 1);
});
});

describe('sanitizeFileName', function() {
it('leaves a basic string alone', function() {
var initial = 'Hello, how are you #5 (\'fine\' + great).jpg';
Expand Down