From 20069c66f3f114d28dfd7629f5478dab1aedd01a Mon Sep 17 00:00:00 2001 From: Xziy Date: Fri, 21 Jul 2023 17:10:30 +0300 Subject: [PATCH] add observablePromis --- libs/ObservablePromise.d.ts | 7 +++++++ libs/ObservablePromise.js | 19 +++++++++++++++++++ libs/ObservablePromise.ts | 26 ++++++++++++++++++++++++++ models/Group.d.ts | 2 +- models/Group.ts | 2 +- 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 libs/ObservablePromise.d.ts create mode 100644 libs/ObservablePromise.js create mode 100644 libs/ObservablePromise.ts diff --git a/libs/ObservablePromise.d.ts b/libs/ObservablePromise.d.ts new file mode 100644 index 00000000..0edf553d --- /dev/null +++ b/libs/ObservablePromise.d.ts @@ -0,0 +1,7 @@ +declare class ObservablePromise { + private _status; + private _promise; + constructor(promise: Promise); + get promise(): Promise; + get status(): 'pending' | 'fulfilled' | 'rejected'; +} diff --git a/libs/ObservablePromise.js b/libs/ObservablePromise.js new file mode 100644 index 00000000..5820407b --- /dev/null +++ b/libs/ObservablePromise.js @@ -0,0 +1,19 @@ +class ObservablePromise { + constructor(promise) { + this._status = 'pending'; + this._promise = promise + .then((value) => { + this._status = 'fulfilled'; + return value; + }, (error) => { + this._status = 'rejected'; + throw error; + }); + } + get promise() { + return this._promise; + } + get status() { + return this._status; + } +} diff --git a/libs/ObservablePromise.ts b/libs/ObservablePromise.ts new file mode 100644 index 00000000..476da76c --- /dev/null +++ b/libs/ObservablePromise.ts @@ -0,0 +1,26 @@ +export class ObservablePromise { + private _status: 'pending' | 'fulfilled' | 'rejected' = 'pending'; + private _promise: Promise; + + constructor(promise: Promise) { + this._promise = promise + .then( + (value: T) => { + this._status = 'fulfilled'; + return value; + }, + (error) => { + this._status = 'rejected'; + throw error; + } + ); + } + + get promise(): Promise { + return this._promise; + } + + get status(): 'pending' | 'fulfilled' | 'rejected' { + return this._status; + } +} \ No newline at end of file diff --git a/models/Group.d.ts b/models/Group.d.ts index e1097b13..7f3a492f 100644 --- a/models/Group.d.ts +++ b/models/Group.d.ts @@ -33,7 +33,7 @@ declare let attributes: { allowNull: boolean; }; /** Images */ - images: MediaFile[]; + images: string[] | MediaFile[]; /** PlaySholder for group dishes */ dishesPlaceholder: MediaFile[]; /** The person readable isii*/ diff --git a/models/Group.ts b/models/Group.ts index 78a7ce53..aa387b12 100644 --- a/models/Group.ts +++ b/models/Group.ts @@ -97,7 +97,7 @@ let attributes = { images: { collection: "mediafile", via: "group", - } as unknown as MediaFile[], + } as unknown as MediaFile[] | string[], /** PlaySholder for group dishes */ dishesPlaceholder: {