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