-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FIX: Do not render user-avatar-flair element when user has no flair (#…
…13369) Rendering an empty flair element with the css `background-image: url();` causes the browser to attempt an image request against the current document URL. Making duplicate requests for the document URL can cause some unusual race conditions, especially related to cookies. If this user-avatar-flair element was present on the site homepage (e.g. if categories+latest is the homepage), then it can prevent the signup flow from working correctly. This commit updates the user-avatar-flair component to be a transparent wrapper around the avatar-flair component. If the user has no flair, no avatar-flair element will be rendered. This avoids the `background-image: url();` situation, and fixes the auth flow. This commit also removes the duplicate avatar flair rendering from the `latest-topic-list-item` component. This wasn't particularly obvious, since the duplicate flairs were being rendered directly on top of each other.
- Loading branch information
1 parent
178b294
commit c44650e
Showing
4 changed files
with
51 additions
and
36 deletions.
There are no files selected for viewing
55 changes: 26 additions & 29 deletions
55
app/assets/javascripts/discourse/app/components/user-avatar-flair.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,41 +1,38 @@ | ||
import MountWidget from "discourse/components/mount-widget"; | ||
import { observes } from "discourse-common/utils/decorators"; | ||
import Component from "@ember/component"; | ||
import autoGroupFlairForUser from "discourse/lib/avatar-flair"; | ||
import discourseComputed from "discourse-common/utils/decorators"; | ||
|
||
export default MountWidget.extend({ | ||
widget: "avatar-flair", | ||
export default Component.extend({ | ||
tagName: "", | ||
|
||
@observes("user") | ||
_rerender() { | ||
this.queueRerender(); | ||
@discourseComputed("user") | ||
flair(user) { | ||
if (!user) { | ||
return; | ||
} | ||
return this.primaryGroupFlair(user) || this.automaticGroupFlair(user); | ||
}, | ||
|
||
buildArgs() { | ||
if (!this.user) { | ||
return; | ||
primaryGroupFlair(user) { | ||
if (user.primary_group_flair_url || user.primary_group_flair_bg_color) { | ||
return { | ||
flairURL: user.primary_group_flair_url, | ||
flairBgColor: user.primary_group_flair_bg_color, | ||
flairColor: user.primary_group_flair_color, | ||
groupName: user.primary_group_name, | ||
}; | ||
} | ||
}, | ||
|
||
if ( | ||
this.user.primary_group_flair_url || | ||
this.user.primary_group_flair_bg_color | ||
) { | ||
automaticGroupFlair(user) { | ||
const autoFlairAttrs = autoGroupFlairForUser(this.site, user); | ||
if (autoFlairAttrs) { | ||
return { | ||
primary_group_flair_url: this.user.primary_group_flair_url, | ||
primary_group_flair_bg_color: this.user.primary_group_flair_bg_color, | ||
primary_group_flair_color: this.user.primary_group_flair_color, | ||
primary_group_name: this.user.primary_group_name, | ||
flairURL: autoFlairAttrs.primary_group_flair_url, | ||
flairBgColor: autoFlairAttrs.primary_group_flair_bg_color, | ||
flairColor: autoFlairAttrs.primary_group_flair_color, | ||
groupName: autoFlairAttrs.primary_group_name, | ||
}; | ||
} else { | ||
const autoFlairAttrs = autoGroupFlairForUser(this.site, this.user); | ||
if (autoFlairAttrs) { | ||
return { | ||
primary_group_flair_url: autoFlairAttrs.primary_group_flair_url, | ||
primary_group_flair_bg_color: | ||
autoFlairAttrs.primary_group_flair_bg_color, | ||
primary_group_flair_color: autoFlairAttrs.primary_group_flair_color, | ||
primary_group_name: autoFlairAttrs.primary_group_name, | ||
}; | ||
} | ||
} | ||
}, | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
app/assets/javascripts/discourse/app/templates/components/user-avatar-flair.hbs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{{#if flair}} | ||
{{avatar-flair | ||
flairURL=flair.flairURL | ||
flairBgColor=flair.flairBgColor | ||
flairColor=flair.flairColor | ||
groupName=flair.groupName}} | ||
{{/if}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters