From be55367d6f36b754fb3e5ab2123b9a4344bf82a9 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 2 Aug 2022 23:55:20 +0100 Subject: [PATCH] DEV: Replace `session:main` with `service:session` (#17765) This will allow consumers to inject it using `session: service()` in preparation for the removal of implicit injections in Ember 4.0. `session:main` is still available and will print a deprecation notice. --- .../javascripts/discourse-common/addon/resolver.js | 5 +++++ .../javascripts/discourse/app/components/glimmer.js | 7 +------ .../discourse/app/initializers/auto-load-modules.js | 2 +- .../discourse/app/initializers/csrf-token.js | 2 +- .../discourse/app/initializers/live-development.js | 2 +- .../discourse/app/initializers/post-decorations.js | 2 +- .../app/initializers/register-service-worker.js | 2 +- .../app/pre-initializers/inject-discourse-objects.js | 11 ++++++++--- .../app/pre-initializers/svg-sprite-fontawesome.js | 2 +- 9 files changed, 20 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/discourse-common/addon/resolver.js b/app/assets/javascripts/discourse-common/addon/resolver.js index 1cb42376d18..7ba6dd1f1ff 100644 --- a/app/assets/javascripts/discourse-common/addon/resolver.js +++ b/app/assets/javascripts/discourse-common/addon/resolver.js @@ -73,6 +73,11 @@ const DEPRECATED_MODULES = new Map( since: "2.9.0.beta7", dropFrom: "3.0.0", }, + "session:main": { + newName: "service:session", + since: "2.9.0.beta7", + dropFrom: "3.0.0", + }, }) ); diff --git a/app/assets/javascripts/discourse/app/components/glimmer.js b/app/assets/javascripts/discourse/app/components/glimmer.js index 6ff852cd638..1910705410f 100644 --- a/app/assets/javascripts/discourse/app/components/glimmer.js +++ b/app/assets/javascripts/discourse/app/components/glimmer.js @@ -20,6 +20,7 @@ export default class DiscourseGlimmerComponent extends GlimmerComponent { @service siteSettings; @service messageBus; @service currentUser; + @service session; @cached get topicTrackingState() { @@ -32,10 +33,4 @@ export default class DiscourseGlimmerComponent extends GlimmerComponent { const applicationInstance = getOwner(this); return applicationInstance.lookup("site:main"); } - - @cached - get session() { - const applicationInstance = getOwner(this); - return applicationInstance.lookup("session:main"); - } } diff --git a/app/assets/javascripts/discourse/app/initializers/auto-load-modules.js b/app/assets/javascripts/discourse/app/initializers/auto-load-modules.js index b61726b3229..c782483e5c9 100644 --- a/app/assets/javascripts/discourse/app/initializers/auto-load-modules.js +++ b/app/assets/javascripts/discourse/app/initializers/auto-load-modules.js @@ -23,7 +23,7 @@ export function autoLoadModules(container, registry) { capabilities: container.lookup("capabilities:main"), currentUser: container.lookup("service:current-user"), site: container.lookup("site:main"), - session: container.lookup("session:main"), + session: container.lookup("service:session"), topicTrackingState: container.lookup("topic-tracking-state:main"), registry, }; diff --git a/app/assets/javascripts/discourse/app/initializers/csrf-token.js b/app/assets/javascripts/discourse/app/initializers/csrf-token.js index abc5ac548bb..6af8eebf869 100644 --- a/app/assets/javascripts/discourse/app/initializers/csrf-token.js +++ b/app/assets/javascripts/discourse/app/initializers/csrf-token.js @@ -7,7 +7,7 @@ export default { name: "csrf-token", initialize(container) { // Add a CSRF token to all AJAX requests - let session = container.lookup("session:main"); + let session = container.lookup("service:session"); session.set( "csrfToken", document.head.querySelector("meta[name=csrf-token]")?.content diff --git a/app/assets/javascripts/discourse/app/initializers/live-development.js b/app/assets/javascripts/discourse/app/initializers/live-development.js index 056197ff956..65be3e36377 100644 --- a/app/assets/javascripts/discourse/app/initializers/live-development.js +++ b/app/assets/javascripts/discourse/app/initializers/live-development.js @@ -8,7 +8,7 @@ export default { initialize(container) { const messageBus = container.lookup("service:message-bus"); - const session = container.lookup("session:main"); + const session = container.lookup("service:session"); // Preserve preview_theme_id=## and pp=async-flamegraph parameters across pages const params = new URLSearchParams(window.location.search); diff --git a/app/assets/javascripts/discourse/app/initializers/post-decorations.js b/app/assets/javascripts/discourse/app/initializers/post-decorations.js index 61a8353f195..dc18583805c 100644 --- a/app/assets/javascripts/discourse/app/initializers/post-decorations.js +++ b/app/assets/javascripts/discourse/app/initializers/post-decorations.js @@ -15,7 +15,7 @@ export default { initialize(container) { withPluginApi("0.1", (api) => { const siteSettings = container.lookup("service:site-settings"); - const session = container.lookup("session:main"); + const session = container.lookup("service:session"); const site = container.lookup("site:main"); api.decorateCookedElement( (elem) => { diff --git a/app/assets/javascripts/discourse/app/initializers/register-service-worker.js b/app/assets/javascripts/discourse/app/initializers/register-service-worker.js index 3255a8139ba..aae5f42a87f 100644 --- a/app/assets/javascripts/discourse/app/initializers/register-service-worker.js +++ b/app/assets/javascripts/discourse/app/initializers/register-service-worker.js @@ -4,7 +4,7 @@ export default { name: "register-service-worker", initialize(container) { - let { serviceWorkerURL } = container.lookup("session:main"); + let { serviceWorkerURL } = container.lookup("service:session"); registerServiceWorker(container, serviceWorkerURL); }, }; diff --git a/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js b/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js index d4a94bf2b17..3ed9412c460 100644 --- a/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js +++ b/app/assets/javascripts/discourse/app/pre-initializers/inject-discourse-objects.js @@ -20,6 +20,7 @@ export function injectServiceIntoService({ app, property, specifier }) { app.inject(specifier, property, "discourse:null"); // Bypass the validation in `app.inject` by adding directly to the array + app.__registry__._typeInjections["service"] ??= []; app.__registry__._typeInjections["service"].push({ property, specifier, @@ -53,7 +54,7 @@ export default { app.register("site:main", site, { instantiate: false }); const session = Session.current(); - app.register("session:main", session, { instantiate: false }); + app.register("service:session", session, { instantiate: false }); app.register("location:discourse-location", DiscourseLocation); @@ -63,14 +64,18 @@ export default { app.inject(t, "store", "service:store"); app.inject(t, "site", "site:main"); app.inject(t, "searchService", "service:search"); - app.inject(t, "session", "session:main"); + app.inject(t, "session", "service:session"); app.inject(t, "messageBus", "service:message-bus"); app.inject(t, "siteSettings", "service:site-settings"); app.inject(t, "topicTrackingState", "topic-tracking-state:main"); app.inject(t, "keyValueStore", "service:key-value-store"); }); - app.inject("service", "session", "session:main"); + injectServiceIntoService({ + app, + property: "session", + specifier: "service:session", + }); injectServiceIntoService({ app, property: "messageBus", diff --git a/app/assets/javascripts/discourse/app/pre-initializers/svg-sprite-fontawesome.js b/app/assets/javascripts/discourse/app/pre-initializers/svg-sprite-fontawesome.js index ca501366e05..7547b1769cc 100644 --- a/app/assets/javascripts/discourse/app/pre-initializers/svg-sprite-fontawesome.js +++ b/app/assets/javascripts/discourse/app/pre-initializers/svg-sprite-fontawesome.js @@ -5,7 +5,7 @@ export default { after: "discourse-bootstrap", initialize(container) { - let session = container.lookup("session:main"); + let session = container.lookup("service:session"); if (session.svgSpritePath) { loadSprites(session.svgSpritePath, "fontawesome"); }