From 5b45021c256b509c6d5eddccd22c0a0961b7d955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Saquetim?= Date: Wed, 26 Mar 2025 21:49:11 -0300 Subject: [PATCH 1/2] DEV: Remove the legacy widget post menu code --- .../extend-for-translate-button.js | 127 ++---------------- 1 file changed, 11 insertions(+), 116 deletions(-) diff --git a/assets/javascripts/discourse/initializers/extend-for-translate-button.js b/assets/javascripts/discourse/initializers/extend-for-translate-button.js index 42e582aa..b674ff99 100644 --- a/assets/javascripts/discourse/initializers/extend-for-translate-button.js +++ b/assets/javascripts/discourse/initializers/extend-for-translate-button.js @@ -38,130 +38,25 @@ function initializeTranslation(api) { customizePostMenu(api); } -function customizePostMenu(api, container) { - const transformerRegistered = api.registerValueTransformer( +function customizePostMenu(api) { + api.registerValueTransformer( "post-menu-buttons", ({ value: dag, context: { firstButtonKey } }) => { dag.add("translate", ToggleTranslationButton, { before: firstButtonKey }); } ); - if (transformerRegistered) { - // the plugin outlet is not updated when the post instance is modified unless we register the new properties as - // tracked - api.addTrackedPostProperties( - "detectedLang", - "isTranslating", - "isTranslated", - "translatedText", - "translatedTitle" - ); - - api.renderBeforeWrapperOutlet("post-menu", TranslatedPost); - } - - const silencedKey = - transformerRegistered && "discourse.post-menu-widget-overrides"; - - withSilencedDeprecations(silencedKey, () => - customizeWidgetPostMenu(api, container) - ); -} - -function customizeWidgetPostMenu(api) { - api.includePostAttributes( - "can_translate", - "translated_text", - "detected_lang", - "translated_title" + // the plugin outlet is not updated when the post instance is modified unless we register the new properties as + // tracked + api.addTrackedPostProperties( + "detectedLang", + "isTranslating", + "isTranslated", + "translatedText", + "translatedTitle" ); - const siteSettings = api.container.lookup("service:site-settings"); - api.decorateWidget("post-menu:before", (dec) => { - if (!dec.state.isTranslated) { - return; - } - - if (dec.state.isTranslating) { - return dec.h("div.spinner.small"); - } - - const language = dec.attrs.detected_lang; - const translator = siteSettings.translator_provider; - - let titleElements = []; - - if (dec.attrs.translated_title) { - titleElements = [ - dec.h("div.topic-attribution", dec.attrs.translated_title), - ]; - } - - return dec.h("div.post-translation", [ - dec.h("hr"), - ...titleElements, - dec.h( - "div.post-attribution", - i18n("translator.translated_from", { language, translator }) - ), - dec.cooked(dec.attrs.translated_text), - ]); - }); - - api.attachWidgetAction("post-menu", "translate", function () { - const state = this.state; - state.isTranslated = true; - state.isTranslating = true; - this.scheduleRerender(); - - const post = this.findAncestorModel(); - - if (post) { - return ajax("/translator/translate", { - type: "POST", - data: { post_id: post.get("id") }, - }) - .then(function (res) { - post.setProperties({ - translated_text: res.translation, - detected_lang: res.detected_lang, - translated_title: res.title_translation, - }); - }) - .catch((error) => { - popupAjaxError(error); - state.isTranslating = false; - state.isTranslated = false; - }) - .finally(() => (state.isTranslating = false)); - } - }); - - api.attachWidgetAction("post-menu", "hideTranslation", function () { - this.state.isTranslated = false; - const post = this.findAncestorModel(); - if (post) { - post.set("translated_text", ""); - } - }); - - api.addPostMenuButton("translate", (attrs, state) => { - if (!attrs.can_translate) { - return; - } - - const [action, title] = !state.isTranslated - ? ["translate", "translator.view_translation"] - : ["hideTranslation", "translator.hide_translation"]; - - return { - action, - title, - icon: "globe", - position: "first", - className: state.isTranslated ? "translated" : null, - }; - }); + api.renderBeforeWrapperOutlet("post-menu", TranslatedPost); } export default { From 20d46a2ebfcf1ceb37d5c21a12e0bf85ce1102bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Saquetim?= Date: Wed, 26 Mar 2025 22:04:35 -0300 Subject: [PATCH 2/2] Linting --- .../discourse/initializers/extend-for-translate-button.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/assets/javascripts/discourse/initializers/extend-for-translate-button.js b/assets/javascripts/discourse/initializers/extend-for-translate-button.js index b674ff99..1f8b2c4f 100644 --- a/assets/javascripts/discourse/initializers/extend-for-translate-button.js +++ b/assets/javascripts/discourse/initializers/extend-for-translate-button.js @@ -1,8 +1,4 @@ -import { ajax } from "discourse/lib/ajax"; -import { popupAjaxError } from "discourse/lib/ajax-error"; -import { withSilencedDeprecations } from "discourse/lib/deprecated"; import { withPluginApi } from "discourse/lib/plugin-api"; -import { i18n } from "discourse-i18n"; import LanguageSwitcher from "../components/language-switcher"; import ToggleTranslationButton from "../components/post-menu/toggle-translation-button"; import ShowOriginalContent from "../components/show-original-content";