You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hydro/packages/ui-default/components/star/star.page.js

34 lines
973 B
JavaScript

import { AutoloadPage } from 'vj/misc/Page';
import request from 'vj/utils/request';
function setStarButtonState($starButton, star) {
if (star) {
$starButton.addClass('activated');
} else {
$starButton.removeClass('activated');
}
}
const starPage = new AutoloadPage('starPage', () => {
$(document).on('click', '.star', (ev) => {
const $button = $(ev.currentTarget);
const currentState = $button.hasClass('activated');
const $form = $button.closest('form');
const $op = $form.find('[name="operation"]');
if (!['star', 'unstar'].includes($op.val())) return;
$op.val(currentState ? 'unstar' : 'star');
setStarButtonState($button, !currentState);
request
.post($form.attr('action'), $form)
.then((data) => {
setStarButtonState($button, data.star);
})
.catch(() => {
// TODO: notify failure
setStarButtonState($button, currentState);
});
});
});
export default starPage;