Skip to content

Commit 3c074c5

Browse files
committed
fix(core): clean up loader; remove allowSignalWrites in injectLoader
1 parent 19cd21e commit 3c074c5

File tree

1 file changed

+25
-34
lines changed

1 file changed

+25
-34
lines changed

Diff for: libs/core/src/lib/loader.ts

+25-34
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Injector, Signal, effect, signal, untracked } from '@angular/core';
1+
import { Injector, Signal, effect, signal } from '@angular/core';
22
import { assertInjector } from 'ngxtension/assert-injector';
33
import { Loader, Object3D } from 'three';
44
import { NgtAnyRecord } from './types';
@@ -43,9 +43,7 @@ function normalizeInputs(input: string | string[] | Record<string, string>) {
4343
urls = Object.values(input);
4444
}
4545

46-
return urls.map((url) => {
47-
return url.includes('undefined') || url.includes('null') || !url ? '' : url;
48-
});
46+
return urls.map((url) => (url.includes('undefined') || url.includes('null') || !url ? '' : url));
4947
}
5048

5149
function load<
@@ -66,7 +64,7 @@ function load<
6664
onProgress?: (event: ProgressEvent) => void;
6765
} = {},
6866
) {
69-
return (): Array<Promise<any>> | null => {
67+
return (): Array<Promise<any>> => {
7068
const urls = normalizeInputs(inputs());
7169

7270
let loader: Loader<TData> = memoizedLoaders.get(loaderConstructorFactory(urls));
@@ -76,11 +74,9 @@ function load<
7674
}
7775

7876
if (extensions) extensions(loader);
79-
// TODO: reevaluate this
77+
8078
return urls.map((url) => {
81-
if (url === '') {
82-
return null;
83-
}
79+
if (url === '') return Promise.resolve(null);
8480

8581
if (!cached.has(url)) {
8682
cached.set(
@@ -105,6 +101,7 @@ function load<
105101
}),
106102
);
107103
}
104+
108105
return cached.get(url)!;
109106
});
110107
};
@@ -141,31 +138,25 @@ function _injectLoader<
141138
onProgress,
142139
onLoad: onLoad as (data: unknown) => void,
143140
});
144-
effect(
145-
() => {
146-
const originalUrls = inputs();
147-
const cachedEffect = effector();
148-
if (cachedEffect === null && untracked(response) !== null) {
149-
response.set(null);
150-
} else if (cachedEffect !== null) {
151-
Promise.all(cachedEffect).then((results) => {
152-
response.update(() => {
153-
if (Array.isArray(originalUrls)) return results;
154-
if (typeof originalUrls === 'string') return results[0];
155-
const keys = Object.keys(originalUrls);
156-
return keys.reduce(
157-
(result, key) => {
158-
(result as NgtAnyRecord)[key] = results[keys.indexOf(key)];
159-
return result;
160-
},
161-
{} as { [key in keyof TUrl]: NgtBranchingReturn<TReturn, NgtGLTFLike, NgtGLTFLike & NgtObjectMap> },
162-
);
163-
});
164-
});
165-
}
166-
},
167-
{ allowSignalWrites: true },
168-
);
141+
142+
effect(() => {
143+
const originalUrls = inputs();
144+
const cachedEffect = effector();
145+
Promise.all(cachedEffect).then((results) => {
146+
response.update(() => {
147+
if (Array.isArray(originalUrls)) return results;
148+
if (typeof originalUrls === 'string') return results[0];
149+
const keys = Object.keys(originalUrls);
150+
return keys.reduce(
151+
(result, key) => {
152+
(result as NgtAnyRecord)[key] = results[keys.indexOf(key)];
153+
return result;
154+
},
155+
{} as { [key in keyof TUrl]: NgtBranchingReturn<TReturn, NgtGLTFLike, NgtGLTFLike & NgtObjectMap> },
156+
);
157+
});
158+
});
159+
});
169160

170161
return response.asReadonly();
171162
});

0 commit comments

Comments
 (0)