// Types import { IAttachment, IBaseRestApiResponse, IRestApiResponse, IUser, IWebsocketMessage, } from 'superdesk-api'; import {IModalSize} from './ui/modal'; export enum SET_STATE { DRAFT = 'draft', USABLE = 'usable', DISABLED = 'disabled', } export enum ASSET_STATE { DRAFT = 'draft', INTERNAL = 'internal', PUBLIC = 'public', } export enum CONTENT_PANEL_STATE { CLOSED = 'closed', PREVIEW = 'preview', EDIT = 'edit', CREATE = 'create', } export enum ASSET_CONTENT_PANEL_STATE { CLOSED = 'closed', PREVIEW = 'preview', EDIT = 'edit', CREATE = 'create', } export enum ASSET_TYPE_FILTER { ALL = 'all', IMAGES = 'images', VIDEOS = 'videos', AUDIO = 'audio', DOCUMENTS = 'documents', } export enum ASSET_LIST_STYLE { GRID = 'grid', LIST = 'list', } export enum ASSET_SORT_FIELD { NAME = 'name.keyword', FILENAME = 'filename', CREATED = '_created', UPDATED = '_updated', SIZE = 'length', } export enum SORT_ORDER { ASCENDING = 'ascending', DESCENDING = 'descending', } export enum LIST_ACTION { APPEND = 'append', REPLACE = 'replace', } export enum ASSET_ACTIONS { PREVIEW = 'preview', DOWNLOAD = 'download', DELETE = 'delete', EDIT = 'edit', FORCE_UNLOCK = 'force_unlock', } export enum DATA_UNIT { BYTES = 'bytes', KB = 'kb', MB = 'mb', GB = 'gb', } export interface IAssetAction { id: string; label: string; icon: string; onSelect(asset: Partial): void; isAllowed(asset: Partial): boolean; } export interface IAssetCallback { action: ASSET_ACTIONS; onSelect(asset: Partial): void; } export interface IVersionInformation extends IBaseRestApiResponse{ firstcreated: string; versioncreated: string; original_creator?: IUser['_id']; version_creator?: IUser['_id']; } export interface ISetItem extends IVersionInformation { name: string; state: SET_STATE; description?: string; maximum_asset_size?: number; destination_name?: string; destination_config?: Dictionary; destination?: IStorageDestinationItem; } export interface IStorageDestinationItem extends IBaseRestApiResponse { provider?: string; } export interface ISAMSBaseEvent { // Every event from SAMS should contain the following user_id: string; session_id: string; extension: 'sams'; // These attributes are provided with most events from SAMS item_id?: string; _etag?: string; } export type ISAMSWebsocketEvent = CustomEvent>; export interface IAssetItem extends IVersionInformation { set_id: string; parent_id: string; state: ASSET_STATE; filename: string; length: number; mimetype: string; name: string; description: string; lock_action: string; lock_user: string; lock_session: string; tags: Array<{ code: string; name: string; }>; extra: Dictionary; } export interface IAssetSearchParams { textSearch?: string; setId?: string; setIds?: Array; name?: string; description?: string; state?: ASSET_STATE; states?: Array; filename?: string; page: number; mimetypes: ASSET_TYPE_FILTER; dateFrom?: Date; dateTo?: Date; sizeFrom?: number; sizeTo?: number; sortField: ASSET_SORT_FIELD; sortOrder: SORT_ORDER; } export interface IAPIError { error: string; name: string; description: string; errors?: {[field: string]: Array}; } export interface IUploadAssetModalProps { closeModal(): void; sets: Array; dark?: boolean; modalSize?: IModalSize; initialFiles?: Array<{ id: string; file: File; }>; defaultAssetState?: ASSET_STATE; allowedStates?: Array; onAssetUploaded?(asset: IAssetItem): Promise; onModalClosed?(assets?: Dictionary): void; } export interface ISamsAPI { sets: { getAll(): Promise>; create(set: Partial): Promise; update(original: ISetItem, updates: Partial): Promise; delete(set: ISetItem): Promise; }; storageDestinations: { getAll(): Promise>; }; assets: { upload(data: FormData, onProgress?: (event: ProgressEvent) => void): Promise; update(original: IAssetItem, updates: Partial): Promise; query(params: IAssetSearchParams, listStyle: ASSET_LIST_STYLE): Promise>; getSearchUrlParams(): Partial; setSearchUrlParams(params: Partial): void; getCount(set_ids: Array): Promise>; getById(assetId: string): Promise; getByIds(ids: Array): Promise>; updateMetadata( originalAsset: IAssetItem, originalAttachment: IAttachment, updates: Partial, ): Promise<[IAttachment, IAssetItem]>; showUploadModal(props?: Partial): void; getCompressedBinary(asset_ids: Array): void; getAssetBinary(asset: IAssetItem): Promise; deleteAsset(asset: IAssetItem): Promise; lockAsset(asset: IAssetItem, updates: Dictionary): Promise>; unlockAsset(asset: IAssetItem, updates: Dictionary): Promise>; }; }