Skip to content

Commit

Permalink
Merge pull request #3 from AiondaDotCom/raven_sentry
Browse files Browse the repository at this point in the history
Added raven sentry error crash reporting
  • Loading branch information
ferraro authored Dec 30, 2017
2 parents 7d109a1 + f7d7809 commit f2af356
Show file tree
Hide file tree
Showing 12 changed files with 499 additions and 471 deletions.
2 changes: 2 additions & 0 deletions api.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions background.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
"use strict";

Raven.config('https://f70e8fb95ab7485884ca24a4623dd57d@sentry.io/265192').install();

// Open welcome screen when installing addon.
browser.runtime.onInstalled.addListener(function (details) {
if (details.reason == "install" || details.reason == "update") {
browser.storage.sync.get("username").then(function (storage) {
if (!("username" in storage) || !storage["username"]) {
var options = {"url": "options/welcome.html",
"width": 750, "height": 360, "type": "popup"};
"width": 750, "height": 360, "type": "popup"};
browser.windows.create(options).then(function (welcomeWindow) {
browser.windows.onRemoved.addListener(function handler(id) {
if (id == welcomeWindow.id) {
Expand All @@ -28,7 +30,7 @@ browser.menus.create({

function openCreateAddress(parent_tab) {
var options = {"url": "../create-address/create-address.html",
"type": "popup", "width": 750, "height": 490};
"type": "popup", "width": 750, "height": 490};
browser.windows.create(options).then(function (window) {
// (FF 56) Security policy blocks running code until tab has completed loading.
browser.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
Expand All @@ -46,7 +48,7 @@ browser.menus.onClicked.addListener(function(info, parent_tab) {
} else {
// Paste previous email.
browser.tabs.sendMessage(parent_tab.id, info.menuItemId,
{"frameId": info.frameId});
{"frameId": info.frameId});
}
});

Expand Down
1 change: 1 addition & 0 deletions create-address/create-address.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<meta charset="utf-8" />
<title data-i18n="createTitle"></title>
<link rel="stylesheet" type="text/css" href="../common.css" />
<script src="../libs/raven_3.21.0.min.js"></script>
<script src="../translate.js" defer></script>
<script src="../api.js" defer></script>
<script src="create-address.js" defer></script>
Expand Down
244 changes: 124 additions & 120 deletions create-address/create-address.js
Original file line number Diff line number Diff line change
@@ -1,116 +1,119 @@
"use strict";

function generate_name(prefix, length) {
var name = prefix;
for (let i=0; i < length; ++i)
name += Math.floor(Math.random()*36).toString(36);
Raven.config('https://f70e8fb95ab7485884ca24a4623dd57d@sentry.io/265192').install();

return name;
}
Raven.context(function () {
function generate_name(prefix, length) {
var name = prefix;
for (let i=0; i < length; ++i)
name += Math.floor(Math.random()*36).toString(36);

var parent_url, parent_id, tab_id;
var p1 = browser.storage.sync.get();
var p2 = browser.storage.local.get(["domains", "real_emails"]);
return name;
}

var parent_url, parent_id, tab_id;
var p1 = browser.storage.sync.get();
var p2 = browser.storage.local.get(["domains", "real_emails"]);

// Set variables passed from background script.
browser.runtime.onMessage.addListener(function (message) {
if (Array.isArray(message))
[parent_url, parent_id, tab_id] = message;

// Close window if parent tab is closed.
browser.tabs.onRemoved.addListener(function (id) {
if (id == tab_id)
browser.windows.getCurrent().then(function (window) {
browser.windows.remove(window.id);
});
browser.runtime.onMessage.addListener(function (message) {
if (Array.isArray(message))
[parent_url, parent_id, tab_id] = message;

// Close window if parent tab is closed.
browser.tabs.onRemoved.addListener(function (id) {
if (id == tab_id)
browser.windows.getCurrent().then(function (window) {
browser.windows.remove(window.id);
});
});
});
});

var login_details = Promise.all([p1, p2]).then(function (result) {
var [sync, local] = result;
var login_details = Promise.all([p1, p2]).then(function (result) {
var [sync, local] = result;

// Initialise all the fields in the window from user preferences.
const pairs = [["real_emails","email"], ["domains", "domain"]];
for (const [list, prop] of pairs) {
let select = document.getElementById(prop);
for (const item of local[list]) {
let option = document.createElement("option");
option.value = option.text = item;
// Initialise all the fields in the window from user preferences.
const pairs = [["real_emails","email"], ["domains", "domain"]];
for (const [list, prop] of pairs) {
let select = document.getElementById(prop);
for (const item of local[list]) {
let option = document.createElement("option");
option.value = option.text = item;

if (item == sync["default_" + prop])
option.selected = true;
if (item == sync["default_" + prop])
option.selected = true;

select.add(option);
select.add(option);
}
}
}

var props = ["forwards", "expire"];
for (const prop of props) {
let key = "default_" + prop;
if (key in sync)
document.getElementById(prop).value = sync[key];
}
var props = ["forwards", "expire"];
for (const prop of props) {
let key = "default_" + prop;
if (key in sync)
document.getElementById(prop).value = sync[key];
}

props = ["challenge", "masq", "notify", "send"];
for (const prop of props) {
let key = "default_" + prop;
if (key in sync)
document.getElementById(prop).checked = sync[key];
}
props = ["challenge", "masq", "notify", "send"];
for (const prop of props) {
let key = "default_" + prop;
if (key in sync)
document.getElementById(prop).checked = sync[key];
}

document.getElementById("disposable-name").value = generate_name(
sync["default_prefix"], sync["default_random_length"] || 6);
document.getElementById("disposable-name").value = generate_name(
sync["default_prefix"], sync["default_random_length"] || 6);

return sync;
}).then(function (storage) {
var data = {
"cmd": "login",
"fe-login-user": storage["username"],
"fe-login-pass": storage["password"]
};
return sync;
}).then(function (storage) {
var data = {
"cmd": "login",
"fe-login-user": storage["username"],
"fe-login-pass": storage["password"]
};

return callAPI(data);
});
return callAPI(data);
});

function addressManager() {
const url = "https://trashmail.com/?cmd=manager";
function addressManager() {
const url = "https://trashmail.com/?cmd=manager";

login_details.then(function (login_details) {
let params = new URLSearchParams({
"lang": browser.i18n.getUILanguage().substr(0, 2),
"session_id": login_details["session_id"]
});
login_details.then(function (login_details) {
let params = new URLSearchParams({
"lang": browser.i18n.getUILanguage().substr(0, 2),
"session_id": login_details["session_id"]
});

let options = {"url": url.concat("&", params.toString()),
"windowId": parent_id};
browser.tabs.create(options);
}).then(function () {
window.close();
}).catch(function (error) {
let error_msg = document.getElementById("error_msg");
error_msg.textContent = error;
error_msg.style.display = "block";
});
}
let options = {"url": url.concat("&", params.toString()),
"windowId": parent_id};
browser.tabs.create(options);
}).then(function () {
window.close();
}).catch(function (error) {
let error_msg = document.getElementById("error_msg");
error_msg.textContent = error;
error_msg.style.display = "block";
});
}

function createAddress(e) {
e.preventDefault();
function createAddress(e) {
e.preventDefault();

var create_button = document.getElementById("btn-create");
var progress = document.getElementById("progress");
var error = document.getElementById("error_msg");
var form = new FormData(e.target);
var create_button = document.getElementById("btn-create");
var progress = document.getElementById("progress");
var error = document.getElementById("error_msg");
var form = new FormData(e.target);

create_button.disabled = true;
progress.style.display = "block";
error.style.display = "none";
create_button.disabled = true;
progress.style.display = "block";
error.style.display = "none";

login_details.then(function (login) {
var data = {
"cmd": "create_dea",
"session_id": login["session_id"]
};
var json = {"data": {
login_details.then(function (login) {
var data = {
"cmd": "create_dea",
"session_id": login["session_id"]
};
var json = {"data": {
"disposable_name": form.get("disposable_name"),
"disposable_domain": form.get("domain"),
"destination": form.get("email"),
Expand All @@ -121,42 +124,43 @@ function createAddress(e) {
"notify": form.get("notify") || false,
"website": form.get("send") ? parent_url : ""
}
}
}

return callAPI(data, json);
}).then(function () {
let address = form.get("disposable_name") + "@" + form.get("domain");
return callAPI(data, json);
}).then(function () {
let address = form.get("disposable_name") + "@" + form.get("domain");

// Update locally stored previous addresses.
browser.storage.local.get("previous_addresses").then(function (storage) {
let addresses = storage["previous_addresses"];
let domain = (new URL(parent_url)).hostname;
if (domain in addresses)
addresses[domain].push(address);
else
addresses[domain] = [address];
// Update locally stored previous addresses.
browser.storage.local.get("previous_addresses").then(function (storage) {
let addresses = storage["previous_addresses"];
let domain = (new URL(parent_url)).hostname;
if (domain in addresses)
addresses[domain].push(address);
else
addresses[domain] = [address];

browser.storage.local.set({"previous_addresses": addresses});
});
browser.storage.local.set({"previous_addresses": addresses});
});

// Paste address
return browser.tabs.sendMessage(tab_id, address);
}).then(function () {
return browser.windows.getCurrent();
}).then(function (window) {
browser.windows.remove(window.id);
}).catch(function (msg) {
error.innerHTML = msg;
error.style.display = "block";
progress.style.display = "none";
create_button.disabled = false;
});
}
// Paste address
return browser.tabs.sendMessage(tab_id, address);
}).then(function () {
return browser.windows.getCurrent();
}).then(function (window) {
browser.windows.remove(window.id);
}).catch(function (msg) {
error.innerHTML = msg;
error.style.display = "block";
progress.style.display = "none";
create_button.disabled = false;
});
}

document.querySelector("form").addEventListener("submit", createAddress);
document.querySelector("form").addEventListener("submit", createAddress);

document.getElementById("btn-address-manager").addEventListener("click", addressManager);
document.getElementById("btn-address-manager").addEventListener("click", addressManager);

document.getElementById("btn-close").addEventListener("click", function () {
window.close();
document.getElementById("btn-close").addEventListener("click", function () {
window.close();
});
});
3 changes: 3 additions & 0 deletions libs/raven_3.21.0.min.js

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"homepage_url": "https://trashmail.com/",
"name": "__MSG_extensionName__",
"short_name": "TrashMail",
"version": "4.0.5",
"version": "4.0.6",

"applications": {
"gecko": {
Expand All @@ -30,7 +30,7 @@
],

"background": {
"scripts": ["api.js", "background.js"]
"scripts": ["libs/raven_3.21.0.min.js", "api.js", "background.js"]
},
"browser_action": {
"browser_style": true,
Expand All @@ -54,6 +54,7 @@
"description": "Paste a disposable email address."
}
},
"content_security_policy": "script-src 'self' https://sentry.io; object-src 'self'",
"content_scripts": [
{
"all_frames": true,
Expand Down
1 change: 1 addition & 0 deletions options/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<html>
<head>
<meta charset="utf-8" />
<script src="../libs/raven_3.21.0.min.js"></script>
<script src="../translate.js" defer></script>
<script src="../api.js" defer></script>
<script src="options.js" defer></script>
Expand Down
Loading

0 comments on commit f2af356

Please sign in to comment.