(function () {
var params = new URLSearchParams(window.location.search);
var source = params.get('source') || '';
var pt = params.get('pt') || '';
var statusEl = document.getElementById('status');
var btn = document.getElementById('import-btn');
var sourceLine = document.getElementById('source-line');
var sourceEl = document.getElementById('source');
function setStatus(msg, kind) {
statusEl.textContent = msg || '';
statusEl.className = 'status' + (kind ? ' status-' + kind : '');
}
function isHttps(u) {
return /^https:\/\//i.test(u);
}
if (source) {
sourceEl.textContent = source;
sourceLine.hidden = false;
}
if (!source || !pt || !isHttps(source)) {
setStatus(
'This import link is missing or malformed. Open the link from your ' +
'hosted session again.',
'error',
);
if (btn) btn.disabled = true;
return;
}
btn.addEventListener('click', function () {
btn.disabled = true;
setStatus('Importing your data. This can take a moment...', '');
fetch('/v1/hosted/pull-import', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ source: source, pt: pt }),
})
.then(function (r) {
return r.text().then(function (body) {
return { ok: r.ok, status: r.status, body: body };
});
})
.then(function (res) {
if (res.ok) {
var imported = 0;
var kept = 0;
try {
var data = JSON.parse(res.body);
imported = data.imported || 0;
kept = (data.skipped && data.skipped.length) || 0;
} catch (e) {
}
var msg =
'Imported ' + imported + (imported === 1 ? ' item.' : ' items.');
if (kept) {
msg += ' ' + kept + ' already existed here and were kept.';
}
setStatus(msg + ' You can now open Freenet.', 'ok');
btn.textContent = 'Done';
} else {
var reason = (res.body || '').trim();
setStatus(
reason || 'Import failed (HTTP ' + res.status + ').',
'error',
);
btn.disabled = false;
}
})
.catch(function (e) {
setStatus(
'Import failed: ' + (e && e.message ? e.message : 'network error'),
'error',
);
btn.disabled = false;
});
});
})();