From 1ed84059d7bb81567c47461ffc88b37ddd1f0424 Mon Sep 17 00:00:00 2001 From: Michael Clark <5285928+MikesGlitch@users.noreply.github.com> Date: Sun, 26 Nov 2023 19:49:26 +0000 Subject: [PATCH] [Maintenance] Update ConfirmCategoryDelete, GoCardlessExternalMsg, ManageRulesModal to tsx (#1972) --- ...oryDelete.js => ConfirmCategoryDelete.tsx} | 21 +++++++--- ...ternalMsg.js => GoCardlessExternalMsg.tsx} | 42 ++++++++++++------- ...nageRulesModal.js => ManageRulesModal.tsx} | 13 +++++- .../src/types/models/gocardless.d.ts | 10 +++++ .../loot-core/src/types/server-handlers.d.ts | 6 ++- upcoming-release-notes/1972.md | 6 +++ 6 files changed, 76 insertions(+), 22 deletions(-) rename packages/desktop-client/src/components/modals/{ConfirmCategoryDelete.js => ConfirmCategoryDelete.tsx} (85%) rename packages/desktop-client/src/components/modals/{GoCardlessExternalMsg.js => GoCardlessExternalMsg.tsx} (88%) rename packages/desktop-client/src/components/modals/{ManageRulesModal.js => ManageRulesModal.tsx} (79%) create mode 100644 upcoming-release-notes/1972.md diff --git a/packages/desktop-client/src/components/modals/ConfirmCategoryDelete.js b/packages/desktop-client/src/components/modals/ConfirmCategoryDelete.tsx similarity index 85% rename from packages/desktop-client/src/components/modals/ConfirmCategoryDelete.js rename to packages/desktop-client/src/components/modals/ConfirmCategoryDelete.tsx index 9c209ed7a4..6b8c9bde2c 100644 --- a/packages/desktop-client/src/components/modals/ConfirmCategoryDelete.js +++ b/packages/desktop-client/src/components/modals/ConfirmCategoryDelete.tsx @@ -1,6 +1,9 @@ import React, { useState } from 'react'; +import { type CategoryGroupEntity } from 'loot-core/src/types/models'; + import { theme } from '../../style'; +import { type CommonModalProps } from '../../types/modals'; import CategoryAutocomplete from '../autocomplete/CategoryAutocomplete'; import Block from '../common/Block'; import Button from '../common/Button'; @@ -8,18 +11,26 @@ import Modal from '../common/Modal'; import Text from '../common/Text'; import View from '../common/View'; +type ConfirmCategoryDeleteProps = { + modalProps: CommonModalProps; + category: CategoryGroupEntity; + group: CategoryGroupEntity; + categoryGroups: CategoryGroupEntity[]; + onDelete: (categoryId: string) => void; +}; + export default function ConfirmCategoryDelete({ modalProps, category, group, categoryGroups, onDelete, -}) { - const [transferCategory, setTransferCategory] = useState(null); - const [error, setError] = useState(null); +}: ConfirmCategoryDeleteProps) { + const [transferCategory, setTransferCategory] = useState(null); + const [error, setError] = useState(null); - const renderError = error => { - let msg; + const renderError = (error: string) => { + let msg: string; switch (error) { case 'required-transfer': diff --git a/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.js b/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.tsx similarity index 88% rename from packages/desktop-client/src/components/modals/GoCardlessExternalMsg.js rename to packages/desktop-client/src/components/modals/GoCardlessExternalMsg.tsx index 3945652427..53355f3364 100644 --- a/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.js +++ b/packages/desktop-client/src/components/modals/GoCardlessExternalMsg.tsx @@ -3,11 +3,16 @@ import { useDispatch } from 'react-redux'; import { pushModal } from 'loot-core/src/client/actions/modals'; import { sendCatch } from 'loot-core/src/platform/client/fetch'; +import { + type GoCardlessInstitution, + type GoCardlessToken, +} from 'loot-core/src/types/models'; import useGoCardlessStatus from '../../hooks/useGoCardlessStatus'; import AnimatedLoading from '../../icons/AnimatedLoading'; import DotsHorizontalTriple from '../../icons/v1/DotsHorizontalTriple'; import { theme } from '../../style'; +import { type CommonModalProps } from '../../types/modals'; import { Error, Warning } from '../alerts'; import Autocomplete from '../autocomplete/Autocomplete'; import Button from '../common/Button'; @@ -22,8 +27,8 @@ import { Tooltip } from '../tooltips'; import { COUNTRY_OPTIONS } from './countries'; -function useAvailableBanks(country) { - const [banks, setBanks] = useState([]); +function useAvailableBanks(country: string) { + const [banks, setBanks] = useState([]); const [isLoading, setIsLoading] = useState(false); const [isError, setIsError] = useState(false); @@ -61,7 +66,7 @@ function useAvailableBanks(country) { }; } -function renderError(error) { +function renderError(error: 'unknown' | 'timeout') { return ( {error === 'timeout' @@ -71,23 +76,33 @@ function renderError(error) { ); } +type GoCardlessExternalMsgProps = { + modalProps: CommonModalProps; + onMoveExternal: (arg: { + institutionId: string; + }) => Promise<{ error?: 'unknown' | 'timeout'; data?: GoCardlessToken }>; + onSuccess: (data: GoCardlessToken) => Promise; + onClose: () => void; +}; + export default function GoCardlessExternalMsg({ modalProps, onMoveExternal, onSuccess, onClose: originalOnClose, -}) { +}: GoCardlessExternalMsgProps) { const dispatch = useDispatch(); - let [waiting, setWaiting] = useState(null); - let [success, setSuccess] = useState(false); - let [institutionId, setInstitutionId] = useState(); - let [country, setCountry] = useState(); - let [error, setError] = useState(null); - let [isGoCardlessSetupComplete, setIsGoCardlessSetupComplete] = - useState(null); - let [menuOpen, setMenuOpen] = useState(false); - let data = useRef(null); + let [waiting, setWaiting] = useState(null); + let [success, setSuccess] = useState(false); + let [institutionId, setInstitutionId] = useState(); + let [country, setCountry] = useState(); + let [error, setError] = useState<'unknown' | 'timeout' | null>(null); + let [isGoCardlessSetupComplete, setIsGoCardlessSetupComplete] = useState< + boolean | null + >(null); + let [menuOpen, setMenuOpen] = useState(false); + let data = useRef(null); const { data: bankOptions, @@ -140,7 +155,6 @@ export default function GoCardlessExternalMsg({ Promise<{ configured: boolean }>; - 'gocardless-get-banks': (country) => Promise; + 'gocardless-get-banks': (country: string) => Promise<{ + data: GoCardlessInstitution[]; + error?: { reason: string }; + }>; 'gocardless-poll-web-token-stop': () => Promise<'ok'>; diff --git a/upcoming-release-notes/1972.md b/upcoming-release-notes/1972.md new file mode 100644 index 0000000000..40ec244b45 --- /dev/null +++ b/upcoming-release-notes/1972.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MikesGlitch] +--- + +Update ConfirmCategoryDelete, GoCardlessExternalMsg, ManageRulesModal to tsx