1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-07-19 21:31:14 +02:00

Support legacy configuration pages #251

There are pages that do not honor return_to get parameter. This commit allows the user to enter the returned url manually.
This commit is contained in:
Daniele Gobbetti 2016-06-17 17:47:13 +02:00
parent 9f61458790
commit d5586478f3
3 changed files with 46 additions and 4 deletions

View File

@ -19,7 +19,8 @@
} }
#config_url,#jsondata { #config_url,#jsondata {
word-wrap: break-word; word-wrap: break-word;
margin: 20px; margin: 20px 0;
width: 90%;
} }
.btn { .btn {
display: inline-block; display: inline-block;
@ -38,6 +39,16 @@
box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2)inset; box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2)inset;
transition-delay: 0s; transition-delay: 0s;
} }
p {
width: 90%;
}
#pastereturn {
width: 90%;
min-height: 3em;
}
#step1compat, #step2 {
display: none;
}
<!-- TODO --> <!-- TODO -->
</style> </style>
</head> </head>
@ -48,6 +59,14 @@
<!--<button class="btn" name="show config" value="show config" onclick="Pebble.showConfiguration()" >Show config / URL</button>--> <!--<button class="btn" name="show config" value="show config" onclick="Pebble.showConfiguration()" >Show config / URL</button>-->
<button class="btn" name="open config" value="open config" onclick="Pebble.actuallyOpenURL()" >Open configuration website</button> <button class="btn" name="open config" value="open config" onclick="Pebble.actuallyOpenURL()" >Open configuration website</button>
</div> </div>
<div id="step1compat">
<p>In case of "network error" after saving settings in the wathchapp, copy the "network error"
URL and paste it here:</p>
<textarea id="pastereturn"></textarea><br/>
<button class="btn" name="parse" onclick="Pebble.parseReturnedPebbleJS()">Parse legacy app
configuration
</button>
</div>
<div id="step2"> <div id="step2">
<h2>Incoming configuration data:</h2> <h2>Incoming configuration data:</h2>
<div id="jsondata"></div> <div id="jsondata"></div>

View File

@ -63,6 +63,7 @@ function gbPebble() {
} }
} }
this.actuallyOpenURL = function() { this.actuallyOpenURL = function() {
document.getElementById('step1compat').style.display="block";
window.open(this.configurationURL.toString(), "config"); window.open(this.configurationURL.toString(), "config");
} }
@ -114,6 +115,22 @@ function gbPebble() {
this.ready = function() { this.ready = function() {
} }
this.parseReturnedPebbleJS = function() {
var str = document.getElementById('pastereturn').value;
var needle = "pebblejs://close#";
if (str.split(needle)[1] !== undefined) {
var t = new Object();
t.response = unescape(str.split(needle)[1]);
this.parseconfig(t);
document.getElementById('step1').style.display="none";
document.getElementById('step1compat').style.display="none";
document.getElementById('step2').style.display="block";
} else {
console.error("No valid configuration found in the entered string.");
}
}
} }
var Pebble = new gbPebble(); var Pebble = new gbPebble();
@ -123,13 +140,15 @@ if (jsConfigFile != null) {
loadScript(jsConfigFile, function() { loadScript(jsConfigFile, function() {
if (getURLVariable('config') == 'true') { if (getURLVariable('config') == 'true') {
document.getElementById('step1').style.display="none"; document.getElementById('step1').style.display="none";
document.getElementById('step1compat').style.display="none";
document.getElementById('step2').style.display="block";
var json_string = unescape(getURLVariable('json')); var json_string = unescape(getURLVariable('json'));
var t = new Object(); var t = new Object();
t.response = json_string; t.response = json_string;
if (json_string != '') if (json_string != '')
Pebble.parseconfig(t); Pebble.parseconfig(t);
} else { } else {
document.getElementById('step2').style.display="none";
Pebble.ready(); Pebble.ready();
Pebble.showConfiguration(); Pebble.showConfiguration();
} }

View File

@ -54,8 +54,12 @@ public class ExternalPebbleJSActivity extends GBActivity {
Uri uri = getIntent().getData(); Uri uri = getIntent().getData();
if (uri != null) { if (uri != null) {
//getting back with configuration data //getting back with configuration data
appUuid = UUID.fromString(uri.getHost()); try {
queryString = uri.getEncodedQuery(); appUuid = UUID.fromString(uri.getHost());
queryString = uri.getEncodedQuery();
} catch (IllegalArgumentException e) {
Log.d("returned uri: ", uri.toString());
}
} else { } else {
appUuid = (UUID) getIntent().getSerializableExtra("app_uuid"); appUuid = (UUID) getIntent().getSerializableExtra("app_uuid");
} }