Add view paste detail support (web)

Add json response on settings (paste)

Signed-off-by: Joe Ma <rikkaneko23@gmail.com>
This commit is contained in:
Joe Ma 2023-03-27 01:01:50 +08:00
parent 0f89088486
commit 32b4da79a6
No known key found for this signature in database
GPG key ID: 7A0ECF5F5EDC587F
3 changed files with 33 additions and 10 deletions

View file

@ -278,7 +278,8 @@ export default {
switch (method) {
case 'GET': {
const need_qrcode = searchParams.get('qr') === '1' || headers.get('x-qr') === '1';
return await get_paste_info(uuid, descriptor, env, is_browser, need_qrcode);
const reply_json = searchParams.get('json') === '1' || headers.get('x-json') === '1';
return await get_paste_info(uuid, descriptor, env, is_browser, need_qrcode, reply_json);
}
case 'POST': {

View file

@ -68,7 +68,7 @@ function remove_pop_alert() {
alert.remove();
}
function build_paste_modal(paste_info, show_qrcode = true) {
function build_paste_modal(paste_info, show_qrcode = true, saved = true) {
// Show saved modal
if (!!!paste_info && !!!saved_modal) {
console.err('Invalid call to build_paste_modal().');
@ -80,7 +80,6 @@ function build_paste_modal(paste_info, show_qrcode = true) {
return;
}
saved_modal = null;
paste_modal.uuid.text(paste_info.link);
paste_modal.uuid.prop('href', paste_info.link);
paste_modal.qrcode.prop('src', paste_info.link_qr);
@ -95,7 +94,7 @@ function build_paste_modal(paste_info, show_qrcode = true) {
$(`#paste_info_${key}`).text(val ?? '-');
});
let modal = new bootstrap.Modal(paste_modal.modal);
saved_modal = modal;
if (saved) saved_modal = modal;
modal.show();
}
@ -121,6 +120,7 @@ $(function () {
let show_saved_btn = $('#show_saved_button');
let go_btn = $('#go_button');
let go_id = $('#go_paste_id');
let view_btn = $('#view_info_button');
// Enable bootstrap tooltips
const tooltip_trigger_list = [].slice.call($('[data-bs-toggle="tooltip"]'));
@ -231,9 +231,8 @@ $(function () {
body: filtered,
});
const paste_info = await res.json();
if (res.ok) {
const paste_info = await res.json();
show_pop_alert('Paste created!', 'alert-success');
pass_input.val('');
build_paste_modal(paste_info, show_qrcode);
@ -266,6 +265,28 @@ $(function () {
}
window.open(`https://pb.nekoul.com/${uuid}`);
});
view_btn.on('click', async function () {
const uuid = go_id.val();
if (uuid.length !== 4) {
show_pop_alert('Invalid Paste ID.', 'alert-warning');
return;
}
try {
const res = await fetch(`${endpoint}/${uuid}/settings?${new URLSearchParams({json: '1'})}`);
if (res.ok) {
const paste_info = await res.json();
build_paste_modal(paste_info, true);
} else {
show_pop_alert('Invalid Paste ID.', 'alert-warning');
}
} catch (err) {
console.log('error', err);
show_pop_alert(err.message, 'alert-danger');
}
});
});
function select_input_type(name) {

View file

@ -29,9 +29,9 @@
<link href="css/paste.css" rel="stylesheet">
</head>
<body>
<nav class="navbar sticky-top navbar-expand-lg navbar-dark bg-dark">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<span class="navbar-brand mb-0 h1">Paste</span>
<span class="navbar-brand">Paste</span>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar_supported_content"
aria-controls="navbar_supported_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
@ -48,10 +48,11 @@
<a class="nav-link" href="https://pb.nekoul.com/v1">Switch to old version</a>
</li>
</ul>
<form class="d-flex">
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Paste ID" aria-label="go" id="go_paste_id"
data-bs-toggle="tooltip" data-bs-placement="bottom" title="Paste ID should be in 4 characters.">
<button class="btn btn-outline-success" type="button" id="go_button">Go</button>
<button class="btn btn-outline-success me-2" type="button" id="go_button">Go</button>
<button class="btn btn-outline-success" type="button" id="view_info_button">Detail</button>
</form>
</div>
</div>