1
0
mirror of https://github.com/LibreTranslate/LibreTranslate.git synced 2024-12-24 10:06:43 +02:00

keep selected languages and text in url

This commit is contained in:
Sébastien Thuret 2022-02-07 17:58:30 +01:00
parent 61a148d692
commit 54f5c5ed94
No known key found for this signature in database
GPG Key ID: 230B93BBA62CB043

View File

@ -82,6 +82,24 @@ document.addEventListener('DOMContentLoaded', function(){
return; return;
} }
const sourceLanguage = self.langs.find(l => l.code === self.getQueryParam('source'))
const isSourceAuto = !sourceLanguage && self.getQueryParam('source') === "auto"
const targetLanguage = self.langs.find(l => l.code === self.getQueryParam('target'))
if (sourceLanguage || isSourceAuto) {
self.sourceLang = isSourceAuto ? "auto" : sourceLanguage.code
}
if (targetLanguage) {
self.targetLang = targetLanguage.code
}
const defaultText = self.getQueryParam('q')
if(defaultText) {
self.inputText = decodeURI(defaultText)
}
self.loading = false; self.loading = false;
} else { } else {
self.error = "Cannot load /languages"; self.error = "Cannot load /languages";
@ -195,9 +213,23 @@ document.addEventListener('DOMContentLoaded', function(){
dismissError: function(){ dismissError: function(){
this.error = ''; this.error = '';
}, },
getQueryParam: function (key) {
const params = new URLSearchParams(window.location.search);
return params.get(key)
},
updateQueryParam: function (key, value) {
let searchParams = new URLSearchParams(window.location.search)
searchParams.set(key, value);
let newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();
history.pushState(null, '', newRelativePathQuery);
},
handleInput: function(e){ handleInput: function(e){
this.closeSuggestTranslation(e) this.closeSuggestTranslation(e)
this.updateQueryParam('source', this.sourceLang)
this.updateQueryParam('target', this.targetLang)
this.updateQueryParam('q', encodeURI(this.inputText))
if (this.timeout) clearTimeout(this.timeout); if (this.timeout) clearTimeout(this.timeout);
this.timeout = null; this.timeout = null;