Enable @typescript-eslint/explicit-function-return-type in /src (#9788)

* Enable `@typescript-eslint/explicit-member-accessibility` on /src

* Prettier

* Enable `@typescript-eslint/explicit-function-return-type` in /src

* Fix types

* tsc strict fixes

* Delint

* Fix test

* Fix bad merge
This commit is contained in:
Michael Telatynski
2023-01-12 13:25:14 +00:00
committed by GitHub
parent 7a36ba0fde
commit 030b7e90bf
683 changed files with 3459 additions and 3013 deletions

View File

@@ -117,7 +117,7 @@ export default abstract class Exporter {
this.cancelled = true;
}
protected downloadPlainText(fileName: string, text: string) {
protected downloadPlainText(fileName: string, text: string): void {
const content = new Blob([text], { type: "text/plain" });
saveAs(content, fileName);
}

View File

@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import React from "react";
import React, { ReactNode } from "react";
import ReactDOM from "react-dom";
import { Room } from "matrix-js-sdk/src/models/room";
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
@@ -65,7 +65,7 @@ export default class HTMLExporter extends Exporter {
this.threadsEnabled = SettingsStore.getValue("feature_threadenabled");
}
protected async getRoomAvatar() {
protected async getRoomAvatar(): Promise<ReactNode> {
let blob: Blob;
const avatarUrl = Avatar.avatarUrlForRoom(this.room, 32, 32, "crop");
const avatarPath = "room.png";
@@ -92,7 +92,7 @@ export default class HTMLExporter extends Exporter {
return renderToStaticMarkup(avatar);
}
protected async wrapHTML(content: string) {
protected async wrapHTML(content: string): Promise<string> {
const roomAvatar = await this.getRoomAvatar();
const exportDate = formatFullDateNoDayNoTime(new Date());
const creator = this.room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender();
@@ -224,7 +224,7 @@ export default class HTMLExporter extends Exporter {
);
}
protected async saveAvatarIfNeeded(event: MatrixEvent) {
protected async saveAvatarIfNeeded(event: MatrixEvent): Promise<void> {
const member = event.sender;
if (!this.avatars.has(member.userId)) {
try {
@@ -239,7 +239,7 @@ export default class HTMLExporter extends Exporter {
}
}
protected getDateSeparator(event: MatrixEvent) {
protected async getDateSeparator(event: MatrixEvent): Promise<string> {
const ts = event.getTs();
const dateSeparator = (
<li key={ts}>
@@ -249,12 +249,12 @@ export default class HTMLExporter extends Exporter {
return renderToStaticMarkup(dateSeparator);
}
protected needsDateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) {
protected async needsDateSeparator(event: MatrixEvent, prevEvent: MatrixEvent): Promise<boolean> {
if (prevEvent == null) return true;
return wantsDateSeparator(prevEvent.getDate(), event.getDate());
}
public getEventTile(mxEv: MatrixEvent, continuation: boolean) {
public getEventTile(mxEv: MatrixEvent, continuation: boolean): JSX.Element {
return (
<div className="mx_Export_EventWrapper" id={mxEv.getId()}>
<MatrixClientContext.Provider value={this.client}>
@@ -285,7 +285,7 @@ export default class HTMLExporter extends Exporter {
);
}
protected async getEventTileMarkup(mxEv: MatrixEvent, continuation: boolean, filePath?: string) {
protected async getEventTileMarkup(mxEv: MatrixEvent, continuation: boolean, filePath?: string): Promise<string> {
const hasAvatar = !!this.getAvatarURL(mxEv);
if (hasAvatar) await this.saveAvatarIfNeeded(mxEv);
const EventTile = this.getEventTile(mxEv, continuation);
@@ -319,7 +319,7 @@ export default class HTMLExporter extends Exporter {
return eventTileMarkup;
}
protected createModifiedEvent(text: string, mxEv: MatrixEvent, italic = true) {
protected createModifiedEvent(text: string, mxEv: MatrixEvent, italic = true): MatrixEvent {
const modifiedContent = {
msgtype: "m.text",
body: `${text}`,
@@ -338,7 +338,7 @@ export default class HTMLExporter extends Exporter {
return modifiedEvent;
}
protected async createMessageBody(mxEv: MatrixEvent, joined = false) {
protected async createMessageBody(mxEv: MatrixEvent, joined = false): Promise<string> {
let eventTile: string;
try {
if (this.isAttachment(mxEv)) {
@@ -387,7 +387,7 @@ export default class HTMLExporter extends Exporter {
return eventTile;
}
protected async createHTML(events: MatrixEvent[], start: number) {
protected async createHTML(events: MatrixEvent[], start: number): Promise<string> {
let content = "";
let prevEvent = null;
for (let i = start; i < Math.min(start + 1000, events.length); i++) {
@@ -415,7 +415,7 @@ export default class HTMLExporter extends Exporter {
return this.wrapHTML(content);
}
public async export() {
public async export(): Promise<void> {
this.updateProgress(_t("Starting export..."));
const fetchStart = performance.now();

View File

@@ -15,7 +15,7 @@ limitations under the License.
*/
import { Room } from "matrix-js-sdk/src/models/room";
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
import { IEvent, MatrixEvent } from "matrix-js-sdk/src/models/event";
import { EventType } from "matrix-js-sdk/src/@types/event";
import { logger } from "matrix-js-sdk/src/logger";
@@ -60,7 +60,7 @@ export default class JSONExporter extends Exporter {
return JSON.stringify(jsonObject, null, 2);
}
protected async getJSONString(mxEv: MatrixEvent) {
protected async getJSONString(mxEv: MatrixEvent): Promise<IEvent> {
if (this.exportOptions.attachmentsIncluded && this.isAttachment(mxEv)) {
try {
const blob = await this.getMediaBlob(mxEv);
@@ -81,7 +81,7 @@ export default class JSONExporter extends Exporter {
return clearEvent;
}
protected async createOutput(events: MatrixEvent[]) {
protected async createOutput(events: MatrixEvent[]): Promise<string> {
for (let i = 0; i < events.length; i++) {
const event = events[i];
this.updateProgress(
@@ -99,7 +99,7 @@ export default class JSONExporter extends Exporter {
return this.createJSONString();
}
public async export() {
public async export(): Promise<void> {
logger.info("Starting export process...");
logger.info("Fetching events...");

View File

@@ -46,7 +46,7 @@ export default class PlainTextExporter extends Exporter {
return this.makeFileNameNoExtension() + ".txt";
}
public textForReplyEvent = (content: IContent) => {
public textForReplyEvent = (content: IContent): string => {
const REPLY_REGEX = /> <(.*?)>(.*?)\n\n(.*)/s;
const REPLY_SOURCE_MAX_LENGTH = 32;
@@ -79,7 +79,7 @@ export default class PlainTextExporter extends Exporter {
return `<${rplName}${rplSource}> ${rplText}`;
};
protected plainTextForEvent = async (mxEv: MatrixEvent) => {
protected plainTextForEvent = async (mxEv: MatrixEvent): Promise<string> => {
const senderDisplayName = mxEv.sender && mxEv.sender.name ? mxEv.sender.name : mxEv.getSender();
let mediaText = "";
if (this.isAttachment(mxEv)) {
@@ -107,7 +107,7 @@ export default class PlainTextExporter extends Exporter {
else return textForEvent(mxEv) + mediaText;
};
protected async createOutput(events: MatrixEvent[]) {
protected async createOutput(events: MatrixEvent[]): Promise<string> {
let content = "";
for (let i = 0; i < events.length; i++) {
const event = events[i];
@@ -127,7 +127,7 @@ export default class PlainTextExporter extends Exporter {
return content;
}
public async export() {
public async export(): Promise<void> {
this.updateProgress(_t("Starting export process..."));
this.updateProgress(_t("Fetching events..."));