Skip to content

Commit 00befb0

Browse files
committed
chore: 🤖 create patched ember-loading for modern e-c
1 parent 72639bd commit 00befb0

File tree

3 files changed

+134
-42
lines changed

3 files changed

+134
-42
lines changed

‎package.json‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353
"fireworm>async": "^2.6.4",
5454
"ember-cli-babel>@babel/runtime": "7.27.6",
5555
"ember-try-config>package-json": "^10.0.1",
56-
"ember-stargate@^0.6.0>@glimmer/component": "^2.0.0"
56+
"ember-stargate@^0.6.0>@glimmer/component": "^2.0.0",
57+
"ember-loading>ember-concurrency": "^4.0.0"
5758
},
5859
"ignoredBuiltDependencies": [
5960
"@parcel/watcher",
@@ -63,7 +64,10 @@
6364
"@nestjs/core",
6465
"@openapitools/openapi-generator-cli"
6566
],
66-
"onlyBuiltDependencies": []
67+
"onlyBuiltDependencies": [],
68+
"patchedDependencies": {
69+
"ember-loading": "patches/ember-loading.patch"
70+
}
6771
},
6872
"config": {
6973
"commitizen": {
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
diff --git a/addon/services/loading.ts b/addon/services/loading.ts
2+
index 34ac7eb0cdf4ee8f09661ba2459068307bb2792e..9d201c99046fb2e3d6ba3b49f8c1445a4c768c02 100644
3+
--- a/addon/services/loading.ts
4+
+++ b/addon/services/loading.ts
5+
@@ -4,7 +4,6 @@ import { restartableTask, task, timeout } from 'ember-concurrency';
6+
import RouterService from '@ember/routing/router-service';
7+
import { getOwner } from '@ember/application';
8+
import RSVP, { defer } from 'rsvp';
9+
-import { taskFor } from 'ember-concurrency-ts';
10+
11+
type ParseArgsValue = [any, Function, any[] | undefined];
12+
13+
@@ -49,7 +48,6 @@ function parseArgs(): ParseArgsValue {
14+
}
15+
16+
export default class LoadingService extends Service {
17+
-
18+
@service
19+
router!: RouterService;
20+
21+
@@ -58,11 +56,11 @@ export default class LoadingService extends Service {
22+
watchTransitions = true;
23+
24+
get isLoading(): boolean {
25+
- return taskFor(this._runJob).isRunning;
26+
+ return this._runJob.isRunning;
27+
}
28+
29+
get showLoading(): boolean {
30+
- return !taskFor(this.preDelayTask).isRunning && (this.isLoading || taskFor(this.postDelayTask).isRunning);
31+
+ return !this.preDelayTask.isRunning && (this.isLoading || this.postDelayTask.isRunning);
32+
}
33+
34+
_routerTransitionDeferred?: RSVP.Deferred<unknown>;
35+
@@ -132,33 +130,30 @@ export default class LoadingService extends Service {
36+
// run<R>(fn: () => R): Promise<R>;
37+
async run(...args: any[]) {
38+
if (this.preDelay > 0) {
39+
- taskFor(this.preDelayTask).perform(this.preDelay);
40+
+ this.preDelayTask.perform(this.preDelay);
41+
}
42+
43+
- let result = await taskFor(this._runJob).perform(...args);
44+
+ let result = await this._runJob.perform(...args);
45+
46+
if (this.postDelay > 0) {
47+
- taskFor(this.postDelayTask).perform(this.postDelay);
48+
+ this.postDelayTask.perform(this.postDelay);
49+
}
50+
51+
return result;
52+
}
53+
54+
- @task
55+
- async _runJob(...args: unknown[]): Promise<unknown> {
56+
+ _runJob = task(async (...args: unknown[]) => {
57+
let [target, method, realArgs] = parseArgs(...args);
58+
return await method.apply(target, realArgs);
59+
- }
60+
+ });
61+
62+
- @restartableTask
63+
- async preDelayTask(delay: number): Promise<void> {
64+
+ preDelayTask = restartableTask(async (delay: number) => {
65+
await timeout(delay);
66+
- }
67+
+ });
68+
69+
- @restartableTask
70+
- async postDelayTask(delay: number): Promise<void> {
71+
+ postDelayTask = restartableTask(async (delay: number) => {
72+
await timeout(delay);
73+
- }
74+
+ });
75+
}
76+
77+
// DO NOT DELETE: this is how TypeScript knows how to look up your services.
78+
diff --git a/index.js b/index.js
79+
index 0ca063d427d9441b9b3a1274bfcfe47186623c63..ca80a9382c6f5e64504048e0757215b1272fb849 100644
80+
--- a/index.js
81+
+++ b/index.js
82+
@@ -2,4 +2,11 @@
83+
84+
module.exports = {
85+
name: require('./package').name,
86+
+ options: {
87+
+ babel: {
88+
+ plugins: [
89+
+ require.resolve('ember-concurrency/async-arrow-task-transform'),
90+
+ ],
91+
+ },
92+
+ },
93+
};
94+
diff --git a/package.json b/package.json
95+
index 3b898dce9a160776192437af4c35b2038eb39232..2a37d3d6f179bfe62479c5141d705a2d3e4eeaeb 100644
96+
--- a/package.json
97+
+++ b/package.json
98+
@@ -31,10 +31,10 @@
99+
"dependencies": {
100+
"ember-cli-babel": "^7.26.6",
101+
"ember-cli-htmlbars": "^5.7.1",
102+
- "ember-cli-typescript": "^4.1.0",
103+
- "ember-concurrency": "^2.0.3",
104+
- "ember-concurrency-async": "^1.0.0",
105+
- "ember-concurrency-ts": "^0.3.0"
106+
+ "ember-cli-typescript": "^4.1.0"
107+
+ },
108+
+ "peerDependencies": {
109+
+ "ember-concurrency": "^4.0.0"
110+
},
111+
"devDependencies": {
112+
"@ember/optional-features": "2.0.0",

‎pnpm-lock.yaml‎

Lines changed: 16 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)