Convert WidgetOpenIDPermissionsDialog to TS

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
pull/21833/head
Šimon Brandner 2021-09-05 12:02:43 +02:00
parent 444a0da297
commit 02f672570a
No known key found for this signature in database
GPG Key ID: 55C211A1226CB17D
1 changed files with 27 additions and 26 deletions

View File

@ -15,42 +15,46 @@ limitations under the License.
*/ */
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types';
import { _t } from "../../../languageHandler"; import { _t } from "../../../languageHandler";
import * as sdk from "../../../index";
import LabelledToggleSwitch from "../elements/LabelledToggleSwitch"; import LabelledToggleSwitch from "../elements/LabelledToggleSwitch";
import { Widget } from "matrix-widget-api"; import { Widget, WidgetKind } from "matrix-widget-api";
import { OIDCState, WidgetPermissionStore } from "../../../stores/widgets/WidgetPermissionStore"; import { OIDCState, WidgetPermissionStore } from "../../../stores/widgets/WidgetPermissionStore";
import { replaceableComponent } from "../../../utils/replaceableComponent"; import { replaceableComponent } from "../../../utils/replaceableComponent";
import DialogButtons from "../elements/DialogButtons";
import BaseDialog from "./BaseDialog";
interface IProps {
onFinished: (confirmed: boolean) => void;
widget: Widget;
widgetKind: WidgetKind; // WidgetKind from widget-api
inRoomId?: string;
}
interface IState {
rememberSelection: boolean;
}
@replaceableComponent("views.dialogs.WidgetOpenIDPermissionsDialog") @replaceableComponent("views.dialogs.WidgetOpenIDPermissionsDialog")
export default class WidgetOpenIDPermissionsDialog extends React.Component { export default class WidgetOpenIDPermissionsDialog extends React.Component<IProps, IState> {
static propTypes = { constructor(props: IProps) {
onFinished: PropTypes.func.isRequired, super(props);
widget: PropTypes.objectOf(Widget).isRequired,
widgetKind: PropTypes.string.isRequired, // WidgetKind from widget-api
inRoomId: PropTypes.string,
};
constructor() {
super();
this.state = { this.state = {
rememberSelection: false, rememberSelection: false,
}; };
} }
_onAllow = () => { private onAllow = (): void => {
this._onPermissionSelection(true); this.onPermissionSelection(true);
}; };
_onDeny = () => { private onDeny = (): void => {
this._onPermissionSelection(false); this.onPermissionSelection(false);
}; };
_onPermissionSelection(allowed) { private onPermissionSelection(allowed: boolean): void {
if (this.state.rememberSelection) { if (this.state.rememberSelection) {
console.log(`Remembering ${this.props.widgetId} as allowed=${allowed} for OpenID`); console.log(`Remembering ${this.props.widget.id} as allowed=${allowed} for OpenID`);
WidgetPermissionStore.instance.setOIDCState( WidgetPermissionStore.instance.setOIDCState(
this.props.widget, this.props.widgetKind, this.props.inRoomId, this.props.widget, this.props.widgetKind, this.props.inRoomId,
@ -61,14 +65,11 @@ export default class WidgetOpenIDPermissionsDialog extends React.Component {
this.props.onFinished(allowed); this.props.onFinished(allowed);
} }
_onRememberSelectionChange = (newVal) => { private onRememberSelectionChange = (newVal: boolean): void => {
this.setState({ rememberSelection: newVal }); this.setState({ rememberSelection: newVal });
}; };
render() { render() {
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
return ( return (
<BaseDialog <BaseDialog
className='mx_WidgetOpenIDPermissionsDialog' className='mx_WidgetOpenIDPermissionsDialog'
@ -87,13 +88,13 @@ export default class WidgetOpenIDPermissionsDialog extends React.Component {
</div> </div>
<DialogButtons <DialogButtons
primaryButton={_t("Continue")} primaryButton={_t("Continue")}
onPrimaryButtonClick={this._onAllow} onPrimaryButtonClick={this.onAllow}
onCancel={this._onDeny} onCancel={this.onDeny}
additive={ additive={
<LabelledToggleSwitch <LabelledToggleSwitch
value={this.state.rememberSelection} value={this.state.rememberSelection}
toggleInFront={true} toggleInFront={true}
onChange={this._onRememberSelectionChange} onChange={this.onRememberSelectionChange}
label={_t("Remember this")} />} label={_t("Remember this")} />}
/> />
</BaseDialog> </BaseDialog>