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) { switch (method) {
case 'GET': { case 'GET': {
const need_qrcode = searchParams.get('qr') === '1' || headers.get('x-qr') === '1'; 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': { case 'POST': {

View file

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

View file

@ -29,9 +29,9 @@
<link href="css/paste.css" rel="stylesheet"> <link href="css/paste.css" rel="stylesheet">
</head> </head>
<body> <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"> <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" <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"> aria-controls="navbar_supported_content" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <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> <a class="nav-link" href="https://pb.nekoul.com/v1">Switch to old version</a>
</li> </li>
</ul> </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" <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."> 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> </form>
</div> </div>
</div> </div>