Skip to content
This repository has been archived by the owner on Oct 24, 2024. It is now read-only.

Commit

Permalink
General fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
JumpMaster committed Mar 2, 2014
1 parent 8dbacd0 commit 6cce3ce
Show file tree
Hide file tree
Showing 3 changed files with 212 additions and 84 deletions.
13 changes: 7 additions & 6 deletions appinfo.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"show_message": 4,
"request_key": 1,
"theme": 5,
"delete_key": 6,
"timezone": 3
},
"longName": "PebbleAuth",
Expand All @@ -21,6 +22,12 @@
},
"resources": {
"media": [
{
"menuIcon": true,
"type": "png",
"name": "IMAGE_ICON",
"file": "images/auth_icon.png"
},
{
"type": "font",
"name": "FONT_UNISPACE_20",
Expand All @@ -36,12 +43,6 @@
"name": "IMAGE_ICON_NO",
"file": "images/No.png"
},
{
"menuIcon": true,
"type": "png",
"name": "IMAGE_ICON",
"file": "images/auth_icon.png"
},
{
"type": "font",
"name": "FONT_ORBITRON_28",
Expand Down
109 changes: 84 additions & 25 deletions src/js/pebble-js-app.js
Original file line number Diff line number Diff line change
@@ -1,46 +1,94 @@
var MAX_OTP = 8;
var otp_count = parseInt(localStorage.getItem("otp_count"));
var theme = parseInt(localStorage.getItem("theme"));
var timezoneOffset = new Date().getTimezoneOffset();
var debug = false;

if (!otp_count)
otp_count = 0;

if (!theme)
theme = 0;

function sendAppMessage(data) {
Pebble.sendAppMessage(data,
function(e) {
if (debug)
console.log("Successfully delivered message with transactionId=" + e.data.transactionId);
},
function(e) {
if (debug)
console.log("Unable to deliver message with transactionId=" +
e.data.transactionId +
" Error is: " + e.error.message);
}
);
}

Pebble.addEventListener("ready",
function(e) {
console.log("JavaScript app ready and running!");
if (debug)
console.log("JavaScript app ready and running!");

// Send timezone and keycount to watch
Pebble.sendAppMessage({"key_count":otp_count, "theme":theme, "timezone":timezoneOffset});

console.log("otp_count="+otp_count);
console.log("theme="+theme);
console.log("timezoneOffset="+timezoneOffset);
// Send timezone, keycount, and theme to watch
sendAppMessage({"key_count":otp_count, "theme":theme, "timezone":timezoneOffset});

if (debug) {
console.log("otp_count="+otp_count);
console.log("theme="+theme);
console.log("timezoneOffset="+timezoneOffset);
}
}
);

function sendKeyToWatch(secret) {
Pebble.sendAppMessage({"transmit_key":secret});
sendAppMessage({"transmit_key":secret});
}

function confirmDelete(secret) {
var blnFound = false;
for (var i = 0; i < MAX_OTP;i++) {
var savedSecret = localStorage.getItem('secret_pair'+i);

if (savedSecret !== null && savedSecret.indexOf(secret) != -1)
blnFound = true;

if (blnFound) {
var nextSecret = localStorage.getItem('secret_pair'+(i+1));
if (nextSecret)
localStorage.setItem('secret_pair'+i,nextSecret);
else
localStorage.removeItem('secret_pair'+i);
}
}
otp_count--;
localStorage.setItem("otp_count",otp_count);
sendAppMessage({"delete_key":secret});
}

// Set callback for appmessage events
Pebble.addEventListener("appmessage",
function(e) {
console.log("Message Recieved");
if (debug)
console.log("Message Recieved");
if (e.payload.request_key) {
console.log(e.payload.request_key);
if (debug)
console.log("Requested key: "+e.payload.request_key);
sendKeyToWatch(localStorage.getItem("secret_pair"+(e.payload.request_key-1)));
}
else if (e.payload.delete_key) {
if (debug)
console.log("Deleting key: "+e.payload.delete_key);
confirmDelete(e.payload.delete_key);
}
else {
console.log(e.payload);
if (debug)
console.log(e.payload);
}
});

Pebble.addEventListener('showConfiguration', function(e) {
//Pebble.openURL('http://192.168.0.115');
Pebble.openURL('http://htmlpreview.github.io/?https://github.com/JumpMaster/PebbleAuth/blob/master/html/configuration.html');
Pebble.openURL('http://oncloudvirtual.com/pebble/pebbleauth/');
});

Pebble.addEventListener("webviewclosed",
Expand All @@ -49,42 +97,53 @@ Pebble.addEventListener("webviewclosed",
var config ={};

if(!isNaN(configuration.theme) && configuration.theme != theme) {
console.log("Theme changed");
if (debug)
console.log("Theme changed");

theme = configuration.theme;
localStorage.setItem("theme",theme);
config.theme = theme;
}
if(configuration.label.length > 0 && configuration.secret.length > 0) {

if(configuration.label && configuration.secret) {
var secret = configuration.secret.replace(/0/g,"O").replace(/1/g, "I").replace(/\+/g, '').replace(/\s/g, '').toUpperCase();
var secretPair = configuration.label + ":" + secret;

var blnKeyExists = false;
for (var i=0;i<otp_count;i++) {
var savedSecret = localStorage.getItem('secret_pair'+i);
if (savedSecret !== null && savedSecret.indexOf(secret) != -1) {
console.log("Relabled code");
if (debug)
console.log("Relabled code");

blnKeyExists = true;
localStorage.setItem('secret_pair'+i,secretPair);
config.transmit_key = secretPair;
}
}

if(!blnKeyExists && otp_count < 8) {
console.log("New code");
if (debug)
console.log("New code");

// Check if secret exists
console.log("Uploading new key:"+secretPair);
// Check if secret exists
if (debug)
console.log("Uploading new key:"+secretPair);
localStorage.setItem('secret_pair'+otp_count,secretPair);
otp_count++;
localStorage.setItem("otp_count",otp_count);
config.transmit_key = secretPair;
} else
console.log("Code exists or Too many codes..."+otp_count);
}
else if (blnKeyExists) {
if (debug)
console.log("Code exists, updating label");
}
else if (otp_count >= 8) {
if (debug)
console.log("Too many codes..."+otp_count);
}
}
console.log("Uploading config");
Pebble.sendAppMessage(config);
if (debug)
console.log("Uploading config");
sendAppMessage(config);
}
);
Loading

0 comments on commit 6cce3ce

Please sign in to comment.