Skip to content

Commit

Permalink
Merge pull request #7920 from stopfstedt/replace-resources-with-track…
Browse files Browse the repository at this point in the history
…ed-async-data

replace AsyncProcess Resource with TrackedAsyncData  equivalent.
  • Loading branch information
jrjohnson committed Jul 5, 2024
2 parents 48330d9 + 1bce039 commit a089c31
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 26 deletions.
18 changes: 11 additions & 7 deletions packages/frontend/app/components/courses/root.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ import Component from '@glimmer/component';
import { service } from '@ember/service';
import { dropTask } from 'ember-concurrency';
import { DateTime } from 'luxon';
import { use } from 'ember-could-get-used-to-this';
import { TrackedAsyncData } from 'ember-async-data';
import { cached, tracked } from '@glimmer/tracking';
import AsyncProcess from 'ilios-common/classes/async-process';
import { findById } from 'ilios-common/utils/array-helpers';
import { action } from '@ember/object';

Expand All @@ -21,11 +19,17 @@ export default class CoursesRootComponent extends Component {
@tracked sortSchoolsBy = null;
@tracked sortYearsBy = null;

@use preloadedCoursesInSelectedSchool = new AsyncProcess(() => [
this.getCourses,
this.selectedSchool,
this.dataLoader,
]);
@cached
get preloadedCoursesInSelectedSchoolData() {
return new TrackedAsyncData(this.getCourses(this.selectedSchool, this.dataLoader));
}

get preloadedCoursesInSelectedSchool() {
return this.preloadedCoursesInSelectedSchoolData.isResolved
? this.preloadedCoursesInSelectedSchoolData.value
: false;
}

userModelData = new TrackedAsyncData(this.currentUser.getModel());
crossesBoundaryConfig = new TrackedAsyncData(
this.iliosConfig.itemFromConfig('academicYearCrossesCalendarYearBoundaries'),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import Component from '@glimmer/component';
import { use } from 'ember-could-get-used-to-this';
import AsyncProcess from 'ilios-common/classes/async-process';
import { cached } from '@glimmer/tracking';
import { TrackedAsyncData } from 'ember-async-data';

export default class CurriculumInventorySequenceBlockDetailsComponent extends Component {
@use allParents = new AsyncProcess(() => [
this.args.sequenceBlock.getAllParents.bind(this.args.sequenceBlock),
]);
@cached
get allParentsData() {
return new TrackedAsyncData(this.args.sequenceBlock.getAllParents(this.args.sequenceBlock));
}

get allParents() {
return this.allParentsData.isResolved ? this.allParentsData.value : [];
}
}
21 changes: 10 additions & 11 deletions packages/frontend/app/components/pending-updates-summary.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ import Component from '@glimmer/component';
import { service } from '@ember/service';
import { cached, tracked } from '@glimmer/tracking';
import { filter } from 'rsvp';
import { use } from 'ember-could-get-used-to-this';
import { TrackedAsyncData } from 'ember-async-data';
import AsyncProcess from 'ilios-common/classes/async-process';
import { findById } from 'ilios-common/utils/array-helpers';

export default class PendingUpdatesSummaryComponent extends Component {
Expand Down Expand Up @@ -34,11 +32,16 @@ export default class PendingUpdatesSummaryComponent extends Component {
return this.allUpdatesData.isResolved ? this.allUpdatesData.value : null;
}

@use updatesForSchool = new AsyncProcess(() => [
this.getUpdatesForSchool,
this.allUpdatesArray,
this.bestSelectedSchool,
]);
@cached
get updatesData() {
return new TrackedAsyncData(
this.getUpdatesForSchool(this.allUpdatesArray, this.bestSelectedSchool),
);
}

get updates() {
return this.updatesData.isResolved ? this.updatesData.value : [];
}

get haveUpdates() {
return this.updates?.length > 0;
Expand Down Expand Up @@ -67,10 +70,6 @@ export default class PendingUpdatesSummaryComponent extends Component {
return this.allUpdates.slice();
}

get updates() {
return this.updatesForSchool ?? [];
}

async getUpdatesForSchool(allUpdates, selectedSchool) {
return filter(allUpdates.slice(), async (update) => {
const user = await update.user;
Expand Down
14 changes: 11 additions & 3 deletions packages/frontend/app/controllers/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ import Controller from '@ember/controller';
import { service } from '@ember/service';
import { filter } from 'rsvp';
import { cached, tracked } from '@glimmer/tracking';
import { use } from 'ember-could-get-used-to-this';
import AsyncProcess from 'ilios-common/classes/async-process';
import { TrackedAsyncData } from 'ember-async-data';

export default class UserController extends Controller {
Expand All @@ -28,7 +26,14 @@ export default class UserController extends Controller {
@tracked permissionsSchool = null;
@tracked permissionsYear = null;

@use canCreate = new AsyncProcess(() => [this.canCreateInSomeSchool.bind(this), this.allSchools]);
@cached
get canCreateData() {
return new TrackedAsyncData(this.canCreateInSomeSchool(this.allSchools));
}

get canCreate() {
return this.canCreateData.isResolved ? this.canCreateData.value : false;
}

@cached
get canUpdateData() {
Expand All @@ -49,6 +54,9 @@ export default class UserController extends Controller {
}

async canCreateInSomeSchool(schools) {
if (!schools) {
return false;
}
const schoolsWithCreateUserPermission = await filter(schools.slice(), async (school) => {
return this.permissionChecker.canCreateUser(school);
});
Expand Down

0 comments on commit a089c31

Please sign in to comment.