diff --git a/src/@types/common.ts b/src/@types/common.ts new file mode 100644 index 0000000000..26e5317aa3 --- /dev/null +++ b/src/@types/common.ts @@ -0,0 +1,19 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Based on https://stackoverflow.com/a/53229857/3532235 +export type Without = {[P in Exclude] ? : never} +export type XOR = (T | U) extends object ? (Without & U) | (Without & T) : T | U; diff --git a/src/components/views/toasts/GenericToast.tsx b/src/components/views/toasts/GenericToast.tsx index 9d69330857..ea12641948 100644 --- a/src/components/views/toasts/GenericToast.tsx +++ b/src/components/views/toasts/GenericToast.tsx @@ -17,17 +17,21 @@ limitations under the License. import React, {ReactChild} from "react"; import FormButton from "../elements/FormButton"; +import {XOR} from "../../../@types/common"; interface IProps { description: ReactChild; acceptLabel: string; - rejectLabel?: string; onAccept(); - onReject?(); } -const GenericToast: React.FC = ({description, acceptLabel, rejectLabel, onAccept, onReject}) => { +interface IPropsExtended extends IProps { + rejectLabel: string; + onReject(); +} + +const GenericToast: React.FC> = ({description, acceptLabel, rejectLabel, onAccept, onReject}) => { return
{ description }