DEV: Replace `current-user:main` with `service:current-user`
This will allow consumers to inject it using `currentUser: service()` in preparation for the removal of implicit injections in Ember 4.0. `current-user:main` is still available and will print a deprecation notice.
This commit is contained in:
parent
2463a8d568
commit
4c2f08b6e2
|
@ -68,6 +68,11 @@ const DEPRECATED_MODULES = new Map(
|
|||
since: "2.9.0.beta7",
|
||||
dropFrom: "3.0.0",
|
||||
},
|
||||
"current-user:main": {
|
||||
newName: "service:current-user",
|
||||
since: "2.9.0.beta7",
|
||||
dropFrom: "3.0.0",
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
|
|
|
@ -18,12 +18,7 @@ export default class DiscourseGlimmerComponent extends GlimmerComponent {
|
|||
@service keyValueStore;
|
||||
@service pmTopicTrackingState;
|
||||
@service siteSettings;
|
||||
|
||||
@cached
|
||||
get currentUser() {
|
||||
const applicationInstance = getOwner(this);
|
||||
return applicationInstance.lookup("current-user:main");
|
||||
}
|
||||
@service currentUser;
|
||||
|
||||
@cached
|
||||
get messageBus() {
|
||||
|
|
|
@ -21,7 +21,7 @@ export function autoLoadModules(container, registry) {
|
|||
siteSettings: container.lookup("service:site-settings"),
|
||||
keyValueStore: container.lookup("service:key-value-store"),
|
||||
capabilities: container.lookup("capabilities:main"),
|
||||
currentUser: container.lookup("current-user:main"),
|
||||
currentUser: container.lookup("service:current-user"),
|
||||
site: container.lookup("site:main"),
|
||||
session: container.lookup("session:main"),
|
||||
topicTrackingState: container.lookup("topic-tracking-state:main"),
|
||||
|
|
|
@ -8,7 +8,7 @@ export default {
|
|||
return;
|
||||
} // must have the Badging API
|
||||
|
||||
const user = container.lookup("current-user:main");
|
||||
const user = container.lookup("service:current-user");
|
||||
if (!user) {
|
||||
return;
|
||||
} // must be logged in
|
||||
|
|
|
@ -14,7 +14,7 @@ export default {
|
|||
const siteSettings = container.lookup("service:site-settings");
|
||||
const messageBus = container.lookup("service:message-bus");
|
||||
const keyValueStore = container.lookup("service:key-value-store");
|
||||
const currentUser = container.lookup("current-user:main");
|
||||
const currentUser = container.lookup("service:current-user");
|
||||
LogsNotice.reopenClass(Singleton, {
|
||||
createCurrent() {
|
||||
return this.create({
|
||||
|
|
|
@ -41,7 +41,7 @@ export default {
|
|||
}
|
||||
|
||||
const messageBus = container.lookup("service:message-bus"),
|
||||
user = container.lookup("current-user:main"),
|
||||
user = container.lookup("service:current-user"),
|
||||
siteSettings = container.lookup("service:site-settings");
|
||||
|
||||
messageBus.alwaysLongPoll = !isProduction();
|
||||
|
|
|
@ -13,7 +13,7 @@ export default {
|
|||
const session = Session.current();
|
||||
const siteSettings = container.lookup("service:site-settings");
|
||||
const keyValueStore = container.lookup("service:key-value-store");
|
||||
const user = container.lookup("current-user:main");
|
||||
const user = container.lookup("service:current-user");
|
||||
const appEvents = container.lookup("service:app-events");
|
||||
|
||||
// Preconditions
|
||||
|
|
|
@ -19,7 +19,7 @@ export default {
|
|||
after: "message-bus",
|
||||
|
||||
initialize(container) {
|
||||
const user = container.lookup("current-user:main");
|
||||
const user = container.lookup("service:current-user");
|
||||
const bus = container.lookup("service:message-bus");
|
||||
const appEvents = container.lookup("service:app-events");
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ export default {
|
|||
after: "inject-objects",
|
||||
|
||||
initialize(container) {
|
||||
const currentUser = container.lookup("current-user:main");
|
||||
const currentUser = container.lookup("service:current-user");
|
||||
if (currentUser) {
|
||||
const username = currentUser.get("username");
|
||||
const escapedUsername = escapeRegExp(username);
|
||||
|
|
|
@ -135,7 +135,7 @@ export default {
|
|||
|
||||
this.searchService = this.container.lookup("service:search");
|
||||
this.appEvents = this.container.lookup("service:app-events");
|
||||
this.currentUser = this.container.lookup("current-user:main");
|
||||
this.currentUser = this.container.lookup("service:current-user");
|
||||
this.siteSettings = this.container.lookup("service:site-settings");
|
||||
|
||||
// Disable the shortcut if private messages are disabled
|
||||
|
|
|
@ -152,7 +152,7 @@ class PluginApi {
|
|||
* If the user is not logged in, it will be `null`.
|
||||
**/
|
||||
getCurrentUser() {
|
||||
return this._lookupContainer("current-user:main");
|
||||
return this._lookupContainer("service:current-user");
|
||||
}
|
||||
|
||||
_lookupContainer(path) {
|
||||
|
|
|
@ -8,7 +8,7 @@ import User from "discourse/models/user";
|
|||
|
||||
const ALL_TARGETS = ["controller", "component", "route", "model", "adapter"];
|
||||
|
||||
function injectServiceIntoService({ app, property, specifier }) {
|
||||
export function injectServiceIntoService({ app, property, specifier }) {
|
||||
// app.inject doesn't allow implicit injection of services into services.
|
||||
// However, we need to do it in order to convert our old service-like objects
|
||||
// into true services, without breaking existing implicit injections.
|
||||
|
@ -34,8 +34,10 @@ export default {
|
|||
const siteSettings = container.lookup("service:site-settings");
|
||||
|
||||
const currentUser = User.current();
|
||||
app.register("current-user:main", currentUser, { instantiate: false });
|
||||
app.currentUser = currentUser;
|
||||
|
||||
// We can't use a 'real' service factory (i.e. services/current-user.js) because we need
|
||||
// to register a null value for anon
|
||||
app.register("service:current-user", currentUser, { instantiate: false });
|
||||
|
||||
const topicTrackingState = TopicTrackingState.create({
|
||||
messageBus: container.lookup("service:message-bus"),
|
||||
|
@ -87,8 +89,13 @@ export default {
|
|||
});
|
||||
|
||||
if (currentUser) {
|
||||
["controller", "component", "route", "service"].forEach((t) => {
|
||||
app.inject(t, "currentUser", "current-user:main");
|
||||
["controller", "component", "route"].forEach((t) => {
|
||||
app.inject(t, "currentUser", "service:current-user");
|
||||
});
|
||||
injectServiceIntoService({
|
||||
app,
|
||||
property: "currentUser",
|
||||
specifier: "service:current-user",
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ export default {
|
|||
return;
|
||||
}
|
||||
|
||||
this.currentUser = container.lookup("current-user:main");
|
||||
this.currentUser = container.lookup("service:current-user");
|
||||
|
||||
getAndClearUnhandledThemeErrors().forEach((e) => {
|
||||
reportThemeError(this.currentUser, e);
|
||||
|
|
|
@ -142,7 +142,7 @@ export default class Widget {
|
|||
this.key = this.buildKey ? this.buildKey(attrs) : null;
|
||||
this.site = register.lookup("site:main");
|
||||
this.siteSettings = register.lookup("service:site-settings");
|
||||
this.currentUser = register.lookup("current-user:main");
|
||||
this.currentUser = register.lookup("service:current-user");
|
||||
this.capabilities = register.lookup("capabilities:main");
|
||||
this.store = register.lookup("service:store");
|
||||
this.appEvents = register.lookup("service:app-events");
|
||||
|
|
|
@ -8,6 +8,7 @@ import QUnit, { test } from "qunit";
|
|||
import { setupRenderingTest as emberSetupRenderingTest } from "ember-qunit";
|
||||
import { currentSettings } from "discourse/tests/helpers/site-settings";
|
||||
import { testCleanup } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { injectServiceIntoService } from "discourse/pre-initializers/inject-discourse-objects";
|
||||
|
||||
export function setupRenderingTest(hooks) {
|
||||
emberSetupRenderingTest(hooks);
|
||||
|
@ -31,12 +32,16 @@ export function setupRenderingTest(hooks) {
|
|||
timezone: "Australia/Brisbane",
|
||||
});
|
||||
this.currentUser = currentUser;
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.register("current-user:main", currentUser, {
|
||||
this.owner.unregister("service:current-user");
|
||||
this.owner.register("service:current-user", currentUser, {
|
||||
instantiate: false,
|
||||
});
|
||||
this.owner.inject("component", "currentUser", "current-user:main");
|
||||
this.owner.inject("service", "currentUser", "current-user:main");
|
||||
this.owner.inject("component", "currentUser", "service:current-user");
|
||||
injectServiceIntoService({
|
||||
app: this.owner.application,
|
||||
property: "currentUser",
|
||||
specifier: "service:current-user",
|
||||
});
|
||||
|
||||
this.owner.unregister("topic-tracking-state:main");
|
||||
this.owner.register(
|
||||
|
@ -85,7 +90,7 @@ export default function (name, hooks, opts) {
|
|||
|
||||
test(name, async function (assert) {
|
||||
if (opts.anonymous) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
}
|
||||
|
||||
if (opts.beforeEach) {
|
||||
|
|
|
@ -32,7 +32,7 @@ module("Integration | Component | site-header", function (hooks) {
|
|||
});
|
||||
|
||||
test("do not call authenticated endpoints as anonymous", async function (assert) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
|
||||
await render(hbs`<SiteHeader />`);
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ module("Integration | Component | Widget | hamburger-menu", function (hooks) {
|
|||
});
|
||||
|
||||
test("general links", async function (assert) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
|
||||
await render(hbs`<MountWidget @widget="hamburger-menu" />`);
|
||||
|
||||
|
@ -86,7 +86,7 @@ module("Integration | Component | Widget | hamburger-menu", function (hooks) {
|
|||
let maxCategoriesToDisplay;
|
||||
|
||||
test("top categories - anonymous", async function (assert) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
this.siteSettings.header_dropdown_category_count = 8;
|
||||
|
||||
await render(hbs`<MountWidget @widget="hamburger-menu" />`);
|
||||
|
@ -102,7 +102,7 @@ module("Integration | Component | Widget | hamburger-menu", function (hooks) {
|
|||
});
|
||||
|
||||
test("top categories - allow_uncategorized_topics", async function (assert) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
this.siteSettings.allow_uncategorized_topics = false;
|
||||
this.siteSettings.header_dropdown_category_count = 8;
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ module("Integration | Component | Widget | header", function (hooks) {
|
|||
});
|
||||
|
||||
test("sign up / login buttons", async function (assert) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
this.set("args", { canSignUp: true });
|
||||
this.set("showCreateAccount", () => (this.signupShown = true));
|
||||
this.set("showLogin", () => (this.loginShown = true));
|
||||
|
@ -40,7 +40,7 @@ module("Integration | Component | Widget | header", function (hooks) {
|
|||
});
|
||||
|
||||
test("anon when login required", async function (assert) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
this.set("args", { canSignUp: true });
|
||||
this.set("showCreateAccount", () => (this.signupShown = true));
|
||||
this.set("showLogin", () => (this.loginShown = true));
|
||||
|
|
|
@ -237,7 +237,7 @@ module("Integration | Component | Widget | post", function (hooks) {
|
|||
});
|
||||
|
||||
test("anon liking", async function (assert) {
|
||||
this.owner.unregister("current-user:main");
|
||||
this.owner.unregister("service:current-user");
|
||||
const args = { showLike: true };
|
||||
this.set("args", args);
|
||||
this.set("showLogin", () => (this.loginShown = true));
|
||||
|
|
|
@ -21,7 +21,7 @@ discourseModule("Unit | Controller | topic", function (hooks) {
|
|||
});
|
||||
|
||||
hooks.afterEach(function () {
|
||||
this.registry.unregister("current-user:main");
|
||||
this.registry.unregister("service:current-user");
|
||||
let topic = this.container.lookup("controller:topic");
|
||||
topic.setProperties({
|
||||
selectedPostIds: [],
|
||||
|
@ -264,10 +264,14 @@ discourseModule("Unit | Controller | topic", function (hooks) {
|
|||
|
||||
test("canDeleteSelected", function (assert) {
|
||||
const currentUser = User.create({ admin: false });
|
||||
this.registry.register("current-user:main", currentUser, {
|
||||
this.registry.register("service:current-user", currentUser, {
|
||||
instantiate: false,
|
||||
});
|
||||
this.registry.injection("controller", "currentUser", "current-user:main");
|
||||
this.registry.injection(
|
||||
"controller",
|
||||
"currentUser",
|
||||
"service:current-user"
|
||||
);
|
||||
let model = topicWithStream({
|
||||
posts: [
|
||||
{ id: 1, can_delete: false },
|
||||
|
@ -362,10 +366,14 @@ discourseModule("Unit | Controller | topic", function (hooks) {
|
|||
|
||||
test("canChangeOwner", function (assert) {
|
||||
const currentUser = User.create({ admin: false });
|
||||
this.registry.register("current-user:main", currentUser, {
|
||||
this.registry.register("service:current-user", currentUser, {
|
||||
instantiate: false,
|
||||
});
|
||||
this.registry.injection("controller", "currentUser", "current-user:main");
|
||||
this.registry.injection(
|
||||
"controller",
|
||||
"currentUser",
|
||||
"service:current-user"
|
||||
);
|
||||
|
||||
let model = topicWithStream({
|
||||
posts: [
|
||||
|
@ -405,10 +413,14 @@ discourseModule("Unit | Controller | topic", function (hooks) {
|
|||
|
||||
test("modCanChangeOwner", function (assert) {
|
||||
const currentUser = User.create({ moderator: false });
|
||||
this.registry.register("current-user:main", currentUser, {
|
||||
this.registry.register("service:current-user", currentUser, {
|
||||
instantiate: false,
|
||||
});
|
||||
this.registry.injection("controller", "currentUser", "current-user:main");
|
||||
this.registry.injection(
|
||||
"controller",
|
||||
"currentUser",
|
||||
"service:current-user"
|
||||
);
|
||||
|
||||
let model = topicWithStream({
|
||||
posts: [
|
||||
|
@ -667,10 +679,14 @@ discourseModule("Unit | Controller | topic", function (hooks) {
|
|||
});
|
||||
|
||||
const currentUser = EmberObject.create({ moderator: true });
|
||||
this.registry.register("current-user:main", currentUser, {
|
||||
this.registry.register("service:current-user", currentUser, {
|
||||
instantiate: false,
|
||||
});
|
||||
this.registry.injection("controller", "currentUser", "current-user:main");
|
||||
this.registry.injection(
|
||||
"controller",
|
||||
"currentUser",
|
||||
"service:current-user"
|
||||
);
|
||||
|
||||
let model = topicWithStream({
|
||||
stream: [2, 3, 4],
|
||||
|
|
|
@ -5,7 +5,7 @@ acceptance("current-user", function (needs) {
|
|||
needs.user();
|
||||
|
||||
test("currentUser has appEvents", function (assert) {
|
||||
let currentUser = this.container.lookup("current-user:main");
|
||||
let currentUser = this.container.lookup("service:current-user");
|
||||
assert.ok(currentUser.appEvents);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue