sanitize URL from clipboard and parse fingerprint (fixes #50)
Instead of just sticking whatever URL is in the clipboard into the "Add Repo" dialog, this attempts to sanitize the URL in case it has some garbage or came from a QR Code, and therefore was all uppercase (that makes for smaller QR Codes). It also checks if there is a fingerprint in the query string of the URL, and sticks that into the fingerprint box. fixes #50 https://gitlab.com/fdroid/fdroidclient/issues/50
This commit is contained in:
parent
a525bca1cf
commit
56933cdbd6
@ -276,7 +276,31 @@ public class ManageReposActivity extends ActionBarActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showAddRepo() {
|
private void showAddRepo() {
|
||||||
showAddRepo(getNewRepoUri(), null);
|
/*
|
||||||
|
* If there is text in the clipboard, and it looks like a URL, use that.
|
||||||
|
* Otherwise use "https://" as default repo string.
|
||||||
|
*/
|
||||||
|
ClipboardCompat clipboard = ClipboardCompat.create(this);
|
||||||
|
String text = clipboard.getText();
|
||||||
|
String fingerprint = null;
|
||||||
|
if (!TextUtils.isEmpty(text)) {
|
||||||
|
try {
|
||||||
|
new URL(text);
|
||||||
|
Uri uri = Uri.parse(text);
|
||||||
|
fingerprint = uri.getQueryParameter("fingerprint");
|
||||||
|
// uri might contain a QR-style, all uppercase URL:
|
||||||
|
if (TextUtils.isEmpty(fingerprint))
|
||||||
|
fingerprint = uri.getQueryParameter("FINGERPRINT");
|
||||||
|
text = NewRepoConfig.sanitizeRepoUri(uri);
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
text = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TextUtils.isEmpty(text)) {
|
||||||
|
text = DEFAULT_NEW_REPO_TEXT;
|
||||||
|
}
|
||||||
|
showAddRepo(text, fingerprint);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showAddRepo(String newAddress, String newFingerprint) {
|
private void showAddRepo(String newAddress, String newFingerprint) {
|
||||||
@ -421,27 +445,6 @@ public class ManageReposActivity extends ActionBarActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* If there is text in the clipboard, and it looks like a URL, use that.
|
|
||||||
* Otherwise return "https://".
|
|
||||||
*/
|
|
||||||
private String getNewRepoUri() {
|
|
||||||
ClipboardCompat clipboard = ClipboardCompat.create(this);
|
|
||||||
String text = clipboard.getText();
|
|
||||||
if (text != null) {
|
|
||||||
try {
|
|
||||||
new URL(text);
|
|
||||||
} catch (MalformedURLException e) {
|
|
||||||
text = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (text == null) {
|
|
||||||
text = DEFAULT_NEW_REPO_TEXT;
|
|
||||||
}
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addRepoFromIntent(Intent intent) {
|
private void addRepoFromIntent(Intent intent) {
|
||||||
/* an URL from a click, NFC, QRCode scan, etc */
|
/* an URL from a click, NFC, QRCode scan, etc */
|
||||||
NewRepoConfig newRepoConfig = new NewRepoConfig(this, intent);
|
NewRepoConfig newRepoConfig = new NewRepoConfig(this, intent);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user