Skip to content

Commit 0634074

Browse files
committed
PERF: Introduce lazyHash and update PluginOutlet calls to use it
This is a more efficient version of `{{hash`, where the values are only evaluated when they're actually accessed
1 parent 52c6c85 commit 0634074

File tree

150 files changed

+562
-361
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

150 files changed

+562
-361
lines changed

app/assets/javascripts/admin/addon/components/admin-badges-show.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Form from "discourse/components/form";
88
import PluginOutlet from "discourse/components/plugin-outlet";
99
import icon from "discourse/helpers/d-icon";
1010
import iconOrImage from "discourse/helpers/icon-or-image";
11+
import lazyHash from "discourse/helpers/lazy-hash";
1112
import routeAction from "discourse/helpers/route-action";
1213
import { ajax } from "discourse/lib/ajax";
1314
import { popupAjaxError } from "discourse/lib/ajax-error";
@@ -555,7 +556,7 @@ export default class AdminBadgesShow extends Component {
555556

556557
<PluginOutlet
557558
@name="admin-above-badge-buttons"
558-
@outletArgs={{hash badge=this.buffered form=form}}
559+
@outletArgs={{lazyHash badge=this.buffered form=form}}
559560
/>
560561

561562
<form.Actions>

app/assets/javascripts/admin/addon/components/admin-config-areas/webhooks-form.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import ConditionalLoadingSection from "discourse/components/conditional-loading-
99
import Form from "discourse/components/form";
1010
import GroupSelector from "discourse/components/group-selector";
1111
import PluginOutlet from "discourse/components/plugin-outlet";
12+
import lazyHash from "discourse/helpers/lazy-hash";
1213
import { popupAjaxError } from "discourse/lib/ajax-error";
1314
import { i18n } from "discourse-i18n";
1415
import WebhookEventChooser from "admin/components/webhook-event-chooser";
@@ -260,7 +261,7 @@ export default class AdminConfigAreasWebhookForm extends Component {
260261
<PluginOutlet
261262
@name="web-hook-fields"
262263
@connectorTagName="div"
263-
@outletArgs={{hash model=this.webhook}}
264+
@outletArgs={{lazyHash model=this.webhook}}
264265
/>
265266

266267
<form.Field

app/assets/javascripts/admin/addon/components/admin-plugins-list-item.gjs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { service } from "@ember/service";
77
import DToggleSwitch from "discourse/components/d-toggle-switch";
88
import PluginOutlet from "discourse/components/plugin-outlet";
99
import icon from "discourse/helpers/d-icon";
10+
import lazyHash from "discourse/helpers/lazy-hash";
1011
import { popupAjaxError } from "discourse/lib/ajax-error";
1112
import { i18n } from "discourse-i18n";
1213
import SiteSetting from "admin/models/site-setting";
@@ -82,7 +83,7 @@ export default class AdminPluginsListItem extends Component {
8283
<PluginOutlet
8384
@name="admin-plugin-list-name-badge-after"
8485
@connectorTagName="span"
85-
@outletArgs={{hash plugin=@plugin}}
86+
@outletArgs={{lazyHash plugin=@plugin}}
8687
/>
8788
</div>
8889
<div class="d-admin-row__overview-author admin-plugins-list__author">
@@ -109,7 +110,7 @@ export default class AdminPluginsListItem extends Component {
109110
<div class="plugin-version">
110111
<PluginOutlet
111112
@name="admin-plugin-list-item-version"
112-
@outletArgs={{hash plugin=@plugin}}
113+
@outletArgs={{lazyHash plugin=@plugin}}
113114
>
114115
{{@plugin.version}}<br />
115116
<PluginCommitHash @plugin={{@plugin}} />
@@ -122,7 +123,7 @@ export default class AdminPluginsListItem extends Component {
122123
</div>
123124
<PluginOutlet
124125
@name="admin-plugin-list-item-enabled"
125-
@outletArgs={{hash plugin=@plugin}}
126+
@outletArgs={{lazyHash plugin=@plugin}}
126127
>
127128
{{#if @plugin.enabledSetting}}
128129
<DToggleSwitch
@@ -137,7 +138,7 @@ export default class AdminPluginsListItem extends Component {
137138
<td class="d-admin-row__controls admin-plugins-list__settings">
138139
<PluginOutlet
139140
@name="admin-plugin-list-item-settings"
140-
@outletArgs={{hash plugin=@plugin}}
141+
@outletArgs={{lazyHash plugin=@plugin}}
141142
>
142143
{{#if this.showPluginSettingsButton}}
143144
{{#if @plugin.useNewShowRoute}}

app/assets/javascripts/admin/addon/components/admin-user-fields-form.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { service } from "@ember/service";
88
import { eq, or } from "truth-helpers";
99
import Form from "discourse/components/form";
1010
import PluginOutlet from "discourse/components/plugin-outlet";
11+
import lazyHash from "discourse/helpers/lazy-hash";
1112
import { popupAjaxError } from "discourse/lib/ajax-error";
1213
import { i18n } from "discourse-i18n";
1314
import ValueList from "admin/components/value-list";
@@ -250,7 +251,7 @@ export default class AdminUserFieldsForm extends Component {
250251

251252
<PluginOutlet
252253
@name="after-admin-user-fields"
253-
@outletArgs={{hash userField=@userField form=form}}
254+
@outletArgs={{lazyHash userField=@userField form=form}}
254255
/>
255256

256257
<form.Actions>

app/assets/javascripts/admin/addon/components/themes-list-item.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { htmlSafe } from "@ember/template";
88
import PluginOutlet from "discourse/components/plugin-outlet";
99
import concatClass from "discourse/helpers/concat-class";
1010
import icon from "discourse/helpers/d-icon";
11+
import lazyHash from "discourse/helpers/lazy-hash";
1112
import escape from "discourse/lib/escape";
1213
import { iconHTML } from "discourse/lib/icon-library";
1314
import { i18n } from "discourse-i18n";
@@ -88,7 +89,7 @@ export default class ThemesListItem extends Component {
8889
<PluginOutlet
8990
@name="admin-customize-themes-list-item"
9091
@connectorTagName="span"
91-
@outletArgs={{hash theme=@theme}}
92+
@outletArgs={{lazyHash theme=@theme}}
9293
/>
9394
</span>
9495

app/assets/javascripts/admin/addon/components/version-checks.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import CustomHtml from "discourse/components/custom-html";
44
import PluginOutlet from "discourse/components/plugin-outlet";
55
import icon from "discourse/helpers/d-icon";
66
import dashIfEmpty from "discourse/helpers/dash-if-empty";
7+
import lazyHash from "discourse/helpers/lazy-hash";
78
import { i18n } from "discourse-i18n";
89

910
export default class VersionChecks extends Component {
@@ -150,7 +151,7 @@ export default class VersionChecks extends Component {
150151

151152
<PluginOutlet
152153
@name="admin-upgrade-header"
153-
@outletArgs={{hash versionCheck=this.versionCheck}}
154+
@outletArgs={{lazyHash versionCheck=this.versionCheck}}
154155
/>
155156
</div>
156157
</template>

app/assets/javascripts/admin/addon/templates/customize-themes-show.gjs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import icon from "discourse/helpers/d-icon";
1212
import formatDate from "discourse/helpers/format-date";
1313
import formatUsername from "discourse/helpers/format-username";
1414
import htmlSafe from "discourse/helpers/html-safe";
15+
import lazyHash from "discourse/helpers/lazy-hash";
1516
import { i18n } from "discourse-i18n";
1617
import InlineEditCheckbox from "admin/components/inline-edit-checkbox";
1718
import ThemeSettingEditor from "admin/components/theme-setting-editor";
@@ -55,7 +56,7 @@ export default RouteTemplate(
5556
<PluginOutlet
5657
@name="admin-customize-themes-show-top"
5758
@connectorTagName="div"
58-
@outletArgs={{hash theme=@controller.model}}
59+
@outletArgs={{lazyHash theme=@controller.model}}
5960
/>
6061
</span>
6162

@@ -84,7 +85,7 @@ export default RouteTemplate(
8485

8586
<PluginOutlet
8687
@name="admin-customize-theme-before-errors"
87-
@outletArgs={{hash theme=@controller.model}}
88+
@outletArgs={{lazyHash theme=@controller.model}}
8889
/>
8990

9091
{{#each @controller.model.errors as |error|}}
@@ -564,7 +565,7 @@ export default RouteTemplate(
564565

565566
<PluginOutlet
566567
@name="admin-customize-theme-before-controls"
567-
@outletArgs={{hash theme=@controller.model}}
568+
@outletArgs={{lazyHash theme=@controller.model}}
568569
/>
569570
<div class="theme-controls">
570571
<a

app/assets/javascripts/admin/addon/templates/dashboard_general.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import basePath from "discourse/helpers/base-path";
88
import formatDate from "discourse/helpers/format-date";
99
import getUrl from "discourse/helpers/get-url";
1010
import htmlSafe from "discourse/helpers/html-safe";
11+
import lazyHash from "discourse/helpers/lazy-hash";
1112
import { i18n } from "discourse-i18n";
1213
import AdminReport from "admin/components/admin-report";
1314
import DashboardPeriodSelector from "admin/components/dashboard-period-selector";
@@ -223,7 +224,7 @@ export default RouteTemplate(
223224
<PluginOutlet
224225
@name="admin-dashboard-general-bottom"
225226
@connectorTagName="div"
226-
@outletArgs={{hash filters=@controller.filters}}
227+
@outletArgs={{lazyHash filters=@controller.filters}}
227228
/>
228229
</ConditionalLoadingSpinner>
229230
</template>

app/assets/javascripts/admin/addon/templates/dashboard_moderation.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { hash } from "@ember/helper";
22
import RouteTemplate from "ember-route-template";
33
import PluginOutlet from "discourse/components/plugin-outlet";
44
import getUrl from "discourse/helpers/get-url";
5+
import lazyHash from "discourse/helpers/lazy-hash";
56
import { i18n } from "discourse-i18n";
67
import AdminReport from "admin/components/admin-report";
78
import DashboardPeriodSelector from "admin/components/dashboard-period-selector";
@@ -63,7 +64,7 @@ export default RouteTemplate(
6364
<PluginOutlet
6465
@name="admin-dashboard-moderation-bottom"
6566
@connectorTagName="div"
66-
@outletArgs={{hash filters=@controller.lastWeekFilters}}
67+
@outletArgs={{lazyHash filters=@controller.lastWeekFilters}}
6768
/>
6869
</div>
6970
</div>

app/assets/javascripts/admin/addon/templates/embedding-index.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { hash } from "@ember/helper";
22
import RouteTemplate from "ember-route-template";
33
import PluginOutlet from "discourse/components/plugin-outlet";
44
import htmlSafe from "discourse/helpers/html-safe";
5+
import lazyHash from "discourse/helpers/lazy-hash";
56
import { i18n } from "discourse-i18n";
67
import AdminConfigAreaCard from "admin/components/admin-config-area-card";
78
import AdminConfigAreaEmptyList from "admin/components/admin-config-area-empty-list";
@@ -60,7 +61,7 @@ export default RouteTemplate(
6061

6162
<PluginOutlet
6263
@name="after-embeddable-hosts-table"
63-
@outletArgs={{hash embedding=@controller.embedding}}
64+
@outletArgs={{lazyHash embedding=@controller.embedding}}
6465
/>
6566
</template>
6667
);

app/assets/javascripts/admin/addon/templates/plugins-index.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import DPageHeader from "discourse/components/d-page-header";
55
import NavItem from "discourse/components/nav-item";
66
import PluginOutlet from "discourse/components/plugin-outlet";
77
import icon from "discourse/helpers/d-icon";
8+
import lazyHash from "discourse/helpers/lazy-hash";
89
import { i18n } from "discourse-i18n";
910
import AdminPluginsList from "admin/components/admin-plugins-list";
1011

@@ -64,7 +65,7 @@ export default RouteTemplate(
6465
<PluginOutlet
6566
@name="admin-below-plugins-index"
6667
@connectorTagName="div"
67-
@outletArgs={{hash model=@controller.model}}
68+
@outletArgs={{lazyHash model=@controller.model}}
6869
/>
6970
</span>
7071
</div>

app/assets/javascripts/admin/addon/templates/user-badges.gjs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import UserBadge from "discourse/components/user-badge";
99
import ageWithTooltip from "discourse/helpers/age-with-tooltip";
1010
import avatar from "discourse/helpers/avatar";
1111
import icon from "discourse/helpers/d-icon";
12+
import lazyHash from "discourse/helpers/lazy-hash";
1213
import { i18n } from "discourse-i18n";
1314
import ComboBox from "select-kit/components/combo-box";
1415

@@ -34,7 +35,7 @@ export default RouteTemplate(
3435
{{else}}
3536
<PluginOutlet
3637
@name="badge-granter-form"
37-
@outletArgs={{hash
38+
@outletArgs={{lazyHash
3839
availableBadges=@controller.availableBadges
3940
userBadges=@controller.userBadges
4041
user=@controller.user
@@ -67,7 +68,7 @@ export default RouteTemplate(
6768

6869
<PluginOutlet
6970
@name="badge-granter-table"
70-
@outletArgs={{hash
71+
@outletArgs={{lazyHash
7172
groupedBadges=@controller.groupedBadges
7273
revokeBadge=@controller.revokeBadge
7374
expandGroup=@controller.expandGroup

app/assets/javascripts/admin/addon/templates/user-index.gjs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import formatDate from "discourse/helpers/format-date";
1111
import formatDuration from "discourse/helpers/format-duration";
1212
import htmlSafe from "discourse/helpers/html-safe";
1313
import i18nYesNo from "discourse/helpers/i18n-yes-no";
14+
import lazyHash from "discourse/helpers/lazy-hash";
1415
import routeAction from "discourse/helpers/route-action";
1516
import { i18n } from "discourse-i18n";
1617
import AdminEditableField from "admin/components/admin-editable-field";
@@ -56,7 +57,7 @@ export default RouteTemplate(
5657
{{/if}}
5758
<PluginOutlet
5859
@name="admin-user-controls-after"
59-
@outletArgs={{hash model=@controller.model}}
60+
@outletArgs={{lazyHash model=@controller.model}}
6061
/>
6162
</div>
6263

@@ -80,7 +81,7 @@ export default RouteTemplate(
8081

8182
<PluginOutlet
8283
@name="admin-user-below-names"
83-
@outletArgs={{hash user=@controller.model}}
84+
@outletArgs={{lazyHash user=@controller.model}}
8485
/>
8586

8687
{{#if @controller.canCheckEmails}}
@@ -319,7 +320,7 @@ export default RouteTemplate(
319320
<PluginOutlet
320321
@name="admin-user-details"
321322
@connectorTagName="div"
322-
@outletArgs={{hash model=@controller.model}}
323+
@outletArgs={{lazyHash model=@controller.model}}
323324
/>
324325
</span>
325326

@@ -940,7 +941,7 @@ export default RouteTemplate(
940941
<PluginOutlet
941942
@name="after-user-details"
942943
@connectorTagName="div"
943-
@outletArgs={{hash model=@controller.model}}
944+
@outletArgs={{lazyHash model=@controller.model}}
944945
/>
945946
</span>
946947

app/assets/javascripts/admin/addon/templates/users-list-show.gjs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import icon from "discourse/helpers/d-icon";
1717
import formatDuration from "discourse/helpers/format-duration";
1818
import htmlSafe from "discourse/helpers/html-safe";
1919
import i18nYesNo from "discourse/helpers/i18n-yes-no";
20+
import lazyHash from "discourse/helpers/lazy-hash";
2021
import number from "discourse/helpers/number";
2122
import rawDate from "discourse/helpers/raw-date";
2223
import { i18n } from "discourse-i18n";
@@ -195,7 +196,10 @@ export default RouteTemplate(
195196
{{/if}}
196197
<PluginOutlet
197198
@name="admin-users-list-thead-after"
198-
@outletArgs={{hash order=@controller.order asc=@controller.asc}}
199+
@outletArgs={{lazyHash
200+
order=@controller.order
201+
asc=@controller.asc
202+
}}
199203
/>
200204

201205
{{#if @controller.siteSettings.must_approve_users}}
@@ -370,7 +374,7 @@ export default RouteTemplate(
370374

371375
<PluginOutlet
372376
@name="admin-users-list-td-after"
373-
@outletArgs={{hash user=user query=@controller.query}}
377+
@outletArgs={{lazyHash user=user query=@controller.query}}
374378
/>
375379

376380
{{#if @controller.siteSettings.must_approve_users}}
@@ -415,7 +419,7 @@ export default RouteTemplate(
415419
<PluginOutlet
416420
@name="admin-users-list-icon"
417421
@connectorTagName="div"
418-
@outletArgs={{hash user=user query=@controller.query}}
422+
@outletArgs={{lazyHash user=user query=@controller.query}}
419423
/>
420424
</div>
421425
</div>

app/assets/javascripts/discourse/app/components/about-page.gjs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import AboutPageExtraGroups from "discourse/components/about-page-extra-groups";
88
import AboutPageUsers from "discourse/components/about-page-users";
99
import PluginOutlet from "discourse/components/plugin-outlet";
1010
import icon from "discourse/helpers/d-icon";
11+
import lazyHash from "discourse/helpers/lazy-hash";
1112
import escape from "discourse/lib/escape";
1213
import { number } from "discourse/lib/formatter";
1314
import I18n, { i18n } from "discourse-i18n";
@@ -259,7 +260,7 @@ export default class AboutPage extends Component {
259260
<PluginOutlet
260261
@name="about-after-description"
261262
@connectorTagName="section"
262-
@outletArgs={{hash model=@model}}
263+
@outletArgs={{lazyHash model=@model}}
263264
/>
264265
</section>
265266
<div class="about__main-content">
@@ -289,7 +290,7 @@ export default class AboutPage extends Component {
289290
<PluginOutlet
290291
@name="about-after-admins"
291292
@connectorTagName="section"
292-
@outletArgs={{hash model=@model}}
293+
@outletArgs={{lazyHash model=@model}}
293294
/>
294295

295296
{{#if @model.moderators.length}}
@@ -301,7 +302,7 @@ export default class AboutPage extends Component {
301302
<PluginOutlet
302303
@name="about-after-moderators"
303304
@connectorTagName="section"
304-
@outletArgs={{hash model=@model}}
305+
@outletArgs={{lazyHash model=@model}}
305306
/>
306307
{{#if this.showExtraGroups}}
307308
<AboutPageExtraGroups />

app/assets/javascripts/discourse/app/components/badge-card.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { eq, not } from "truth-helpers";
77
import DButton from "discourse/components/d-button";
88
import icon from "discourse/helpers/d-icon";
99
import iconOrImage from "discourse/helpers/icon-or-image";
10+
import lazyHash from "discourse/helpers/lazy-hash";
1011
import number from "discourse/helpers/number";
1112
import { emojiUnescape, sanitize } from "discourse/lib/text";
1213
import { i18n } from "discourse-i18n";
@@ -52,7 +53,7 @@ export default class BadgeCard extends Component {
5253
<div class="badge-contents">
5354
<PluginOutlet
5455
@name="badge-contents-top"
55-
@outletArgs={{hash badge=@badge url=this.url}}
56+
@outletArgs={{lazyHash badge=@badge url=this.url}}
5657
/>
5758
<span
5859
class="badge-icon {{@badge.badgeTypeClassName}}"

0 commit comments

Comments
 (0)