The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/client/lib/lists/ImagesList.ts

39 lines
933 B

import type { IUpload } from '@rocket.chat/core-typings';
import { RecordList } from './RecordList';
type FilesMessage = Omit<IUpload, 'rid'> & Required<Pick<IUpload, 'rid'>>;
export type ImagesListOptions = {
roomId: Required<IUpload>['rid'];
startingFromId?: string;
count?: number;
offset?: number;
};
const isFileMessageInRoom = (upload: IUpload, rid: IUpload['rid']): upload is FilesMessage => upload.rid === rid && 'rid' in upload;
export class ImagesList extends RecordList<IUpload> {
public constructor(private _options: ImagesListOptions) {
super();
}
public get options(): ImagesListOptions {
return this._options;
}
public updateFilters(options: ImagesListOptions): void {
this._options = options;
this.clear();
}
protected override filter(message: IUpload): boolean {
const { roomId } = this._options;
if (!isFileMessageInRoom(message, roomId)) {
return false;
}
return true;
}
}