DEV: Remove `Discourse` constants from focus mixin.
Also removes the mixin which was only used in `app/app`
This commit is contained in:
parent
10ca6968af
commit
7c2d3275f4
|
@ -1,45 +0,0 @@
|
||||||
import { bind } from "@ember/runloop";
|
|
||||||
import { getOwner } from "discourse-common/lib/get-owner";
|
|
||||||
import Mixin from "@ember/object/mixin";
|
|
||||||
|
|
||||||
export default Mixin.create({
|
|
||||||
ready() {
|
|
||||||
this._super(...arguments);
|
|
||||||
|
|
||||||
this._onChangeHandler = bind(this, this._onChange);
|
|
||||||
|
|
||||||
// Default to true
|
|
||||||
Discourse.set("hasFocus", true);
|
|
||||||
|
|
||||||
document.addEventListener("visibilitychange", this._onChangeHandler);
|
|
||||||
document.addEventListener("resume", this._onChangeHandler);
|
|
||||||
document.addEventListener("freeze", this._onChangeHandler);
|
|
||||||
},
|
|
||||||
|
|
||||||
reset() {
|
|
||||||
this._super(...arguments);
|
|
||||||
|
|
||||||
document.removeEventListener("visibilitychange", this._onChangeHandler);
|
|
||||||
document.removeEventListener("resume", this._onChangeHandler);
|
|
||||||
document.removeEventListener("freeze", this._onChangeHandler);
|
|
||||||
|
|
||||||
this._onChangeHandler = null;
|
|
||||||
},
|
|
||||||
|
|
||||||
_onChange() {
|
|
||||||
const container = getOwner(this);
|
|
||||||
const appEvents = container.lookup("service:app-events");
|
|
||||||
|
|
||||||
if (document.visibilityState === "hidden") {
|
|
||||||
if (Discourse.hasFocus) {
|
|
||||||
Discourse.set("hasFocus", false);
|
|
||||||
appEvents.trigger("discourse:focus-changed", false);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!Discourse.hasFocus) {
|
|
||||||
Discourse.set("hasFocus", true);
|
|
||||||
appEvents.trigger("discourse:focus-changed", true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -2,15 +2,18 @@
|
||||||
import Application from "@ember/application";
|
import Application from "@ember/application";
|
||||||
import { computed } from "@ember/object";
|
import { computed } from "@ember/object";
|
||||||
import { buildResolver } from "discourse-common/resolver";
|
import { buildResolver } from "discourse-common/resolver";
|
||||||
|
import { bind } from "@ember/runloop";
|
||||||
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
||||||
import FocusEvent from "discourse-common/mixins/focus-event";
|
|
||||||
|
|
||||||
const _pluginCallbacks = [];
|
const _pluginCallbacks = [];
|
||||||
|
|
||||||
const Discourse = Application.extend(FocusEvent, {
|
const Discourse = Application.extend({
|
||||||
rootElement: "#main",
|
rootElement: "#main",
|
||||||
_docTitle: document.title,
|
_docTitle: document.title,
|
||||||
__widget_helpers: {},
|
__widget_helpers: {},
|
||||||
|
hasFocus: null,
|
||||||
|
_boundFocusChange: null,
|
||||||
|
|
||||||
customEvents: {
|
customEvents: {
|
||||||
paste: "paste"
|
paste: "paste"
|
||||||
},
|
},
|
||||||
|
@ -18,6 +21,24 @@ const Discourse = Application.extend(FocusEvent, {
|
||||||
reset() {
|
reset() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
Mousetrap.reset();
|
Mousetrap.reset();
|
||||||
|
|
||||||
|
document.removeEventListener("visibilitychange", this._boundFocusChange);
|
||||||
|
document.removeEventListener("resume", this._boundFocusChange);
|
||||||
|
document.removeEventListener("freeze", this._boundFocusChange);
|
||||||
|
|
||||||
|
this._boundFocusChange = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
ready() {
|
||||||
|
this._super(...arguments);
|
||||||
|
this._boundFocusChange = bind(this, this._focusChanged);
|
||||||
|
|
||||||
|
// Default to true
|
||||||
|
this.set("hasFocus", true);
|
||||||
|
|
||||||
|
document.addEventListener("visibilitychange", this._boundFocusChange);
|
||||||
|
document.addEventListener("resume", this._boundFocusChange);
|
||||||
|
document.addEventListener("freeze", this._boundFocusChange);
|
||||||
},
|
},
|
||||||
|
|
||||||
getURL(url) {
|
getURL(url) {
|
||||||
|
@ -178,7 +199,19 @@ const Discourse = Application.extend(FocusEvent, {
|
||||||
}
|
}
|
||||||
return this.currentAssetVersion;
|
return this.currentAssetVersion;
|
||||||
}
|
}
|
||||||
})
|
}),
|
||||||
|
|
||||||
|
_focusChanged() {
|
||||||
|
if (document.visibilityState === "hidden") {
|
||||||
|
if (this.hasFocus) {
|
||||||
|
this.set("hasFocus", false);
|
||||||
|
this.appEvents.trigger("discourse:focus-changed", false);
|
||||||
|
}
|
||||||
|
} else if (!this.hasFocus) {
|
||||||
|
this.set("hasFocus", true);
|
||||||
|
this.appEvents.trigger("discourse:focus-changed", true);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
export default Discourse;
|
export default Discourse;
|
||||||
|
|
|
@ -20,6 +20,7 @@ export default {
|
||||||
|
|
||||||
// backwards compatibility: remove when plugins have updated
|
// backwards compatibility: remove when plugins have updated
|
||||||
app.register("store:main", Store);
|
app.register("store:main", Store);
|
||||||
|
app.appEvents = container.lookup("service:app-events");
|
||||||
|
|
||||||
if (!app.hasRegistration("service:store")) {
|
if (!app.hasRegistration("service:store")) {
|
||||||
app.register("service:store", Store);
|
app.register("service:store", Store);
|
||||||
|
|
Loading…
Reference in New Issue