mirror of
https://github.com/bitwarden/browser.git
synced 2024-10-09 05:57:40 +02:00
78248db590
* Rename service-factory folder
* Move cryptographic service factories
* Move crypto models
* Move crypto services
* Move domain base class
* Platform code owners
* Move desktop log services
* Move log files
* Establish component library ownership
* Move background listeners
* Move background background
* Move localization to Platform
* Move browser alarms to Platform
* Move browser state to Platform
* Move CLI state to Platform
* Move Desktop native concerns to Platform
* Move flag and misc to Platform
* Lint fixes
* Move electron state to platform
* Move web state to Platform
* Move lib state to Platform
* Fix broken tests
* Rename interface to idiomatic TS
* `npm run prettier` 🤖
* Resolve review feedback
* Set platform as owners of web core and shared
* Expand moved services
* Fix test types
---------
Co-authored-by: Hinton <hinton@users.noreply.github.com>
28 lines
622 B
TypeScript
28 lines
622 B
TypeScript
import { from, Observable, of, throwError } from "rxjs";
|
|
|
|
import { Utils } from "@bitwarden/common/platform/misc/utils";
|
|
|
|
export type FunctionReturningAwaitable =
|
|
| (() => unknown)
|
|
| (() => Promise<unknown>)
|
|
| (() => Observable<unknown>);
|
|
|
|
export function functionToObservable(func: FunctionReturningAwaitable): Observable<unknown> {
|
|
let awaitable: unknown;
|
|
try {
|
|
awaitable = func();
|
|
} catch (error) {
|
|
return throwError(() => error);
|
|
}
|
|
|
|
if (Utils.isPromise(awaitable)) {
|
|
return from(awaitable);
|
|
}
|
|
|
|
if (awaitable instanceof Observable) {
|
|
return awaitable;
|
|
}
|
|
|
|
return of(awaitable);
|
|
}
|