@@ -16,37 +16,49 @@ limitations under the License.
1616*/
1717
1818import React from 'react' ;
19- import PropTypes from 'prop-types' ;
2019
21- import { Filter } from 'matrix-js-sdk/src/filter' ;
20+ import { Filter } from 'matrix-js-sdk/src/filter' ;
21+ import { EventTimelineSet } from "matrix-js-sdk/src/models/event-timeline-set" ;
22+ import { MatrixEvent } from "matrix-js-sdk/src/models/event" ;
23+ import { Room } from 'matrix-js-sdk/src/models/room' ;
24+ import { TimelineWindow } from 'matrix-js-sdk/src/timeline-window' ;
25+
2226import * as sdk from '../../index' ;
23- import { MatrixClientPeg } from '../../MatrixClientPeg' ;
27+ import { MatrixClientPeg } from '../../MatrixClientPeg' ;
2428import EventIndexPeg from "../../indexing/EventIndexPeg" ;
2529import { _t } from '../../languageHandler' ;
2630import BaseCard from "../views/right_panel/BaseCard" ;
2731import { RightPanelPhases } from "../../stores/RightPanelStorePhases" ;
28- import DesktopBuildsNotice , { WarningKind } from "../views/elements/DesktopBuildsNotice" ;
29- import { replaceableComponent } from "../../utils/replaceableComponent" ;
32+ import DesktopBuildsNotice , { WarningKind } from "../views/elements/DesktopBuildsNotice" ;
33+ import { replaceableComponent } from "../../utils/replaceableComponent" ;
34+
35+ import ResizeNotifier from '../../utils/ResizeNotifier' ;
36+
37+ interface IProps {
38+ roomId : string ;
39+ onClose : ( ) => void ;
40+ resizeNotifier : ResizeNotifier
41+ }
42+
43+ interface IState {
44+ timelineSet : EventTimelineSet ;
45+ }
3046
3147/*
3248 * Component which shows the filtered file using a TimelinePanel
3349 */
3450@replaceableComponent ( "structures.FilePanel" )
35- class FilePanel extends React . Component {
36- static propTypes = {
37- roomId : PropTypes . string . isRequired ,
38- onClose : PropTypes . func . isRequired ,
39- } ;
40-
51+ class FilePanel extends React . Component < IProps , IState > {
4152 // This is used to track if a decrypted event was a live event and should be
4253 // added to the timeline.
43- decryptingEvents = new Set ( ) ;
54+ private decryptingEvents = new Set < string > ( ) ;
55+ public noRoom : boolean ;
4456
4557 state = {
4658 timelineSet : null ,
4759 } ;
4860
49- onRoomTimeline = ( ev , room , toStartOfTimeline , removed , data ) => {
61+ private onRoomTimeline = ( ev : MatrixEvent , room : Room , toStartOfTimeline : true , removed : true , data : any ) : void => {
5062 if ( room ?. roomId !== this . props ?. roomId ) return ;
5163 if ( toStartOfTimeline || ! data || ! data . liveEvent || ev . isRedacted ( ) ) return ;
5264
@@ -60,7 +72,7 @@ class FilePanel extends React.Component {
6072 }
6173 } ;
6274
63- onEventDecrypted = ( ev , err ) => {
75+ private onEventDecrypted = ( ev : MatrixEvent , err ?: any ) : void => {
6476 if ( ev . getRoomId ( ) !== this . props . roomId ) return ;
6577 const eventId = ev . getId ( ) ;
6678
@@ -70,7 +82,7 @@ class FilePanel extends React.Component {
7082 this . addEncryptedLiveEvent ( ev ) ;
7183 } ;
7284
73- addEncryptedLiveEvent ( ev , toStartOfTimeline ) {
85+ public addEncryptedLiveEvent ( ev : MatrixEvent ) : void {
7486 if ( ! this . state . timelineSet ) return ;
7587
7688 const timeline = this . state . timelineSet . getLiveTimeline ( ) ;
@@ -84,7 +96,7 @@ class FilePanel extends React.Component {
8496 }
8597 }
8698
87- async componentDidMount ( ) {
99+ public async componentDidMount ( ) : Promise < void > {
88100 const client = MatrixClientPeg . get ( ) ;
89101
90102 await this . updateTimelineSet ( this . props . roomId ) ;
@@ -105,7 +117,7 @@ class FilePanel extends React.Component {
105117 }
106118 }
107119
108- componentWillUnmount ( ) {
120+ public componentWillUnmount ( ) : void {
109121 const client = MatrixClientPeg . get ( ) ;
110122 if ( client === null ) return ;
111123
@@ -117,7 +129,7 @@ class FilePanel extends React.Component {
117129 }
118130 }
119131
120- async fetchFileEventsServer ( room ) {
132+ public async fetchFileEventsServer ( room : Room ) : Promise < void > {
121133 const client = MatrixClientPeg . get ( ) ;
122134
123135 const filter = new Filter ( client . credentials . userId ) ;
@@ -141,7 +153,7 @@ class FilePanel extends React.Component {
141153 return timelineSet ;
142154 }
143155
144- onPaginationRequest = ( timelineWindow , direction , limit ) => {
156+ private onPaginationRequest = ( timelineWindow : TimelineWindow , direction : string , limit : number ) : void => {
145157 const client = MatrixClientPeg . get ( ) ;
146158 const eventIndex = EventIndexPeg . get ( ) ;
147159 const roomId = this . props . roomId ;
@@ -159,7 +171,7 @@ class FilePanel extends React.Component {
159171 }
160172 } ;
161173
162- async updateTimelineSet ( roomId : string ) {
174+ public async updateTimelineSet ( roomId : string ) : Promise < void > {
163175 const client = MatrixClientPeg . get ( ) ;
164176 const room = client . getRoom ( roomId ) ;
165177 const eventIndex = EventIndexPeg . get ( ) ;
@@ -195,7 +207,7 @@ class FilePanel extends React.Component {
195207 }
196208 }
197209
198- render ( ) {
210+ public render ( ) {
199211 if ( MatrixClientPeg . get ( ) . isGuest ( ) ) {
200212 return < BaseCard
201213 className = "mx_FilePanel mx_RoomView_messageListWrapper"
0 commit comments