var textarea = document.getElementById('copy-area');
var generate_backup_text;
var create_download_link;
var generate_file_string;
var generate_filename;
generate_backup_text = function(callback) {
var backup_text = '';
chrome.windows.getAll({populate:true}, function(windows){
var w_index = 0;
chrome.storage.sync.get(function(items) {
var format = items.file_format;
if (format === 'yaml') {
var chrome_tabs = [];
windows.forEach(function(window){
backup_text += "- Window " + w_index + ":\n";
window.tabs.forEach(function(tab){
backup_text += " - page_title: '" + tab.title.replace(/\'/g, '\'\'') + "'\n";
backup_text += " url: '" + tab.url + "'\n";
});
backup_text += "\n";
w_index++;
});
}
else if (format === 'html') {
backup_text += '\n\
\n\
\n\
\n';
backup_text += ' Chrome Copy URLs From All Tabs\n';
backup_text += '\n\
\n\
\n';
windows.forEach(function(window){
backup_text += "
Window " + w_index + ":
\n\n";
backup_text += "
\n";
window.tabs.forEach(function(tab){
backup_text += " - \n"
backup_text += " " + tab.title + "\n";
backup_text += "
\n"
});
backup_text += "
\n";
w_index++;
});
backup_text += '
\n\
\n\
';
}
else { // format === 'text'
windows.forEach(function(window){
backup_text += "Window " + w_index + ":";
window.tabs.forEach(function(tab){
backup_text += "\n";
backup_text += "\t* " + tab.title + "\n";
backup_text += "\t " + tab.url + "\n";
});
backup_text += "\n\n";
w_index++;
});
}
callback(backup_text);
});
});
};
generate_backup_text(function(backup_text) {
textarea.value = backup_text;
create_download_link(textarea.value, function(download_link) {
document.getElementById('download-link').appendChild(download_link);
});
});
// Adapted from:
// http://stackoverflow.com/a/18197511
create_download_link = function(text, callback) {
generate_filename(function(filename) {
var download_link = document.createElement('a');
var blob = new Blob([text], { type: 'text/plain' });
download_link.setAttribute('href', window.URL.createObjectURL(blob));
download_link.setAttribute('download', filename);
download_link.innerHTML = 'Download file';
callback(download_link);
});
};
generate_file_string = function() {
var d = new Date();
var date_string =
d.getFullYear()
+ ''
+ ('0' + (d.getMonth() + 1)).slice(-2)
+ ''
+ ('0' + d.getDate()).slice(-2)
+ '-'
+ ('0' + d.getHours()).slice(-2)
+ 'h'
+ ('0' + d.getMinutes()).slice(-2);
return 'chrome-tabs-' + date_string;
};
generate_filename = function(callback) {
chrome.storage.sync.get(function(items) {
var format = items.file_format;
var file_extension = '';
if (format === 'yaml') {
file_extension = 'yml';
}
else if (format === 'html') {
file_extension = 'html';
}
else {
file_extension = 'txt';
}
callback(generate_file_string() + '.' + file_extension);
});
};