fix base64text: special characters decoded incorrectly

This commit is contained in:
schlagmichdoch 2023-01-25 09:43:32 +01:00
parent 5a985e853c
commit 437aa5976e

View file

@ -1042,22 +1042,30 @@ class Base64ZipDialog extends Dialog {
const urlParams = new URL(window.location).searchParams; const urlParams = new URL(window.location).searchParams;
const base64Zip = urlParams.get('base64zip'); const base64Zip = urlParams.get('base64zip');
const base64Text = urlParams.get('base64text'); const base64Text = urlParams.get('base64text');
this.$pasteBtn = this.$el.querySelector('#base64ZipPasteBtn')
this.$pasteBtn.addEventListener('click', _ => this.processClipboard())
if (base64Text) { if (base64Text) {
this.processBase64Text(base64Text); this.processBase64Text(base64Text);
}else if (!navigator.clipboard.readText) {
setTimeout(_ => Events.fire('notify-user', 'This feature is not available on your device.'), 500);
} else if (base64Zip) { } else if (base64Zip) {
this.$pasteBtn = this.$el.querySelector('#base64ZipPasteBtn') if (!navigator.clipboard.readText) {
this.$pasteBtn.addEventListener('click', _ => this.processClipboard()) setTimeout(_ => Events.fire('notify-user', 'This feature is not available on your device.'), 500);
this.clearBrowserHistory();
return;
}
this.show(); this.show();
} }
} }
processBase64Text(base64Text){ processBase64Text(base64Text){
try { try {
Events.fire('activate-paste-mode', {files: [], text: atob(base64Text)}); let decodedText = decodeURIComponent(escape(window.atob(base64Text)));
Events.fire('activate-paste-mode', {files: [], text: decodedText});
} catch (e) { } catch (e) {
Events.fire('notify-user', 'Clipboard content is malformed.') setTimeout(_ => Events.fire('notify-user', 'Content incorrect.'), 500);
} finally {
this.clearBrowserHistory();
this.hide();
} }
} }
@ -1081,12 +1089,16 @@ class Base64ZipDialog extends Dialog {
} }
Events.fire('activate-paste-mode', {files: files, text: ""}) Events.fire('activate-paste-mode', {files: files, text: ""})
} catch (e) { } catch (e) {
Events.fire('notify-user', 'Clipboard content is malformed.') Events.fire('notify-user', 'Clipboard content is incorrect.')
} finally { } finally {
window.history.replaceState({}, "Rewrite URL", '/'); this.clearBrowserHistory();
this.hide(); this.hide();
} }
} }
clearBrowserHistory() {
window.history.replaceState({}, "Rewrite URL", '/');
}
} }
class Toast extends Dialog { class Toast extends Dialog {
@ -1633,16 +1645,13 @@ Events.on('load', () => {
}; };
init(); init();
animate(); animate();
let icon = document.querySelector('[rel="icon"]'),
shortcutIcon = document.querySelector('[rel="shortcut icon"]');
document.changeFavicon = function (src) {
icon.href = src;
shortcutIcon.href = src;
}
}); });
document.changeFavicon = function (src) {
document.querySelector('[rel="icon"]').href = src;
document.querySelector('[rel="shortcut icon"]').href = src;
}
// close About PairDrop page on Escape // close About PairDrop page on Escape
window.addEventListener("keydown", (e) => { window.addEventListener("keydown", (e) => {
if (e.key === "Escape") { if (e.key === "Escape") {