import { action } from "@ember/object"; import { inject as service } from "@ember/service"; import Route from "@ember/routing/route"; import showModal from "discourse/lib/show-modal"; import I18n from "I18n"; import { next } from "@ember/runloop"; export default class AdminCustomizeThemesRoute extends Route { @service dialog; @service router; queryParams = { repoUrl: null, repoName: null, }; model() { return this.store.findAll("theme"); } setupController(controller, model) { super.setupController(controller, model); controller.set("editingTheme", false); if (controller.repoUrl) { next(() => { showModal("admin-install-theme", { admin: true, }).setProperties({ uploadUrl: controller.repoUrl, uploadName: controller.repoName, selection: "directRepoInstall", }); }); } } @action installModal() { const currentTheme = this.controllerFor("adminCustomizeThemes.show").model; if (currentTheme?.warnUnassignedComponent) { this.dialog.yesNoConfirm({ message: I18n.t("admin.customize.theme.unsaved_parent_themes"), didConfirm: () => { currentTheme.set("recentlyInstalled", false); showModal("admin-install-theme", { admin: true }); }, }); } else { showModal("admin-install-theme", { admin: true }); } } @action addTheme(theme) { this.refresh(); theme.setProperties({ recentlyInstalled: true }); this.router.transitionTo("adminCustomizeThemes.show", theme.get("id"), { queryParams: { repoName: null, repoUrl: null, }, }); } }