diff --git a/package-lock.json b/package-lock.json index 3155dd9..a657c0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@josepot/react-rxjs", - "version": "0.1.3", + "version": "0.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1fa300e..28e4576 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "0.1.3", + "version": "0.1.4", "repository": { "type": "git", "url": "git+https://github.com/josepot/react-rxjs.git" diff --git a/src/connectFactoryObservable.ts b/src/connectFactoryObservable.ts index 2c1c9ef..a37e697 100644 --- a/src/connectFactoryObservable.ts +++ b/src/connectFactoryObservable.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react" -import { Observable, of } from "rxjs" -import { delay, takeUntil } from "rxjs/operators" +import { Observable, of, race } from "rxjs" +import { delay, take, mapTo } from "rxjs/operators" import { StaticObservableOptions, defaultStaticOptions, @@ -66,9 +66,13 @@ export function connectFactoryObservable< setValue(initialValue) } else if (suspenseTime < Infinity) { subscription.add( - of(initialValue) - .pipe(delay(suspenseTime), takeUntil(sharedObservable$)) - .subscribe(setValue), + race( + of(initialValue).pipe(delay(suspenseTime)), + sharedObservable$.pipe( + take(1), + mapTo((x: I | O) => x), + ), + ).subscribe(setValue), ) }