Per tua informazione, questo plugin sta generando un errore:
plugin-api.gjs:234 [PLUGIN discourse-suggested-edits] Tentativo di modifica di "service:composer", ma è già stato inizializzato in precedenza durante il processo di avvio (ad esempio tramite una lookup()). Rimuovi quella lookup o sposta la chiamata a modifyClass in una fase precedente del processo di avvio affinché le modifiche abbiano effetto. https://meta.discourse.org/t/262064
_resolveClass @ plugin-api.gjs:234
Sembra che l’inizializzatore stia chiamando api.customizeComposerText() subito prima di api.modifyClass("service:composer", {...}). Penso che il codice debba essere riordinato in modo che api.modifyClass venga eseguito prima di api.customizeComposerText:
forse dovrebbe essere così?
// modifica prima la classe del composer
api.modifyClass("service:composer", {
pluginId: "discourse-suggested-edits",
async open(opts) {
if (isSuggestedEditAction(opts.action) && this.model) {
this.model.set("disableDrafts", true);
this.skipAutoSave = true;
this.close();
this.skipAutoSave = false;
}
setSuggestEditActive(
isSuggestedEditAction(opts.action),
opts.metaData?.originalRaw
);
await this._super(opts);
if (isSuggestedEditModel(this.model)) {
this.model.setProperties({
disableDrafts: true,
draftStatus: null,
draftConflictUser: null,
});
}
},
cancelComposer(opts) {
if (isSuggestedEditModel(this.model)) {
setSuggestEditActive(false);
this.skipAutoSave = true;
this.close();
this.appEvents.trigger("composer:cancelled");
this.skipAutoSave = false;
return Promise.resolve();
}
return this._super(opts);
},
destroyDraft() {
if (isSuggestedEditModel(this.model)) {
return Promise.resolve();
}
return this._super();
},
_saveDraft(showToast = false) {
if (isSuggestedEditModel(this.model)) {
return Promise.resolve();
}
return this._super(showToast);
},
save(force, options = {}) {
if (isSuggestedEditModel(this.model)) {
return this._saveSuggestedEdit();
}
return this._super(force, options);
},
async _saveSuggestedEdit() {
const model = this.model;
const meta = model.metaData || {};
if (model.reply?.trim() === meta.originalRaw?.trim()) {
this.toasts.error({
data: {
message: i18n("discourse_suggested_edits.composer.no_changes"),
},
duration: "short",
});
return;
}
try {
if (meta.existingSuggestionId) {
await updateSuggestedEdit(meta.existingSuggestionId, {
raw: model.reply,
reason: meta.reason,
});
this.toasts.success({
data: {
message: i18n("discourse_suggested_edits.toast.updated"),
},
duration: "short",
});
} else {
const result = await createSuggestedEdit({
postId: meta.postId,
raw: model.reply,
reason: meta.reason,
});
if (model.topic) {
model.topic.set(
"own_pending_suggested_edit_id",
result.suggested_edit.id
);
}
this.toasts.success({
data: {
message: i18n("discourse_suggested_edits.toast.created"),
},
duration: "short",
});
}
setSuggestEditActive(false);
this.close();
} catch (e) {
popupAjaxError(e);
}
},
});
// aggiungi le personalizzazioni dopo che la classe è stata modificata
api.customizeComposerText({
actionTitle(model) {
if (model.action === SUGGEST_EDIT_ACTION) {
return i18n("discourse_suggested_edits.composer.action_title");
}
},
saveLabel(model) {
if (model.action === SUGGEST_EDIT_ACTION) {
return "discourse_suggested_edits.composer.save_label";
}
},
});
