Pour votre information, ce plugin génère une erreur :
plugin-api.gjs:234 [PLUGIN discourse-suggested-edits] Tentative de modification de "service:composer", mais il a déjà été initialisé plus tôt dans le processus de démarrage (par exemple via une lookup()). Supprimez cette lookup() ou déplacez l'appel modifyClass plus tôt dans le processus de démarrage pour que les modifications prennent effet. https://meta.discourse.org/t/262064
_resolveClass @ plugin-api.gjs:234
Il semble que l’initialisateur appelle api.customizeComposerText() juste avant api.modifyClass("service:composer", {...}). Je pense que le code doit être réorganisé pour que api.modifyClass s’exécute avant api.customizeComposerText :
peut-être que cela devrait ressembler à ceci ?
// Modifiez d'abord la classe du compositeur
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);
}
},
});
// Ajoutez les personnalisations après que la classe a été modifiée
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";
}
},
});
