FEATURE: trigger app event for click tracking (#25381)

* FEATURE: trigger app event for click tracking

* fix the build
This commit is contained in:
Arpit Jalan 2024-01-23 16:32:07 +05:30 committed by GitHub
parent eff485e4c0
commit fdf332f3aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 10 additions and 5 deletions

View File

@ -1,3 +1,4 @@
import { getOwner } from "@ember/application";
import Component from "@ember/component"; import Component from "@ember/component";
import { alias } from "@ember/object/computed"; import { alias } from "@ember/object/computed";
import { schedule, scheduleOnce, throttle } from "@ember/runloop"; import { schedule, scheduleOnce, throttle } from "@ember/runloop";
@ -105,7 +106,7 @@ export default Component.extend(
$(this.element).on( $(this.element).on(
"click.discourse-redirect", "click.discourse-redirect",
".cooked a, a.track-link", ".cooked a, a.track-link",
(e) => ClickTrack.trackClick(e, this.siteSettings) (e) => ClickTrack.trackClick(e, getOwner(this))
); );
this.appEvents.on("discourse:focus-changed", this, "gotFocus"); this.appEvents.on("discourse:focus-changed", this, "gotFocus");
this.appEvents.on("post:highlight", this, "_highlightPost"); this.appEvents.on("post:highlight", this, "_highlightPost");

View File

@ -1,10 +1,11 @@
import { getOwner } from "@ember/application";
import Component from "@ember/component"; import Component from "@ember/component";
import ClickTrack from "discourse/lib/click-track"; import ClickTrack from "discourse/lib/click-track";
export default Component.extend({ export default Component.extend({
click(event) { click(event) {
if (event?.target?.tagName === "A") { if (event?.target?.tagName === "A") {
return ClickTrack.trackClick(event, this.siteSettings); return ClickTrack.trackClick(event, getOwner(this));
} }
}, },
}); });

View File

@ -1,3 +1,4 @@
import { getOwner } from "@ember/application";
import Component from "@ember/component"; import Component from "@ember/component";
import { on } from "@ember/object/evented"; import { on } from "@ember/object/evented";
import { later } from "@ember/runloop"; import { later } from "@ember/runloop";
@ -39,7 +40,7 @@ export default Component.extend(LoadMore, {
() => false () => false
); );
$(this.element).on("click.discourse-redirect", ".excerpt a", (e) => { $(this.element).on("click.discourse-redirect", ".excerpt a", (e) => {
return ClickTrack.trackClick(e, this.siteSettings); return ClickTrack.trackClick(e, getOwner(this));
}); });
this._updateLastDecoratedElement(); this._updateLastDecoratedElement();
this.appEvents.trigger("decorate-non-stream-cooked-element", this.element); this.appEvents.trigger("decorate-non-stream-cooked-element", this.element);

View File

@ -73,7 +73,7 @@ export function openLinkInNewTab(event, link) {
} }
export default { export default {
trackClick(e, siteSettings, { returnPromise = false } = {}) { trackClick(e, owner, { returnPromise = false } = {}) {
// right clicks are not tracked // right clicks are not tracked
if (e.which === 3) { if (e.which === 3) {
return true; return true;
@ -95,11 +95,13 @@ export default {
if (!href || href.startsWith("mailto:")) { if (!href || href.startsWith("mailto:")) {
return true; return true;
} }
owner?.lookup("service:app-events").trigger("click-tracked", href);
if (link.classList.contains("attachment")) { if (link.classList.contains("attachment")) {
// Warn the user if they cannot download the file. // Warn the user if they cannot download the file.
if ( if (
siteSettings?.prevent_anons_from_downloading_files && owner?.lookup("service:site-settings")
?.prevent_anons_from_downloading_files &&
!User.current() !User.current()
) { ) {
const dialog = getOwnerWithFallback(this).lookup("service:dialog"); const dialog = getOwnerWithFallback(this).lookup("service:dialog");