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/client/lib/lists/FilesList.ts

41 lines
999 B

import type { IMessage } from '../../../definition/IMessage';
import { MessageList } from './MessageList';
type FilesMessage = Omit<IMessage, 'rid'> & Required<Pick<IMessage, 'rid'>>;
export type FilesListOptions = {
rid: IMessage['rid'];
type: string;
text: string;
};
const isFileMessageInRoom = (message: IMessage, rid: IMessage['rid']): message is FilesMessage => message.rid === rid && 'rid' in message;
export class FilesList extends MessageList {
public constructor(private _options: FilesListOptions) {
super();
}
public get options(): FilesListOptions {
return this._options;
}
public updateFilters(options: FilesListOptions): void {
this._options = options;
this.clear();
}
protected filter(message: IMessage): boolean {
const { rid } = this._options;
if (!isFileMessageInRoom(message, rid)) {
return false;
}
return true;
}
protected compare(a: IMessage, b: IMessage): number {
return (b.tlm ?? b.ts).getTime() - (a.tlm ?? a.ts).getTime();
}
}