From eb54487d8ef3cfa1cc2c922553cf0a53d082b176 Mon Sep 17 00:00:00 2001 From: Michael Clark <5285928+MikesGlitch@users.noreply.github.com> Date: Thu, 19 Oct 2023 08:14:50 +0100 Subject: [PATCH] Maintenance: Convert FixEncryptionKey, Loading, AnimatedLoading components to TypeScript (#1784) --- .../desktop-client/src/components/common/Modal.tsx | 2 +- .../{FixEncryptionKey.js => FixEncryptionKey.tsx} | 11 ++++++++++- .../icons/{AnimatedLoading.js => AnimatedLoading.tsx} | 8 ++++---- .../src/icons/{Loading.js => Loading.tsx} | 4 ++-- .../loot-core/src/client/state-types/queries.d.ts | 4 ++-- packages/loot-core/src/types/server-handlers.d.ts | 4 ++-- upcoming-release-notes/1784.md | 6 ++++++ 7 files changed, 27 insertions(+), 12 deletions(-) rename packages/desktop-client/src/components/modals/{FixEncryptionKey.js => FixEncryptionKey.tsx} (92%) rename packages/desktop-client/src/icons/{AnimatedLoading.js => AnimatedLoading.tsx} (73%) rename packages/desktop-client/src/icons/{Loading.js => Loading.tsx} (88%) create mode 100644 upcoming-release-notes/1784.md diff --git a/packages/desktop-client/src/components/common/Modal.tsx b/packages/desktop-client/src/components/common/Modal.tsx index 2bab19bc7f5..a03bdd004b3 100644 --- a/packages/desktop-client/src/components/common/Modal.tsx +++ b/packages/desktop-client/src/components/common/Modal.tsx @@ -18,7 +18,7 @@ import Text from './Text'; import View from './View'; export type ModalProps = { - title: string; + title?: string; isCurrent?: boolean; isHidden?: boolean; children: ReactNode | (() => ReactNode); diff --git a/packages/desktop-client/src/components/modals/FixEncryptionKey.js b/packages/desktop-client/src/components/modals/FixEncryptionKey.tsx similarity index 92% rename from packages/desktop-client/src/components/modals/FixEncryptionKey.js rename to packages/desktop-client/src/components/modals/FixEncryptionKey.tsx index 57e52e37edf..d327898f928 100644 --- a/packages/desktop-client/src/components/modals/FixEncryptionKey.js +++ b/packages/desktop-client/src/components/modals/FixEncryptionKey.tsx @@ -1,9 +1,12 @@ import React, { useState } from 'react'; +import { type FinanceModals } from 'loot-core/src/client/state-types/modals'; import { send } from 'loot-core/src/platform/client/fetch'; import { getTestKeyError } from 'loot-core/src/shared/errors'; +import { type BoundActions } from '../../hooks/useActions'; import { theme } from '../../style'; +import { type CommonModalProps } from '../../types/modals'; import Button, { ButtonWithLoading } from '../common/Button'; import ExternalLink from '../common/ExternalLink'; import InitialFocus from '../common/InitialFocus'; @@ -13,11 +16,17 @@ import Paragraph from '../common/Paragraph'; import Text from '../common/Text'; import View from '../common/View'; +type FixEncryptionKeyProps = { + modalProps: CommonModalProps; + actions: BoundActions; + options: FinanceModals['fix-encryption-key']; +}; + export default function FixEncryptionKey({ modalProps, actions, options = {}, -}) { +}: FixEncryptionKeyProps) { let { hasExistingKey, cloudFileId, onSuccess } = options; let [password, setPassword] = useState(''); diff --git a/packages/desktop-client/src/icons/AnimatedLoading.js b/packages/desktop-client/src/icons/AnimatedLoading.tsx similarity index 73% rename from packages/desktop-client/src/icons/AnimatedLoading.js rename to packages/desktop-client/src/icons/AnimatedLoading.tsx index 803c86f1c6f..a153265a405 100644 --- a/packages/desktop-client/src/icons/AnimatedLoading.js +++ b/packages/desktop-client/src/icons/AnimatedLoading.tsx @@ -1,15 +1,15 @@ -import React from 'react'; +import React, { type SVGProps } from 'react'; -import { css } from 'glamor'; +import { css, keyframes } from 'glamor'; import Loading from './Loading'; -const rotation = css.keyframes({ +const rotation = keyframes({ '0%': { transform: 'rotate(-90deg)' }, '100%': { transform: 'rotate(666deg)' }, }); -function AnimatedLoading(props) { +function AnimatedLoading(props: SVGProps) { return ( { +const SvgLoading = (props: SVGProps) => { let { color = 'currentColor' } = props; let [gradientId] = useState('gradient-' + Math.random()); diff --git a/packages/loot-core/src/client/state-types/queries.d.ts b/packages/loot-core/src/client/state-types/queries.d.ts index bad2b1904e0..829c9038218 100644 --- a/packages/loot-core/src/client/state-types/queries.d.ts +++ b/packages/loot-core/src/client/state-types/queries.d.ts @@ -8,7 +8,7 @@ export type QueriesState = { updatedAccounts: string[]; accounts: AccountEntity[]; categories: Awaited>; - payees: unknown[]; + payees: Awaited>; earliestTransaction: unknown | null; }; @@ -51,7 +51,7 @@ type LoadCategoriesAction = { type LoadPayeesAction = { type: typeof constants.LOAD_PAYEES; - payees: unknown[]; + payees: State['payees']; }; export type QueriesActions = diff --git a/packages/loot-core/src/types/server-handlers.d.ts b/packages/loot-core/src/types/server-handlers.d.ts index e7c3e7ba0ca..82660722163 100644 --- a/packages/loot-core/src/types/server-handlers.d.ts +++ b/packages/loot-core/src/types/server-handlers.d.ts @@ -5,7 +5,7 @@ import { Backup } from '../server/backups'; import { RemoteFile } from '../server/cloud-storage'; import { Message } from '../server/sync'; -import { AccountEntity } from './models'; +import { AccountEntity, PayeeEntity } from './models'; import { EmptyObject } from './util'; export interface ServerHandlers { @@ -95,7 +95,7 @@ export interface ServerHandlers { 'payee-create': (arg: { name }) => Promise; - 'payees-get': () => Promise; + 'payees-get': () => Promise; 'payees-get-rule-counts': () => Promise; diff --git a/upcoming-release-notes/1784.md b/upcoming-release-notes/1784.md new file mode 100644 index 00000000000..530c9a07ec3 --- /dev/null +++ b/upcoming-release-notes/1784.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MikesGlitch] +--- + +Convert FixEncryptionKey, Loading, AnimatedLoading components to TypeScript and update get-payee query type.