Add lint for unused locals (#8007)

This commit is contained in:
J. Ryan Stinnett 2022-03-09 12:05:16 +00:00 committed by GitHub
parent c7dfaa8f64
commit 65691202f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 46 additions and 115 deletions

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2017 New Vector Ltd Copyright 2017 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { EventSubscription } from 'fbemitter';
import { logger } from "matrix-js-sdk/src/logger"; import { logger } from "matrix-js-sdk/src/logger";
import RoomViewStore from './stores/RoomViewStore'; import RoomViewStore from './stores/RoomViewStore';
@ -33,11 +32,10 @@ type Listener = (isActive: boolean) => void;
export class ActiveRoomObserver { export class ActiveRoomObserver {
private listeners: {[key: string]: Listener[]} = {}; private listeners: {[key: string]: Listener[]} = {};
private _activeRoomId = RoomViewStore.getRoomId(); private _activeRoomId = RoomViewStore.getRoomId();
private readonly roomStoreToken: EventSubscription;
constructor() { constructor() {
// TODO: We could self-destruct when the last listener goes away, or at least stop listening. // TODO: We could self-destruct when the last listener goes away, or at least stop listening.
this.roomStoreToken = RoomViewStore.addListener(this.onRoomViewStoreUpdate); RoomViewStore.addListener(this.onRoomViewStoreUpdate);
} }
public get activeRoomId(): string { public get activeRoomId(): string {

View file

@ -1,6 +1,6 @@
/* /*
Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>
Copyright 2020 The Matrix.org Foundation C.I.C. Copyright 2020 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -166,7 +166,6 @@ const HEARTBEAT_INTERVAL = 30 * 1000; // seconds
export class Analytics { export class Analytics {
private baseUrl: URL = null; private baseUrl: URL = null;
private siteId: string = null;
private visitVariables: Record<number, [string, string]> = {}; // {[id: number]: [name: string, value: string]} private visitVariables: Record<number, [string, string]> = {}; // {[id: number]: [name: string, value: string]}
private firstPage = true; private firstPage = true;
private heartbeatIntervalID: number = null; private heartbeatIntervalID: number = null;

View file

@ -1,7 +1,7 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017, 2018 New Vector Ltd Copyright 2017, 2018 New Vector Ltd
Copyright 2019 - 2021 The Matrix.org Foundation C.I.C. Copyright 2019 - 2022 The Matrix.org Foundation C.I.C.
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com> Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
@ -125,10 +125,6 @@ export default class CallHandler extends EventEmitter {
private supportsPstnProtocol = null; private supportsPstnProtocol = null;
private pstnSupportPrefixed = null; // True if the server only support the prefixed pstn protocol private pstnSupportPrefixed = null; // True if the server only support the prefixed pstn protocol
private supportsSipNativeVirtual = null; // im.vector.protocol.sip_virtual and im.vector.protocol.sip_native private supportsSipNativeVirtual = null; // im.vector.protocol.sip_virtual and im.vector.protocol.sip_native
private pstnSupportCheckTimer: number;
// For rooms we've been invited to, true if they're from virtual user, false if we've checked and they aren't.
private invitedRoomsAreVirtual = new Map<string, boolean>();
private invitedRoomCheckInProgress = false;
// Map of the asserted identity users after we've looked them up using the API. // Map of the asserted identity users after we've looked them up using the API.
// We need to be be able to determine the mapped room synchronously, so we // We need to be be able to determine the mapped room synchronously, so we
@ -255,7 +251,7 @@ export default class CallHandler extends EventEmitter {
logger.log("Failed to check for protocol support and no retries remain: assuming no support", e); logger.log("Failed to check for protocol support and no retries remain: assuming no support", e);
} else { } else {
logger.log("Failed to check for protocol support: will retry", e); logger.log("Failed to check for protocol support: will retry", e);
this.pstnSupportCheckTimer = setTimeout(() => { setTimeout(() => {
this.checkProtocols(maxTries - 1); this.checkProtocols(maxTries - 1);
}, 10000); }, 10000);
} }

View file

@ -1,6 +1,6 @@
/* /*
Copyright 2015, 2016 OpenMarket Ltd Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 The Matrix.org Foundation C.I.C. Copyright 2019 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -29,7 +29,6 @@ import { _t } from './languageHandler';
export default class PasswordReset { export default class PasswordReset {
private client: MatrixClient; private client: MatrixClient;
private clientSecret: string; private clientSecret: string;
private identityServerDomain: string;
private password: string; private password: string;
private sessionId: string; private sessionId: string;
@ -44,7 +43,6 @@ export default class PasswordReset {
idBaseUrl: identityUrl, idBaseUrl: identityUrl,
}); });
this.clientSecret = this.client.generateClientSecret(); this.clientSecret = this.client.generateClientSecret();
this.identityServerDomain = identityUrl ? identityUrl.split("://")[1] : null;
} }
/** /**

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2021 The Matrix.org Foundation C.I.C. Copyright 2021 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { MatrixClient } from "matrix-js-sdk/src/client";
import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { MatrixEvent } from "matrix-js-sdk/src/models/event";
import { Room } from "matrix-js-sdk/src/models/room"; import { Room } from "matrix-js-sdk/src/models/room";
import { EventType } from "matrix-js-sdk/src/@types/event"; import { EventType } from "matrix-js-sdk/src/@types/event";
@ -49,7 +48,7 @@ export class PlaybackQueue {
private currentPlaybackId: string; // event ID, broken out from above for ease of use private currentPlaybackId: string; // event ID, broken out from above for ease of use
private recentFullPlays = new Set<string>(); // event IDs private recentFullPlays = new Set<string>(); // event IDs
constructor(private client: MatrixClient, private room: Room) { constructor(private room: Room) {
this.loadClocks(); this.loadClocks();
RoomViewStore.addListener(() => { RoomViewStore.addListener(() => {
@ -71,7 +70,7 @@ export class PlaybackQueue {
if (PlaybackQueue.queues.has(room.roomId)) { if (PlaybackQueue.queues.has(room.roomId)) {
return PlaybackQueue.queues.get(room.roomId); return PlaybackQueue.queues.get(room.roomId);
} }
const queue = new PlaybackQueue(cli, room); const queue = new PlaybackQueue(room);
PlaybackQueue.queues.set(room.roomId, queue); PlaybackQueue.queues.set(room.roomId, queue);
return queue; return queue;
} }

View file

@ -177,10 +177,6 @@ export default class InteractiveAuthComponent extends React.Component<IProps, IS
} }
}; };
private tryContinue = (): void => {
this.stageComponent.current?.tryContinue?.();
};
private authStateUpdated = (stageType: AuthType, stageState: IStageStatus): void => { private authStateUpdated = (stageType: AuthType, stageState: IStageStatus): void => {
const oldStage = this.state.authStage; const oldStage = this.state.authStage;
this.setState({ this.setState({

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2015 - 2021 The Matrix.org Foundation C.I.C. Copyright 2015 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -58,6 +58,7 @@ import AudioFeedArrayForCall from '../views/voip/AudioFeedArrayForCall';
import { OwnProfileStore } from '../../stores/OwnProfileStore'; import { OwnProfileStore } from '../../stores/OwnProfileStore';
import { UPDATE_EVENT } from "../../stores/AsyncStore"; import { UPDATE_EVENT } from "../../stores/AsyncStore";
import RoomView from './RoomView'; import RoomView from './RoomView';
import type { RoomView as RoomViewType } from './RoomView';
import ToastContainer from './ToastContainer'; import ToastContainer from './ToastContainer';
import MyGroups from "./MyGroups"; import MyGroups from "./MyGroups";
import UserView from "./UserView"; import UserView from "./UserView";
@ -139,7 +140,7 @@ class LoggedInView extends React.Component<IProps, IState> {
static displayName = 'LoggedInView'; static displayName = 'LoggedInView';
protected readonly _matrixClient: MatrixClient; protected readonly _matrixClient: MatrixClient;
protected readonly _roomView: React.RefObject<any>; protected readonly _roomView: React.RefObject<RoomViewType>;
protected readonly _resizeContainer: React.RefObject<HTMLDivElement>; protected readonly _resizeContainer: React.RefObject<HTMLDivElement>;
protected readonly resizeHandler: React.RefObject<HTMLDivElement>; protected readonly resizeHandler: React.RefObject<HTMLDivElement>;
protected layoutWatcherRef: string; protected layoutWatcherRef: string;

View file

@ -229,7 +229,6 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
private firstSyncPromise: IDeferred<void>; private firstSyncPromise: IDeferred<void>;
private screenAfterLogin?: IScreen; private screenAfterLogin?: IScreen;
private pageChanging: boolean;
private tokenLogin?: boolean; private tokenLogin?: boolean;
private accountPassword?: string; private accountPassword?: string;
private accountPasswordTimer?: number; private accountPasswordTimer?: number;
@ -284,8 +283,6 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
this.prevWindowWidth = UIStore.instance.windowWidth || 1000; this.prevWindowWidth = UIStore.instance.windowWidth || 1000;
UIStore.instance.on(UI_EVENTS.Resize, this.handleResize); UIStore.instance.on(UI_EVENTS.Resize, this.handleResize);
this.pageChanging = false;
// For PersistentElement // For PersistentElement
this.state.resizeNotifier.on("middlePanelResized", this.dispatchTimelineResize); this.state.resizeNotifier.on("middlePanelResized", this.dispatchTimelineResize);

View file

@ -78,7 +78,6 @@ interface IState {
@replaceableComponent("structures.RoomDirectory") @replaceableComponent("structures.RoomDirectory")
export default class RoomDirectory extends React.Component<IProps, IState> { export default class RoomDirectory extends React.Component<IProps, IState> {
private readonly startTime: number;
private unmounted = false; private unmounted = false;
private nextBatch: string = null; private nextBatch: string = null;
private filterTimeout: number; private filterTimeout: number;

View file

@ -1681,8 +1681,8 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
* *
* We pass it down to the scroll panel. * We pass it down to the scroll panel.
*/ */
private handleScrollKey = ev => { public handleScrollKey = ev => {
let panel; let panel: ScrollPanel | TimelinePanel;
if (this.searchResultsPanel.current) { if (this.searchResultsPanel.current) {
panel = this.searchResultsPanel.current; panel = this.searchResultsPanel.current;
} else if (this.messagePanel) { } else if (this.messagePanel) {

View file

@ -326,10 +326,6 @@ export class TermsAuthEntry extends React.Component<ITermsAuthEntryProps, ITerms
this.props.onPhaseChange(DEFAULT_PHASE); this.props.onPhaseChange(DEFAULT_PHASE);
} }
public tryContinue = () => {
this.trySubmit();
};
private togglePolicy(policyId: string) { private togglePolicy(policyId: string) {
const newToggles = {}; const newToggles = {};
for (const policy of this.state.policies) { for (const policy of this.state.policies) {
@ -832,7 +828,6 @@ export interface IStageComponentProps extends IAuthEntryProps {
} }
export interface IStageComponent extends React.ComponentClass<React.PropsWithRef<IStageComponentProps>> { export interface IStageComponent extends React.ComponentClass<React.PropsWithRef<IStageComponentProps>> {
tryContinue?(): void;
attemptFailed?(): void; attemptFailed?(): void;
focus?(): void; focus?(): void;
} }

View file

@ -1,6 +1,6 @@
/* /*
Copyright 2018, 2019 New Vector Ltd Copyright 2018, 2019 New Vector Ltd
Copyright 2020 The Matrix.org Foundation C.I.C. Copyright 2020 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -81,11 +81,6 @@ export default class LogoutDialog extends React.Component<IProps, IState> {
} }
} }
private onSettingsLinkClick = (): void => {
// close dialog
this.props.onFinished(true);
};
private onExportE2eKeysClicked = (): void => { private onExportE2eKeysClicked = (): void => {
Modal.createTrackedDialogAsync('Export E2E Keys', '', Modal.createTrackedDialogAsync('Export E2E Keys', '',
import( import(

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Copyright 2016 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -28,6 +28,7 @@ import {
VectorPushRulesDefinitions, VectorPushRulesDefinitions,
VectorState, VectorState,
} from "../../../notifications"; } from "../../../notifications";
import type { VectorPushRuleDefinition } from "../../../notifications";
import { _t, TranslatedString } from "../../../languageHandler"; import { _t, TranslatedString } from "../../../languageHandler";
import LabelledToggleSwitch from "../elements/LabelledToggleSwitch"; import LabelledToggleSwitch from "../elements/LabelledToggleSwitch";
import SettingsStore from "../../../settings/SettingsStore"; import SettingsStore from "../../../settings/SettingsStore";
@ -209,7 +210,7 @@ export default class Notifications extends React.PureComponent<IProps, IState> {
for (const category of vectorCategories) { for (const category of vectorCategories) {
preparedNewState.vectorPushRules[category] = []; preparedNewState.vectorPushRules[category] = [];
for (const rule of defaultRules[category]) { for (const rule of defaultRules[category]) {
const definition = VectorPushRulesDefinitions[rule.rule_id]; const definition: VectorPushRuleDefinition = VectorPushRulesDefinitions[rule.rule_id];
const vectorState = definition.ruleToVectorState(rule); const vectorState = definition.ruleToVectorState(rule);
preparedNewState.vectorPushRules[category].push({ preparedNewState.vectorPushRules[category].push({
ruleId: rule.rule_id, ruleId: rule.rule_id,
@ -356,7 +357,7 @@ export default class Notifications extends React.PureComponent<IProps, IState> {
} }
} }
} else { } else {
const definition = VectorPushRulesDefinitions[rule.ruleId]; const definition: VectorPushRuleDefinition = VectorPushRulesDefinitions[rule.ruleId];
const actions = definition.vectorStateToActions[checkedState]; const actions = definition.vectorStateToActions[checkedState];
if (!actions) { if (!actions) {
await cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false); await cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false);

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2019-2022 The Matrix.org Foundation C.I.C. Copyright 2019 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -100,18 +100,6 @@ export default class HelpUserSettingsTab extends React.Component<IProps, IState>
}); });
}; };
private showSpoiler = (event) => {
const target = event.target;
target.innerHTML = target.getAttribute('data-spoiler');
const range = document.createRange();
range.selectNodeContents(target);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
};
private renderLegal() { private renderLegal() {
const tocLinks = SdkConfig.get().terms_and_conditions_links; const tocLinks = SdkConfig.get().terms_and_conditions_links;
if (!tocLinks) return null; if (!tocLinks) return null;

View file

@ -1,6 +1,5 @@
/* /*
Copyright 2019 New Vector Ltd Copyright 2019 - 2022 The Matrix.org Foundation C.I.C.
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -147,14 +146,6 @@ export default class SecurityUserSettingsTab extends React.Component<IProps, ISt
}); });
}; };
private onGoToUserProfileClick = (): void => {
dis.dispatch({
action: 'view_user_info',
userId: MatrixClientPeg.get().getUserId(),
});
this.props.closeSettingsFn();
};
private onUserUnignored = async (userId: string): Promise<void> => { private onUserUnignored = async (userId: string): Promise<void> => {
const { ignoredUserIds, waitingUnignored } = this.state; const { ignoredUserIds, waitingUnignored } = this.state;
const currentlyIgnoredUserIds = ignoredUserIds.filter(e => !waitingUnignored.includes(e)); const currentlyIgnoredUserIds = ignoredUserIds.filter(e => !waitingUnignored.includes(e));

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2021 The Matrix.org Foundation C.I.C. Copyright 2021 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -205,7 +205,7 @@ const CreateSpaceButton = ({
}: Pick<IInnerSpacePanelProps, "isPanelCollapsed" | "setPanelCollapsed">) => { }: Pick<IInnerSpacePanelProps, "isPanelCollapsed" | "setPanelCollapsed">) => {
// We don't need the handle as we position the menu in a constant location // We don't need the handle as we position the menu in a constant location
// eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-unused-vars
const [menuDisplayed, handle, openMenu, closeMenu] = useContextMenu<void>(); const [menuDisplayed, _handle, openMenu, closeMenu] = useContextMenu<void>();
useEffect(() => { useEffect(() => {
if (!isPanelCollapsed && menuDisplayed) { if (!isPanelCollapsed && menuDisplayed) {

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2020 The Matrix.org Foundation C.I.C. Copyright 2020 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -42,8 +42,6 @@ interface IState {
*/ */
@replaceableComponent("views.voip.CallViewForRoom") @replaceableComponent("views.voip.CallViewForRoom")
export default class CallViewForRoom extends React.Component<IProps, IState> { export default class CallViewForRoom extends React.Component<IProps, IState> {
private dispatcherRef: string;
constructor(props: IProps) { constructor(props: IProps) {
super(props); super(props);
this.state = { this.state = {

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2016 - 2021 The Matrix.org Foundation C.I.C. Copyright 2016 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { PushRuleAction, PushRuleKind } from "matrix-js-sdk/src/@types/PushRules"; import { IAnnotatedPushRule, PushRuleAction } from "matrix-js-sdk/src/@types/PushRules";
import { logger } from "matrix-js-sdk/src/logger"; import { logger } from "matrix-js-sdk/src/logger";
import { _td } from '../languageHandler'; import { _td } from '../languageHandler';
@ -26,32 +26,29 @@ type StateToActionsMap = {
[state in VectorState]?: PushRuleAction[]; [state in VectorState]?: PushRuleAction[];
}; };
interface IProps { interface IVectorPushRuleDefinition {
kind: PushRuleKind;
description: string; description: string;
vectorStateToActions: StateToActionsMap; vectorStateToActions: StateToActionsMap;
} }
class VectorPushRuleDefinition { class VectorPushRuleDefinition {
private kind: PushRuleKind; public readonly description: string;
private description: string;
public readonly vectorStateToActions: StateToActionsMap; public readonly vectorStateToActions: StateToActionsMap;
constructor(opts: IProps) { constructor(opts: IVectorPushRuleDefinition) {
this.kind = opts.kind;
this.description = opts.description; this.description = opts.description;
this.vectorStateToActions = opts.vectorStateToActions; this.vectorStateToActions = opts.vectorStateToActions;
} }
// Translate the rule actions and its enabled value into vector state // Translate the rule actions and its enabled value into vector state
public ruleToVectorState(rule): VectorPushRuleDefinition { public ruleToVectorState(rule: IAnnotatedPushRule): VectorState {
let enabled = false; let enabled = false;
if (rule) { if (rule) {
enabled = rule.enabled; enabled = rule.enabled;
} }
for (const stateKey in PushRuleVectorState.states) { // eslint-disable-line guard-for-in for (const stateKey in PushRuleVectorState.states) { // eslint-disable-line guard-for-in
const state = PushRuleVectorState.states[stateKey]; const state: VectorState = PushRuleVectorState.states[stateKey];
const vectorStateToActions = this.vectorStateToActions[state]; const vectorStateToActions = this.vectorStateToActions[state];
if (!vectorStateToActions) { if (!vectorStateToActions) {
@ -78,6 +75,7 @@ class VectorPushRuleDefinition {
return undefined; return undefined;
} }
} }
export type { VectorPushRuleDefinition };
/** /**
* The descriptions of rules managed by the Vector UI. * The descriptions of rules managed by the Vector UI.
@ -85,7 +83,6 @@ class VectorPushRuleDefinition {
export const VectorPushRulesDefinitions = { export const VectorPushRulesDefinitions = {
// Messages containing user's display name // Messages containing user's display name
".m.rule.contains_display_name": new VectorPushRuleDefinition({ ".m.rule.contains_display_name": new VectorPushRuleDefinition({
kind: PushRuleKind.Override,
description: _td("Messages containing my display name"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Messages containing my display name"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { // The actions for each vector state, or null to disable the rule. vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -96,7 +93,6 @@ export const VectorPushRulesDefinitions = {
// Messages containing user's username (localpart/MXID) // Messages containing user's username (localpart/MXID)
".m.rule.contains_user_name": new VectorPushRuleDefinition({ ".m.rule.contains_user_name": new VectorPushRuleDefinition({
kind: PushRuleKind.Override,
description: _td("Messages containing my username"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Messages containing my username"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { // The actions for each vector state, or null to disable the rule. vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -107,7 +103,6 @@ export const VectorPushRulesDefinitions = {
// Messages containing @room // Messages containing @room
".m.rule.roomnotif": new VectorPushRuleDefinition({ ".m.rule.roomnotif": new VectorPushRuleDefinition({
kind: PushRuleKind.Override,
description: _td("Messages containing @room"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Messages containing @room"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { // The actions for each vector state, or null to disable the rule. vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -118,7 +113,6 @@ export const VectorPushRulesDefinitions = {
// Messages just sent to the user in a 1:1 room // Messages just sent to the user in a 1:1 room
".m.rule.room_one_to_one": new VectorPushRuleDefinition({ ".m.rule.room_one_to_one": new VectorPushRuleDefinition({
kind: PushRuleKind.Underride,
description: _td("Messages in one-to-one chats"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Messages in one-to-one chats"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { vectorStateToActions: {
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -129,7 +123,6 @@ export const VectorPushRulesDefinitions = {
// Encrypted messages just sent to the user in a 1:1 room // Encrypted messages just sent to the user in a 1:1 room
".m.rule.encrypted_room_one_to_one": new VectorPushRuleDefinition({ ".m.rule.encrypted_room_one_to_one": new VectorPushRuleDefinition({
kind: PushRuleKind.Underride,
description: _td("Encrypted messages in one-to-one chats"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Encrypted messages in one-to-one chats"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { vectorStateToActions: {
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -142,7 +135,6 @@ export const VectorPushRulesDefinitions = {
// 1:1 room messages are catched by the .m.rule.room_one_to_one rule if any defined // 1:1 room messages are catched by the .m.rule.room_one_to_one rule if any defined
// By opposition, all other room messages are from group chat rooms. // By opposition, all other room messages are from group chat rooms.
".m.rule.message": new VectorPushRuleDefinition({ ".m.rule.message": new VectorPushRuleDefinition({
kind: PushRuleKind.Underride,
description: _td("Messages in group chats"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Messages in group chats"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { vectorStateToActions: {
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -155,7 +147,6 @@ export const VectorPushRulesDefinitions = {
// Encrypted 1:1 room messages are catched by the .m.rule.encrypted_room_one_to_one rule if any defined // Encrypted 1:1 room messages are catched by the .m.rule.encrypted_room_one_to_one rule if any defined
// By opposition, all other room messages are from group chat rooms. // By opposition, all other room messages are from group chat rooms.
".m.rule.encrypted": new VectorPushRuleDefinition({ ".m.rule.encrypted": new VectorPushRuleDefinition({
kind: PushRuleKind.Underride,
description: _td("Encrypted messages in group chats"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Encrypted messages in group chats"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { vectorStateToActions: {
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -166,7 +157,6 @@ export const VectorPushRulesDefinitions = {
// Invitation for the user // Invitation for the user
".m.rule.invite_for_me": new VectorPushRuleDefinition({ ".m.rule.invite_for_me": new VectorPushRuleDefinition({
kind: PushRuleKind.Underride,
description: _td("When I'm invited to a room"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("When I'm invited to a room"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { vectorStateToActions: {
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -177,7 +167,6 @@ export const VectorPushRulesDefinitions = {
// Incoming call // Incoming call
".m.rule.call": new VectorPushRuleDefinition({ ".m.rule.call": new VectorPushRuleDefinition({
kind: PushRuleKind.Underride,
description: _td("Call invitation"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Call invitation"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { vectorStateToActions: {
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,
@ -188,7 +177,6 @@ export const VectorPushRulesDefinitions = {
// Notifications from bots // Notifications from bots
".m.rule.suppress_notices": new VectorPushRuleDefinition({ ".m.rule.suppress_notices": new VectorPushRuleDefinition({
kind: PushRuleKind.Override,
description: _td("Messages sent by bot"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("Messages sent by bot"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { vectorStateToActions: {
// .m.rule.suppress_notices is a "negative" rule, we have to invert its enabled value for vector UI // .m.rule.suppress_notices is a "negative" rule, we have to invert its enabled value for vector UI
@ -200,7 +188,6 @@ export const VectorPushRulesDefinitions = {
// Room upgrades (tombstones) // Room upgrades (tombstones)
".m.rule.tombstone": new VectorPushRuleDefinition({ ".m.rule.tombstone": new VectorPushRuleDefinition({
kind: PushRuleKind.Override,
description: _td("When rooms are upgraded"), // passed through _t() translation in src/components/views/settings/Notifications.js description: _td("When rooms are upgraded"), // passed through _t() translation in src/components/views/settings/Notifications.js
vectorStateToActions: { // The actions for each vector state, or null to disable the rule. vectorStateToActions: { // The actions for each vector state, or null to disable the rule.
[VectorState.On]: StandardActions.ACTION_NOTIFY, [VectorState.On]: StandardActions.ACTION_NOTIFY,

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2020 The Matrix.org Foundation C.I.C. Copyright 2020 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -17,7 +17,6 @@ limitations under the License.
import { Room } from "matrix-js-sdk/src/models/room"; import { Room } from "matrix-js-sdk/src/models/room";
import { NotificationColor } from "./NotificationColor"; import { NotificationColor } from "./NotificationColor";
import { TagID } from "../room-list/models";
import { arrayDiff } from "../../utils/arrays"; import { arrayDiff } from "../../utils/arrays";
import { RoomNotificationState } from "./RoomNotificationState"; import { RoomNotificationState } from "./RoomNotificationState";
import { NotificationState, NotificationStateEvents } from "./NotificationState"; import { NotificationState, NotificationStateEvents } from "./NotificationState";
@ -28,7 +27,7 @@ export class ListNotificationState extends NotificationState {
private rooms: Room[] = []; private rooms: Room[] = [];
private states: { [roomId: string]: RoomNotificationState } = {}; private states: { [roomId: string]: RoomNotificationState } = {};
constructor(private byTileCount = false, private tagId: TagID, private getRoomFn: FetchRoomFn) { constructor(private byTileCount = false, private getRoomFn: FetchRoomFn) {
super(); super();
} }

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2020 The Matrix.org Foundation C.I.C. Copyright 2020 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -68,7 +68,7 @@ export class RoomNotificationStateStore extends AsyncStoreWithClient<IState> {
const getRoomFn: FetchRoomFn = (room: Room) => { const getRoomFn: FetchRoomFn = (room: Room) => {
return this.getRoomState(room); return this.getRoomState(room);
}; };
const state = new ListNotificationState(useTileCount, tagId, getRoomFn); const state = new ListNotificationState(useTileCount, getRoomFn);
this.listMap.set(tagId, state); this.listMap.set(tagId, state);
return state; return state;
} }

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2021 The Matrix.org Foundation C.I.C. Copyright 2021 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -26,7 +26,7 @@ export class SpaceNotificationState extends NotificationState {
public rooms: Room[] = []; // exposed only for tests public rooms: Room[] = []; // exposed only for tests
private states: { [spaceId: string]: RoomNotificationState } = {}; private states: { [spaceId: string]: RoomNotificationState } = {};
constructor(private spaceId: string | symbol, private getRoomFn: FetchRoomFn) { constructor(private getRoomFn: FetchRoomFn) {
super(); super();
} }

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2018-2021 The Matrix.org Foundation C.I.C. Copyright 2018 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -64,8 +64,6 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
private algorithm = new Algorithm(); private algorithm = new Algorithm();
private filterConditions: IFilterCondition[] = []; private filterConditions: IFilterCondition[] = [];
private prefilterConditions: IFilterCondition[] = []; private prefilterConditions: IFilterCondition[] = [];
private tagWatcher: TagWatcher;
private spaceWatcher: SpaceWatcher;
private updateFn = new MarkedExecution(() => { private updateFn = new MarkedExecution(() => {
for (const tagId of Object.keys(this.orderedLists)) { for (const tagId of Object.keys(this.orderedLists)) {
RoomNotificationStateStore.instance.getListState(tagId).setRooms(this.orderedLists[tagId]); RoomNotificationStateStore.instance.getListState(tagId).setRooms(this.orderedLists[tagId]);
@ -83,10 +81,11 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
} }
private setupWatchers() { private setupWatchers() {
// TODO: Maybe destroy these if this class supports destruction
if (SpaceStore.spacesEnabled) { if (SpaceStore.spacesEnabled) {
this.spaceWatcher = new SpaceWatcher(this); new SpaceWatcher(this);
} else { } else {
this.tagWatcher = new TagWatcher(this); new TagWatcher(this);
} }
} }
@ -106,7 +105,6 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
this.filterConditions = []; this.filterConditions = [];
this.prefilterConditions = []; this.prefilterConditions = [];
this.initialListsGenerated = false; this.initialListsGenerated = false;
this.setupWatchers();
this.algorithm.off(LIST_UPDATED_EVENT, this.onAlgorithmListUpdated); this.algorithm.off(LIST_UPDATED_EVENT, this.onAlgorithmListUpdated);
this.algorithm.off(FILTER_CHANGED, this.onAlgorithmListUpdated); this.algorithm.off(FILTER_CHANGED, this.onAlgorithmListUpdated);
@ -131,7 +129,6 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
this.algorithm.on(FILTER_CHANGED, this.onAlgorithmFilterUpdated); this.algorithm.on(FILTER_CHANGED, this.onAlgorithmFilterUpdated);
this.setupWatchers(); this.setupWatchers();
// Update any settings here, as some may have happened before we were logically ready.
// Update any settings here, as some may have happened before we were logically ready. // Update any settings here, as some may have happened before we were logically ready.
logger.log("Regenerating room lists: Startup"); logger.log("Regenerating room lists: Startup");
await this.readAndCacheSettingsFromStore(); await this.readAndCacheSettingsFromStore();

View file

@ -1,5 +1,5 @@
/* /*
Copyright 2021 The Matrix.org Foundation C.I.C. Copyright 2021 - 2022 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -1236,7 +1236,7 @@ export class SpaceStoreClass extends AsyncStoreWithClient<IState> {
return this.notificationStateMap.get(key); return this.notificationStateMap.get(key);
} }
const state = new SpaceNotificationState(key, getRoomFn); const state = new SpaceNotificationState(getRoomFn);
this.notificationStateMap.set(key, state); this.notificationStateMap.set(key, state);
return state; return state;
} }

View file

@ -1,5 +1,5 @@
/* /*
* Copyright 2020 - 2021 The Matrix.org Foundation C.I.C. * Copyright 2020 - 2022 The Matrix.org Foundation C.I.C.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -238,10 +238,6 @@ export class StopGapWidget extends EventEmitter {
return !!this.messaging; return !!this.messaging;
} }
private get widgetId() {
return this.messaging.widget.id;
}
private onOpenModal = async (ev: CustomEvent<IModalWidgetOpenRequest>) => { private onOpenModal = async (ev: CustomEvent<IModalWidgetOpenRequest>) => {
ev.preventDefault(); ev.preventDefault();
if (ModalWidgetStore.instance.canOpenModalWidget()) { if (ModalWidgetStore.instance.canOpenModalWidget()) {

View file

@ -8,6 +8,7 @@
"moduleResolution": "node", "moduleResolution": "node",
"target": "es2016", "target": "es2016",
"noImplicitAny": false, "noImplicitAny": false,
"noUnusedLocals": true,
"sourceMap": false, "sourceMap": false,
"outDir": "./lib", "outDir": "./lib",
"declaration": true, "declaration": true,