Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 10 additions & 27 deletions static/lib/quill-nbb.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ define('quill-nbb', [
'composer/resize',
'components',
'slugify',
], (Quill, resize, components, slugify) => {
'alerts',
], (Quill, resize, components, slugify, alerts) => {
$(window).on('action:composer.loaded', (ev, data) => {
const postContainer = $(`.composer[data-uuid="${data.post_uuid}"]`);
const targetEl = postContainer.find('.write-container div');
Expand Down Expand Up @@ -70,34 +71,19 @@ define('quill-nbb', [
value = JSON.parse(value);
quill.setContents(value, 'user');
} catch (e) {
app.alertError('[[error:invalid-json]]');
alerts.error('[[error:invalid-json]]');
}
});

$(window).on('action:composer.uploadUpdate', (evt, data) => {
const filename = data.filename.replace(/^\d+_\d+_/, '');
const alertId = generateAlertId(data.post_uuid, filename);
if (!window.quill.uploads[filename]) {
console.warn(`[quill/uploads] Unable to find file (${filename}).`);
app.removeAlert(alertId);
return;
}

if (!data.text.startsWith('/')) {
app.alert({
alert_id: alertId,
title: data.filename.replace(/\d_\d+_/, ''),
message: data.text,
timeout: 1000,
});
}
// Upload progress is handled globally by uploadHelpers
});

$(window).on('action:composer.upload', (evt, data) => {
const quill = components.get('composer').filter(`[data-uuid="${data.post_uuid}"]`).find('.ql-container').data('quill');
data.files.forEach((file) => {
const alertId = generateAlertId(data.post_uuid, file.filename);
app.removeAlert(alertId);
alerts.remove(alertId);

// Image vs. file upload
if (file.isImage) {
Expand Down Expand Up @@ -129,13 +115,7 @@ define('quill-nbb', [
});

$(window).on('action:composer.uploadStart', (evt, data) => {
data.files.forEach((file) => {
app.alert({
alert_id: generateAlertId(data.post_uuid, file.filename),
title: file.filename.replace(/\d_\d+_/, ''),
message: data.text,
});
});
// Upload start toast is handled globally by uploadHelpers
});

$(window).on('action:composer.insertIntoTextarea', (evt, data) => {
Expand Down Expand Up @@ -420,7 +400,10 @@ window.quill.configureToolbar = async (targetEl, data) => {
if (app.user.privileges[privilege]) {
const name = privilege === 'upload:post:image' ? 'picture' : 'upload';
group.unshift(name);
toolbar.handlers[name] = toolbarHandlers[name].bind($('.formatting-bar'));
// Execute handler in the context of the active composer instance
toolbar.handlers[name] = function () {
return toolbarHandlers[name].apply(data.postContainer, arguments);
};
}
});
toolbar.container.push(group);
Expand Down