@@ -13,21 +13,30 @@ export type Results = {
1313 width : number ;
1414 height : number ;
1515 mime : string ;
16- type : string ;
1716 size : number ;
1817 bucketId ?: number ;
1918 realPath ?: string ;
2019 parentFolderName ?: string ;
21- thumbnail ?: string ;
2220 creationDate ?: string ;
2321} ;
2422
23+ export interface VideoResults extends Results {
24+ type : MediaType . VIDEO ;
25+ thumbnail ?: string ;
26+ }
27+
28+ export interface ImageResults extends Results {
29+ type : MediaType . IMAGE ;
30+ thumbnail ?: undefined ;
31+ }
32+
2533export type PickerErrorCode =
2634 | 'PICKER_CANCELLED'
2735 | 'NO_LIBRARY_PERMISSION'
2836 | 'NO_CAMERA_PERMISSION' ;
2937
30- export type Options = {
38+ export type Options < T extends MediaType = MediaType . ALL > = {
39+ mediaType ?: T ;
3140 isPreview ?: boolean ;
3241 selectedColor ?: string ;
3342 tapHereToChange ?: string ;
@@ -49,7 +58,6 @@ export type Options = {
4958 autoPlay ?: boolean ;
5059 muteAudio ?: boolean ;
5160 preventAutomaticLimitedAccessAlert ?: boolean ; // newest iOS 14
52- mediaType ?: MediaType ;
5361 numberOfColumn ?: number ;
5462 maxSelectedAssets ?: number ;
5563 fetchOption ?: Object ;
@@ -63,19 +71,34 @@ export type Options = {
6371 haveThumbnail ?: boolean ;
6472} ;
6573
66- export interface SinglePickerOptions extends Options {
74+ export interface SinglePickerOptions {
6775 selectedAssets ?: Results ;
6876 singleSelectedMode : true ;
6977}
7078
71- export interface MultiPickerOptions extends Options {
79+ export interface MultiPickerOptions {
7280 selectedAssets ?: Results [ ] ;
7381 singleSelectedMode ?: false ;
7482}
7583
84+ interface MediaTypeOptions {
85+ [ MediaType . VIDEO ] : { isExportThumbnail ?: boolean } ;
86+ [ MediaType . ALL ] : MediaTypeOptions [ MediaType . VIDEO ] ;
87+ }
88+
89+ interface MediaTypeResults {
90+ [ MediaType . IMAGE ] : ImageResults ;
91+ [ MediaType . VIDEO ] : VideoResults ;
92+ [ MediaType . ALL ] : ImageResults | VideoResults ;
93+ }
94+
7695type MultipleImagePickerType = {
77- openPicker ( options : MultiPickerOptions ) : Promise < Results [ ] > ;
78- openPicker ( options : SinglePickerOptions ) : Promise < Results > ;
96+ openPicker < T extends MediaType = MediaType . ALL > (
97+ options : MultiPickerOptions & MediaTypeOptions [ T ] & Options < T >
98+ ) : Promise < MediaTypeResults [ T ] [ ] > ;
99+ openPicker < T extends MediaType = MediaType . ALL > (
100+ options : SinglePickerOptions & MediaTypeOptions [ T ] & Options < T >
101+ ) : Promise < MediaTypeResults [ T ] > ;
79102} ;
80103
81104const { MultipleImagePicker } = NativeModules ;
0 commit comments