DEV: move groups data loading from controller to route (#29130)

This commit is contained in:
Kris 2024-10-08 15:40:46 -04:00 committed by GitHub
parent da77d06ebb
commit 2099c33fa7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 91 additions and 103 deletions

View File

@ -30,17 +30,6 @@ export default class GroupsIndexController extends Controller {
return types; return types;
} }
loadGroups(params) {
this.set("isLoading", true);
this.store
.findAll("group", params)
.then((groups) => {
this.set("groups", groups);
})
.finally(() => this.set("isLoading", false));
}
@action @action
onFilterChanged(filter) { onFilterChanged(filter) {
discourseDebounce(this, this._debouncedFilter, filter, INPUT_DELAY); discourseDebounce(this, this._debouncedFilter, filter, INPUT_DELAY);

View File

@ -14,11 +14,13 @@ export default class GroupsIndexRoute extends DiscourseRoute {
return I18n.t("groups.index.title"); return I18n.t("groups.index.title");
} }
model(params) { async model(params) {
return params; const groups = await this.store.findAll("group", params);
return { groups };
} }
setupController(controller, params) { setupController(controller, model) {
controller.loadGroups(params); super.setupController(controller, model);
controller.set("groups", model.groups);
} }
} }

View File

@ -37,97 +37,94 @@
</div> </div>
</div> </div>
<ConditionalLoadingSpinner @condition={{this.isLoading}}> {{#if this.groups}}
{{#if this.groups}} <LoadMore
<LoadMore @selector=".groups-boxes .group-box"
@selector=".groups-boxes .group-box" @action={{action "loadMore"}}
@action={{action "loadMore"}} >
> <div class="container">
<div class="container"> <div class="groups-boxes">
<div class="groups-boxes"> {{#each this.groups as |group|}}
{{#each this.groups as |group|}} <LinkTo
<LinkTo @route="group.members"
@route="group.members" @model={{group.name}}
@model={{group.name}} class="group-box"
class="group-box" data-group-name={{group.name}}
data-group-name={{group.name}} >
> <div class="group-box-inner">
<div class="group-box-inner"> <div class="group-info-wrapper">
<div class="group-info-wrapper"> {{#if group.flair_url}}
{{#if group.flair_url}} <span class="group-avatar-flair">
<span class="group-avatar-flair"> <AvatarFlair
<AvatarFlair @flairName={{group.name}}
@flairName={{group.name}} @flairUrl={{group.flair_url}}
@flairUrl={{group.flair_url}} @flairBgColor={{group.flair_bg_color}}
@flairBgColor={{group.flair_bg_color}} @flairColor={{group.flair_color}}
@flairColor={{group.flair_color}}
/>
</span>
{{/if}}
<span class="group-info">
<GroupsInfo @group={{group}} />
<div class="group-user-count">{{d-icon
"user"
}}{{group.user_count}}</div>
</span>
</div>
<div class="group-description">{{html-safe
group.bio_excerpt
}}</div>
<div class="group-membership">
<GroupMembershipButton
@tagName=""
@model={{group}}
@showLogin={{route-action "showLogin"}}
>
{{#if group.is_group_owner}}
<span class="is-group-owner">
{{d-icon "shield-halved"}}
{{i18n "groups.index.is_group_owner"}}
</span>
{{else if group.is_group_user}}
<span class="is-group-member">
{{d-icon "check"}}
{{i18n "groups.index.is_group_user"}}
</span>
{{else if group.public_admission}}
{{i18n "groups.index.public"}}
{{else if group.isPrivate}}
{{d-icon "far-eye-slash"}}
{{i18n "groups.index.private"}}
{{else}}
{{#if group.automatic}}
{{i18n "groups.index.automatic"}}
{{else}}
{{d-icon "ban"}}
{{i18n "groups.index.closed"}}
{{/if}}
{{/if}}
</GroupMembershipButton>
<span>
<PluginOutlet
@name="group-index-box-after"
@connectorTagName="div"
@outletArgs={{hash model=group}}
/> />
</span> </span>
</div> {{/if}}
</div>
</LinkTo>
{{/each}}
</div>
</div>
</LoadMore>
<ConditionalLoadingSpinner @condition={{this.groups.loadingMore}} /> <span class="group-info">
{{else}} <GroupsInfo @group={{group}} />
<p role="status">{{i18n "groups.index.empty"}}</p> <div class="group-user-count">{{d-icon
{{/if}} "user"
</ConditionalLoadingSpinner> }}{{group.user_count}}</div>
</span>
</div>
<div class="group-description">{{html-safe
group.bio_excerpt
}}</div>
<div class="group-membership">
<GroupMembershipButton
@tagName=""
@model={{group}}
@showLogin={{route-action "showLogin"}}
>
{{#if group.is_group_owner}}
<span class="is-group-owner">
{{d-icon "shield-halved"}}
{{i18n "groups.index.is_group_owner"}}
</span>
{{else if group.is_group_user}}
<span class="is-group-member">
{{d-icon "check"}}
{{i18n "groups.index.is_group_user"}}
</span>
{{else if group.public_admission}}
{{i18n "groups.index.public"}}
{{else if group.isPrivate}}
{{d-icon "far-eye-slash"}}
{{i18n "groups.index.private"}}
{{else}}
{{#if group.automatic}}
{{i18n "groups.index.automatic"}}
{{else}}
{{d-icon "ban"}}
{{i18n "groups.index.closed"}}
{{/if}}
{{/if}}
</GroupMembershipButton>
<span>
<PluginOutlet
@name="group-index-box-after"
@connectorTagName="div"
@outletArgs={{hash model=group}}
/>
</span>
</div>
</div>
</LinkTo>
{{/each}}
</div>
</div>
</LoadMore>
<ConditionalLoadingSpinner @condition={{this.groups.loadingMore}} />
{{else}}
<p role="status">{{i18n "groups.index.empty"}}</p>
{{/if}}
</section> </section>
<PluginOutlet @name="after-groups-index-container" @connectorTagName="div" /> <PluginOutlet @name="after-groups-index-container" @connectorTagName="div" />