From 939953887c245130760b59584e1097ed62697dd3 Mon Sep 17 00:00:00 2001 From: Stefan Topfstedt Date: Tue, 2 Jul 2024 09:34:28 -0700 Subject: [PATCH 1/4] replace AsyncProcess Resource with TrackedAsyncData equivalent. --- packages/frontend/app/controllers/user.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/frontend/app/controllers/user.js b/packages/frontend/app/controllers/user.js index 236422ecf6..3a62409080 100644 --- a/packages/frontend/app/controllers/user.js +++ b/packages/frontend/app/controllers/user.js @@ -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 { @@ -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() { @@ -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); }); From db02ee7c36bf20008c786961ed7c6c8d8cfadfaa Mon Sep 17 00:00:00 2001 From: Stefan Topfstedt Date: Tue, 2 Jul 2024 10:42:05 -0700 Subject: [PATCH 2/4] replace AsyncProcess with TrackedAsyncData equivalent. --- .../frontend/app/components/courses/root.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/frontend/app/components/courses/root.js b/packages/frontend/app/components/courses/root.js index 089e1daa6f..ed06bf591f 100644 --- a/packages/frontend/app/components/courses/root.js +++ b/packages/frontend/app/components/courses/root.js @@ -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'; @@ -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'), From 065e50fb07085fb100371374ef71c087218ab97a Mon Sep 17 00:00:00 2001 From: Stefan Topfstedt Date: Tue, 2 Jul 2024 11:36:41 -0700 Subject: [PATCH 3/4] replace AsyncProcess with TrackedAsyncData equivalent. --- .../sequence-block-details.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/frontend/app/components/curriculum-inventory/sequence-block-details.js b/packages/frontend/app/components/curriculum-inventory/sequence-block-details.js index 45136f32b2..07a4cf7cde 100644 --- a/packages/frontend/app/components/curriculum-inventory/sequence-block-details.js +++ b/packages/frontend/app/components/curriculum-inventory/sequence-block-details.js @@ -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 : []; + } } From 1bce0397154a303a9839fcb4d4393b2726ea6728 Mon Sep 17 00:00:00 2001 From: Stefan Topfstedt Date: Wed, 3 Jul 2024 14:59:15 -0700 Subject: [PATCH 4/4] replace AsyncProcess with TrackedAsyncData equivalent. --- .../app/components/pending-updates-summary.js | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/frontend/app/components/pending-updates-summary.js b/packages/frontend/app/components/pending-updates-summary.js index f0c51cdb67..dbc20bf1f0 100644 --- a/packages/frontend/app/components/pending-updates-summary.js +++ b/packages/frontend/app/components/pending-updates-summary.js @@ -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 { @@ -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; @@ -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;