DEV: Use Session service rather than singleton (#23813)
(where applicable)
This commit is contained in:
parent
2c490773f1
commit
484004fc5e
|
@ -1,9 +1,11 @@
|
|||
import Component from "@glimmer/component";
|
||||
import { tracked } from "@glimmer/tracking";
|
||||
import { action } from "@ember/object";
|
||||
import Session from "discourse/models/session";
|
||||
import { inject as service } from "@ember/service";
|
||||
|
||||
export default class UserMenuItemsList extends Component {
|
||||
@service session;
|
||||
|
||||
@tracked loading = false;
|
||||
@tracked items = [];
|
||||
|
||||
|
@ -67,14 +69,14 @@ export default class UserMenuItemsList extends Component {
|
|||
#getCachedItems() {
|
||||
const key = this.itemsCacheKey;
|
||||
if (key) {
|
||||
return Session.currentProp(`user-menu-items:${key}`);
|
||||
return this.session[`user-menu-items:${key}`];
|
||||
}
|
||||
}
|
||||
|
||||
#setCachedItems(newItems) {
|
||||
const key = this.itemsCacheKey;
|
||||
if (key) {
|
||||
Session.currentProp(`user-menu-items:${key}`, newItems);
|
||||
this.session.set(`user-menu-items:${key}`, newItems);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import Controller, { inject as controller } from "@ember/controller";
|
||||
import { inject as service } from "@ember/service";
|
||||
import { AUTO_DELETE_PREFERENCES } from "discourse/models/bookmark";
|
||||
import Session from "discourse/models/session";
|
||||
import { setDefaultHomepage } from "discourse/lib/utilities";
|
||||
import {
|
||||
listColorSchemes,
|
||||
|
@ -30,6 +30,8 @@ const TEXT_SIZES = ["smallest", "smaller", "normal", "larger", "largest"];
|
|||
const TITLE_COUNT_MODES = ["notifications", "contextual"];
|
||||
|
||||
export default Controller.extend({
|
||||
session: service(),
|
||||
|
||||
currentThemeId: -1,
|
||||
previewingColorScheme: false,
|
||||
selectedDarkColorSchemeId: null,
|
||||
|
@ -409,10 +411,10 @@ export default Controller.extend({
|
|||
this.themeId,
|
||||
true
|
||||
);
|
||||
Session.currentProp("darkModeAvailable", false);
|
||||
this.session.set("darkModeAvailable", false);
|
||||
} else {
|
||||
loadColorSchemeStylesheet(colorSchemeId, this.themeId, true);
|
||||
Session.currentProp("darkModeAvailable", true);
|
||||
this.session.set("darkModeAvailable", true);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import EmberObject from "@ember/object";
|
||||
import { Promise } from "rsvp";
|
||||
import RestModel from "discourse/models/rest";
|
||||
import Session from "discourse/models/session";
|
||||
import User from "discourse/models/user";
|
||||
import { ajax } from "discourse/lib/ajax";
|
||||
import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
|
||||
import { isEmpty } from "@ember/utils";
|
||||
import { notEmpty } from "@ember/object/computed";
|
||||
import deprecated from "discourse-common/lib/deprecated";
|
||||
import { inject as service } from "@ember/service";
|
||||
|
||||
function extractByKey(collection, klass) {
|
||||
const retval = {};
|
||||
|
@ -40,6 +40,7 @@ function displayCategoryInList(site, category) {
|
|||
}
|
||||
|
||||
const TopicList = RestModel.extend({
|
||||
session: service(),
|
||||
canLoadMore: notEmpty("more_topics_url"),
|
||||
|
||||
forEachNew(topics, callback) {
|
||||
|
@ -118,7 +119,7 @@ const TopicList = RestModel.extend({
|
|||
more_topics_url: result.topic_list.more_topics_url,
|
||||
});
|
||||
|
||||
Session.currentProp("topicList", this);
|
||||
this.session.set("topicList", this);
|
||||
return { moreTopicsUrl: this.more_topics_url, newTopics };
|
||||
}
|
||||
});
|
||||
|
@ -147,7 +148,7 @@ const TopicList = RestModel.extend({
|
|||
});
|
||||
|
||||
if (storeInSession) {
|
||||
Session.currentProp("topicList", this);
|
||||
this.session.set("topicList", this);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
|
@ -8,11 +8,11 @@ import { ajax } from "discourse/lib/ajax";
|
|||
import { defaultHomepage } from "discourse/lib/utilities";
|
||||
import { hash } from "rsvp";
|
||||
import showModal from "discourse/lib/show-modal";
|
||||
import Session from "discourse/models/session";
|
||||
import { inject as service } from "@ember/service";
|
||||
|
||||
export default class DiscoveryCategoriesRoute extends DiscourseRoute {
|
||||
@service router;
|
||||
@service session;
|
||||
|
||||
renderTemplate() {
|
||||
this.render("navigation/categories", { outlet: "navigation-bar" });
|
||||
|
@ -51,6 +51,8 @@ export default class DiscoveryCategoriesRoute extends DiscourseRoute {
|
|||
}
|
||||
|
||||
_loadBefore(store) {
|
||||
const session = this.session;
|
||||
|
||||
return function (topic_ids, storeInSession) {
|
||||
// refresh dupes
|
||||
this.topics.removeObjects(
|
||||
|
@ -73,7 +75,7 @@ export default class DiscoveryCategoriesRoute extends DiscourseRoute {
|
|||
});
|
||||
|
||||
if (storeInSession) {
|
||||
Session.currentProp("topicList", this);
|
||||
session.set("topicList", this);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -3,7 +3,6 @@ import EmberObject, { computed } from "@ember/object";
|
|||
import { ajax } from "discourse/lib/ajax";
|
||||
import { cancel, debounce, next, once, throttle } from "@ember/runloop";
|
||||
import discourseLater from "discourse-common/lib/later";
|
||||
import Session from "discourse/models/session";
|
||||
import { Promise } from "rsvp";
|
||||
import User from "discourse/models/user";
|
||||
import userPresent, {
|
||||
|
@ -254,8 +253,9 @@ class PresenceChannelState extends EmberObject.extend(Evented) {
|
|||
@disableImplicitInjections
|
||||
export default class PresenceService extends Service {
|
||||
@service currentUser;
|
||||
@service siteSettings;
|
||||
@service messageBus;
|
||||
@service session;
|
||||
@service siteSettings;
|
||||
|
||||
_presenceDebounceMs = DEFAULT_PRESENCE_DEBOUNCE_MS;
|
||||
|
||||
|
@ -486,7 +486,7 @@ export default class PresenceService extends Service {
|
|||
data.append("client_id", this.messageBus.clientId);
|
||||
channelsToLeave.forEach((ch) => data.append("leave_channels[]", ch));
|
||||
|
||||
data.append("authenticity_token", Session.currentProp("csrfToken"));
|
||||
data.append("authenticity_token", this.session.csrfToken);
|
||||
navigator.sendBeacon(getURL("/presence/update"), data);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import { iconNode } from "discourse-common/lib/icon-library";
|
|||
import { wantsNewWindow } from "discourse/lib/intercept-click";
|
||||
|
||||
export default createWidget("home-logo", {
|
||||
services: ["session"],
|
||||
tagName: "div.title",
|
||||
|
||||
settings: {
|
||||
|
@ -37,21 +38,18 @@ export default createWidget("home-logo", {
|
|||
},
|
||||
|
||||
logo() {
|
||||
const { siteSettings } = this,
|
||||
mobileView = this.site.mobileView;
|
||||
|
||||
const darkModeOptions = Session.currentProp("darkModeAvailable")
|
||||
const darkModeOptions = this.session.darkModeAvailable
|
||||
? { dark: true }
|
||||
: {};
|
||||
|
||||
const mobileLogoUrl = this.mobileLogoUrl(),
|
||||
mobileLogoUrlDark = this.mobileLogoUrl(darkModeOptions);
|
||||
|
||||
const showMobileLogo = mobileView && mobileLogoUrl.length > 0;
|
||||
const showMobileLogo = this.site.mobileView && mobileLogoUrl.length > 0;
|
||||
|
||||
const logoUrl = this.logoUrl(),
|
||||
logoUrlDark = this.logoUrl(darkModeOptions);
|
||||
const title = siteSettings.title;
|
||||
const title = this.siteSettings.title;
|
||||
|
||||
if (this.attrs.minimized) {
|
||||
const logoSmallUrl = this.smallLogoUrl(),
|
||||
|
|
|
@ -2,8 +2,8 @@ import { module, test } from "qunit";
|
|||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { render } from "@ember/test-helpers";
|
||||
import { count, exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import Session from "discourse/models/session";
|
||||
import MountWidget from "discourse/components/mount-widget";
|
||||
import { getOwner } from "@ember/application";
|
||||
|
||||
const bigLogo = "/images/d-logo-sketch.png?test";
|
||||
const smallLogo = "/images/d-logo-sketch-small.png?test";
|
||||
|
@ -16,8 +16,9 @@ module("Integration | Component | Widget | home-logo", function (hooks) {
|
|||
setupRenderingTest(hooks);
|
||||
|
||||
hooks.afterEach(function () {
|
||||
Session.currentProp("darkModeAvailable", null);
|
||||
Session.currentProp("defaultColorSchemeIsDark", null);
|
||||
this.session = getOwner(this).lookup("service:session");
|
||||
this.session.set("darkModeAvailable", null);
|
||||
this.session.set("defaultColorSchemeIsDark", null);
|
||||
});
|
||||
|
||||
test("basics", async function (assert) {
|
||||
|
@ -103,7 +104,7 @@ module("Integration | Component | Widget | home-logo", function (hooks) {
|
|||
test("logo with dark mode alternative", async function (assert) {
|
||||
this.siteSettings.site_logo_url = bigLogo;
|
||||
this.siteSettings.site_logo_dark_url = darkLogo;
|
||||
Session.currentProp("darkModeAvailable", true);
|
||||
this.session.set("darkModeAvailable", true);
|
||||
|
||||
await render(<template><MountWidget @widget="home-logo" /></template>);
|
||||
|
||||
|
@ -126,7 +127,7 @@ module("Integration | Component | Widget | home-logo", function (hooks) {
|
|||
this.siteSettings.site_logo_url = bigLogo;
|
||||
this.siteSettings.site_mobile_logo_url = mobileLogo;
|
||||
this.siteSettings.site_mobile_logo_dark_url = darkLogo;
|
||||
Session.currentProp("darkModeAvailable", true);
|
||||
this.session.set("darkModeAvailable", true);
|
||||
|
||||
this.site.mobileView = true;
|
||||
|
||||
|
@ -149,7 +150,7 @@ module("Integration | Component | Widget | home-logo", function (hooks) {
|
|||
test("dark mode enabled but no dark logo set", async function (assert) {
|
||||
this.siteSettings.site_logo_url = bigLogo;
|
||||
this.siteSettings.site_logo_dark_url = "";
|
||||
Session.currentProp("darkModeAvailable", true);
|
||||
this.session.set("darkModeAvailable", true);
|
||||
|
||||
await render(<template><MountWidget @widget="home-logo" /></template>);
|
||||
|
||||
|
@ -172,7 +173,7 @@ module("Integration | Component | Widget | home-logo", function (hooks) {
|
|||
test("dark color scheme and dark logo set", async function (assert) {
|
||||
this.siteSettings.site_logo_url = bigLogo;
|
||||
this.siteSettings.site_logo_dark_url = darkLogo;
|
||||
Session.currentProp("defaultColorSchemeIsDark", true);
|
||||
this.session.set("defaultColorSchemeIsDark", true);
|
||||
|
||||
await render(<template><MountWidget @widget="home-logo" /></template>);
|
||||
|
||||
|
@ -188,7 +189,7 @@ module("Integration | Component | Widget | home-logo", function (hooks) {
|
|||
test("dark color scheme and dark logo not set", async function (assert) {
|
||||
this.siteSettings.site_logo_url = bigLogo;
|
||||
this.siteSettings.site_logo_dark_url = "";
|
||||
Session.currentProp("defaultColorSchemeIsDark", true);
|
||||
this.session.set("defaultColorSchemeIsDark", true);
|
||||
|
||||
await render(<template><MountWidget @widget="home-logo" /></template>);
|
||||
|
||||
|
|
Loading…
Reference in New Issue