Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 78f1748

Browse files
authored
Merge pull request #6283 from matrix-org/gsouquet/filepanel-typescript
2 parents 38e5ac7 + db01551 commit 78f1748

File tree

1 file changed

+33
-21
lines changed

1 file changed

+33
-21
lines changed

src/components/structures/FilePanel.js renamed to src/components/structures/FilePanel.tsx

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,49 @@ limitations under the License.
1616
*/
1717

1818
import 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+
2226
import * as sdk from '../../index';
23-
import {MatrixClientPeg} from '../../MatrixClientPeg';
27+
import { MatrixClientPeg } from '../../MatrixClientPeg';
2428
import EventIndexPeg from "../../indexing/EventIndexPeg";
2529
import { _t } from '../../languageHandler';
2630
import BaseCard from "../views/right_panel/BaseCard";
2731
import {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

Comments
 (0)