0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-22 09:20:29 +01:00
discourse-custom-wizard/assets/javascripts/discourse/routes/custom-wizard-step.js.es6
2023-09-14 14:47:52 +01:00

62 Zeilen
1,4 KiB
JavaScript

import I18n from "I18n";
import { getCachedWizard } from "../models/custom-wizard";
import Route from "@ember/routing/route";
import { scrollTop } from "discourse/mixins/scroll-top";
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
export default Route.extend({
router: service(),
beforeModel() {
const wizard = getCachedWizard();
this.set("wizard", wizard);
if (!wizard || !wizard.permitted || wizard.completed) {
this.router.replaceWith("customWizard");
}
},
model(params) {
const wizard = this.wizard;
if (wizard && wizard.steps) {
const step = wizard.steps.findBy("id", params.step_id);
return step ? step : wizard.steps[0];
} else {
return wizard;
}
},
afterModel(model) {
if (model.completed) {
return this.router.transitionTo("wizard.index");
}
return model.set("wizardId", this.wizard.id);
},
setupController(controller, model) {
let props = {
step: model,
wizard: this.wizard,
};
if (!model.permitted) {
props["stepMessage"] = {
state: "not-permitted",
text: model.permitted_message || I18n.t("wizard.step_not_permitted"),
};
if (model.index > 0) {
props["showReset"] = true;
}
}
controller.setProperties(props);
},
@action
didTransition() {
scrollTop();
return true;
},
});