From 7386be30ae704c7900da693a9ada7a59550e0e3e Mon Sep 17 00:00:00 2001 From: Joseph Kavanagh Date: Thu, 18 Apr 2024 17:42:06 +0100 Subject: [PATCH 1/2] refactor(web): tidying * renaming vars * move some ternary functions outside of component returns * don't import the same module multiple times --- Dockerfile | 2 +- service/latest_version/types.go | 4 +- web/ui/package-lock.json | 6 +- .../src/components/approvals/service-info.tsx | 20 ++--- .../approvals/service-update-info.tsx | 2 +- .../src/components/approvals/service.tsx | 8 +- .../generic/boolean-with-default.tsx | 4 +- .../src/components/generic/form-label.tsx | 42 +++++----- .../src/components/generic/form-select.tsx | 4 +- .../react-app/src/components/generic/util.tsx | 16 ++-- .../components/modals/action-release/item.tsx | 17 ++-- .../modals/service-edit/deployed-version.tsx | 4 +- .../service-edit/latest-version-require.tsx | 6 +- .../service-edit/notify-types/discord.tsx | 3 +- .../service-edit/notify-types/generic.tsx | 3 +- .../service-edit/notify-types/gotify.tsx | 3 +- .../service-edit/notify-types/matrix.tsx | 3 +- .../modals/service-edit/notify-types/ntfy.tsx | 3 +- .../modals/service-edit/notify-types/smtp.tsx | 3 +- .../service-edit/notify-types/telegram.tsx | 3 +- .../components/modals/service-edit/notify.tsx | 2 +- .../service-edit/util/api-ui-conversions.tsx | 12 +-- .../src/components/notification/index.tsx | 31 ++++--- .../react-app/src/handlers/notifications.tsx | 26 +++--- web/ui/react-app/src/index.css | 1 - .../react-app/src/modals/action-release.tsx | 68 +++++++-------- web/ui/react-app/src/reducers/monitor.tsx | 82 ++++++++++--------- web/ui/react-app/src/utils/errors.tsx | 4 +- .../react-app/src/utils/first-non-empty.tsx | 6 +- .../react-app/src/utils/is-empty-or-null.tsx | 2 +- web/ui/react-app/src/utils/is-empty.tsx | 5 +- web/ui/react-app/tsconfig.json | 3 +- 32 files changed, 203 insertions(+), 195 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7fa34179..7fd1148a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ ARG DEBIAN_VERSION="bookworm" ARG GO_VERSION="1.22" ARG NODE_VERSION="20" -FROM golang:${GO_VERSION}-${DEBIAN_VERSION} as go_builder +FROM golang:${GO_VERSION}-${DEBIAN_VERSION} AS go_builder FROM node:${NODE_VERSION}-${DEBIAN_VERSION} AS base COPY --from=go_builder /usr/local/go/ /usr/local/go/ diff --git a/service/latest_version/types.go b/service/latest_version/types.go index 8d6fea99..58145729 100644 --- a/service/latest_version/types.go +++ b/service/latest_version/types.go @@ -39,12 +39,12 @@ func getEmptyListETag() string { } // FindEmptyListETag finds the ETag for an empty list query on the GitHub API. -func FindEmptyListETag(access_token string) { +func FindEmptyListETag(accessToken string) { githubData := NewGitHubData("", nil) allowInvalidCerts := false lookup := New( - &access_token, + &accessToken, &allowInvalidCerts, githubData, nil, nil, nil, diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json index ccfed52d..cd5d4c53 100644 --- a/web/ui/package-lock.json +++ b/web/ui/package-lock.json @@ -1659,9 +1659,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001610", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", - "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", + "version": "1.0.30001611", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", + "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==", "funding": [ { "type": "opencollective", diff --git a/web/ui/react-app/src/components/approvals/service-info.tsx b/web/ui/react-app/src/components/approvals/service-info.tsx index 78d0bdbf..3e81c8eb 100644 --- a/web/ui/react-app/src/components/approvals/service-info.tsx +++ b/web/ui/react-app/src/components/approvals/service-info.tsx @@ -27,7 +27,7 @@ interface Props { service: ServiceSummaryType; updateAvailable: boolean; updateSkipped: boolean; - setShowUpdateInfo: () => void; + toggleShowUpdateInfo: () => void; } /** @@ -44,7 +44,7 @@ export const ServiceInfo: FC = ({ service, updateAvailable, updateSkipped, - setShowUpdateInfo, + toggleShowUpdateInfo, }) => { const { handleModal } = useContext(ModalContext); const delayedRender = useDelayedRender(250); @@ -110,6 +110,8 @@ export const ServiceInfo: FC = ({ ) : null; + const actionType = service.webhook ? "WebHooks" : "Commands"; + const actionReleaseButton = (service.webhook || service.command) && (!updateAvailable || updateSkipped) ? ( @@ -121,7 +123,7 @@ export const ServiceInfo: FC = ({ {updateSkipped ? "Approve this release" - : `Resend the ${service.webhook ? "WebHooks" : "Commands"}`} + : `Resend the ${actionType}`} } > @@ -161,7 +163,7 @@ export const ServiceInfo: FC = ({ variant="secondary" > {status.updateApproved && (service.webhook || service.command) - ? `${service.webhook ? "WebHooks" : "Commands"} already sent:` + ? `${actionType} already sent:` : "Update available:"} = ({ key="details" className="btn-flex btn-update-action" variant="primary" - onClick={() => setShowUpdateInfo()} + onClick={toggleShowUpdateInfo} > @@ -222,11 +224,9 @@ export const ServiceInfo: FC = ({ } >
- <> - Current version: - {deployedVersionIcon} - {skippedVersionIcon} - + Current version: + {deployedVersionIcon} + {skippedVersionIcon}
= ({ service, visible }) => ( - {service?.status && service.status?.latest_version_timestamp ? ( + {service?.status?.latest_version_timestamp ? ( <> Found{" "} {formatRelative( diff --git a/web/ui/react-app/src/components/approvals/service.tsx b/web/ui/react-app/src/components/approvals/service.tsx index 10beeafe..2dfb1108 100644 --- a/web/ui/react-app/src/components/approvals/service.tsx +++ b/web/ui/react-app/src/components/approvals/service.tsx @@ -21,10 +21,10 @@ interface Props { * @returns A component that displays the service */ const Service: FC = ({ service, editable = false }) => { - const [showUpdateInfo, setShowUpdateInfoMain] = useState(false); + const [showUpdateInfo, setShowUpdateInfo] = useState(false); - const setShowUpdateInfo = useCallback(() => { - setShowUpdateInfoMain((prevState) => !prevState); + const toggleShowUpdateInfo = useCallback(() => { + setShowUpdateInfo((prevState) => !prevState); }, []); const { handleModal } = useContext(ModalContext); @@ -113,7 +113,7 @@ const Service: FC = ({ service, editable = false }) => { /> diff --git a/web/ui/react-app/src/components/generic/boolean-with-default.tsx b/web/ui/react-app/src/components/generic/boolean-with-default.tsx index de9fd45f..29bf53f5 100644 --- a/web/ui/react-app/src/components/generic/boolean-with-default.tsx +++ b/web/ui/react-app/src/components/generic/boolean-with-default.tsx @@ -1,4 +1,4 @@ -import { Button, ButtonGroup, Col } from "react-bootstrap"; +import { Button, ButtonGroup, Col, FormLabel } from "react-bootstrap"; import { Controller, useFormContext } from "react-hook-form"; import { FC, memo, useEffect } from "react"; import { @@ -69,7 +69,7 @@ const BooleanWithDefault: FC = ({ style={{ display: "flex", alignItems: "center" }} > <> - {label && {label}} + {label && {label}} {tooltip && } diff --git a/web/ui/react-app/src/components/generic/form-label.tsx b/web/ui/react-app/src/components/generic/form-label.tsx index f7e836a2..15274489 100644 --- a/web/ui/react-app/src/components/generic/form-label.tsx +++ b/web/ui/react-app/src/components/generic/form-label.tsx @@ -27,24 +27,28 @@ const FormLabel: FC = ({ heading, required, small, -}: FormLabelProps) => ( - - {text} - {required && *} - {tooltip && } - -); +}: FormLabelProps) => { + const style = () => { + if (heading) + return { + fontSize: "1.25rem", + textDecorationLine: "underline", + paddingTop: "1.5rem", + }; + if (small) + return { + fontSize: "0.8rem", + }; + return undefined; + }; + + return ( + + {text} + {required && *} + {tooltip && } + + ); +}; export default FormLabel; diff --git a/web/ui/react-app/src/components/generic/form-select.tsx b/web/ui/react-app/src/components/generic/form-select.tsx index 13b676c7..5d097a58 100644 --- a/web/ui/react-app/src/components/generic/form-select.tsx +++ b/web/ui/react-app/src/components/generic/form-select.tsx @@ -80,9 +80,7 @@ const FormSelect: FC = ({ setValue(name, e.target.value) - } + onChange={onChange || ((e) => setValue(name, e.target.value))} > {options.map((opt) => (