mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Previously, we had a `showFooter` boolean on the application controller which would be set true/false in various routes by different routes/controllers. A global `routeWillChange` hook would set it `false` before every route transition, and the destination route/controller would have to set it `true` for the footer to show correctly.
This commit replaces that with a new 'declarative' system. Instead of having to set the value true/false manually, UIs which need the footer to be hidden can simply include the `{{hide-application-footer}}` helper in their template when needed. The helper/service will automatically keep track of all the current invocations of that helper, and only show the footer when there are 0 invocations.
This significantly simplifies things, and removes the need for many observers and controller injections, both of which are considered 'code smells' in modern Ember applications.
33 lines
827 B
JavaScript
33 lines
827 B
JavaScript
import DiscourseRoute from "discourse/routes/discourse";
|
|
import ViewingActionType from "discourse/mixins/viewing-action-type";
|
|
import I18n from "I18n";
|
|
|
|
export default DiscourseRoute.extend(ViewingActionType, {
|
|
controllerName: "user-notifications",
|
|
queryParams: { filter: { refreshModel: true } },
|
|
|
|
model(params) {
|
|
const username = this.modelFor("user").get("username");
|
|
|
|
if (
|
|
this.get("currentUser.username") === username ||
|
|
this.get("currentUser.admin")
|
|
) {
|
|
return this.store.find("notification", {
|
|
username,
|
|
filter: params.filter,
|
|
});
|
|
}
|
|
},
|
|
|
|
setupController(controller) {
|
|
this._super(...arguments);
|
|
controller.set("user", this.modelFor("user"));
|
|
this.viewingActionType(-1);
|
|
},
|
|
|
|
titleToken() {
|
|
return I18n.t("user.notifications");
|
|
},
|
|
});
|