Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 11 additions & 16 deletions addon/services/loading.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { restartableTask, task, timeout } from 'ember-concurrency';
import RouterService from '@ember/routing/router-service';
import { getOwner } from '@ember/application';
import RSVP, { defer } from 'rsvp';
import { taskFor } from 'ember-concurrency-ts';

type ParseArgsValue = [any, Function, any[] | undefined];

Expand Down Expand Up @@ -49,7 +48,6 @@ function parseArgs(): ParseArgsValue {
}

export default class LoadingService extends Service {

@service
router!: RouterService;

Expand All @@ -58,11 +56,11 @@ export default class LoadingService extends Service {
watchTransitions = true;

get isLoading(): boolean {
return taskFor(this._runJob).isRunning;
return this._runJob.isRunning;
}

get showLoading(): boolean {
return !taskFor(this.preDelayTask).isRunning && (this.isLoading || taskFor(this.postDelayTask).isRunning);
return !this.preDelayTask.isRunning && (this.isLoading || this.postDelayTask.isRunning);
}

_routerTransitionDeferred?: RSVP.Deferred<unknown>;
Expand Down Expand Up @@ -132,33 +130,30 @@ export default class LoadingService extends Service {
// run<R>(fn: () => R): Promise<R>;
async run(...args: any[]) {
if (this.preDelay > 0) {
taskFor(this.preDelayTask).perform(this.preDelay);
this.preDelayTask.perform(this.preDelay);
}

let result = await taskFor(this._runJob).perform(...args);
let result = await this._runJob.perform(...args);

if (this.postDelay > 0) {
taskFor(this.postDelayTask).perform(this.postDelay);
this.postDelayTask.perform(this.postDelay);
}

return result;
}

@task
async _runJob(...args: unknown[]): Promise<unknown> {
_runJob = task(async (...args: unknown[]) => {
let [target, method, realArgs] = parseArgs(...args);
return await method.apply(target, realArgs);
}
});

@restartableTask
async preDelayTask(delay: number): Promise<void> {
preDelayTask = restartableTask(async (delay: number) => {
await timeout(delay);
}
});

@restartableTask
async postDelayTask(delay: number): Promise<void> {
postDelayTask = restartableTask(async (delay: number) => {
await timeout(delay);
}
});
}

// DO NOT DELETE: this is how TypeScript knows how to look up your services.
Expand Down
7 changes: 7 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,11 @@

module.exports = {
name: require('./package').name,
options: {
babel: {
plugins: [
require.resolve('ember-concurrency/async-arrow-task-transform'),
],
},
},
};
8 changes: 3 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,11 @@
"test:ember-compatibility": "ember try:each"
},
"dependencies": {
"ember-auto-import": "2.4.2",
"ember-cli-babel": "^7.26.6",
"ember-cli-htmlbars": "^6.0.0",
"ember-cli-typescript": "^4.1.0",
"ember-concurrency": "^2.0.3",
"ember-concurrency-async": "^1.0.0",
"ember-concurrency-ts": "^0.3.0"
"ember-concurrency": "^4.0.0"
},
"devDependencies": {
"@ember/optional-features": "2.0.0",
Expand All @@ -52,7 +51,6 @@
"@typescript-eslint/parser": "5.33.1",
"babel-eslint": "10.1.0",
"broccoli-asset-rev": "3.0.0",
"ember-auto-import": "2.4.2",
"ember-cli": "3.28.5",
"ember-cli-dependency-checker": "3.3.1",
"ember-cli-inject-live-reload": "2.1.0",
Expand All @@ -69,7 +67,7 @@
"ember-source": "3.28.9",
"ember-source-channel-url": "3.0.0",
"ember-template-lint": "4.12.0",
"ember-try": "2.0.0",
"ember-try": "^3.0.0",
"eslint": "8.22.0",
"eslint-config-prettier": "8.5.0",
"eslint-plugin-ember": "10.6.1",
Expand Down
2 changes: 0 additions & 2 deletions types/dummy/index.d.ts

This file was deleted.

Loading