From 8be9fd791217dee51fccd331a7f4c50764972cb8 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Tue, 3 Mar 2026 13:11:46 -0800 Subject: [PATCH] Rename `rerenderModal` to `renderModal` --- src/client/components/modal.tsx | 9 ++++----- src/client/modals/DeleteApp.tsx | 8 ++++---- src/client/modals/NewApp.tsx | 14 +++++++------- src/client/modals/RenameApp.tsx | 12 ++++++------ 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/client/components/modal.tsx b/src/client/components/modal.tsx index f2efba2..fb5c833 100644 --- a/src/client/components/modal.tsx +++ b/src/client/components/modal.tsx @@ -6,9 +6,10 @@ import { theme } from '../themes' let modalTitle: string | null = null let modalContent: (() => Child) | null = null +const root = document.getElementById('modal')! + const renderModal = () => { - const root = document.getElementById('modal') - if (root) render(, root) + render(, root) } export const openModal = (title: string, content: () => Child) => { @@ -26,9 +27,7 @@ export const closeModal = () => { renderModal() } -export const rerenderModal = () => { - renderModal() -} +export { renderModal } // ESC key handler document.addEventListener('keydown', (e) => { diff --git a/src/client/modals/DeleteApp.tsx b/src/client/modals/DeleteApp.tsx index d07de9f..218b6c7 100644 --- a/src/client/modals/DeleteApp.tsx +++ b/src/client/modals/DeleteApp.tsx @@ -1,5 +1,5 @@ import type { App } from '../../shared/types' -import { closeModal, openModal, rerenderModal } from '../components/modal' +import { closeModal, openModal, renderModal } from '../components/modal' import { navigate } from '../router' import { selectedApp } from '../state' import { Button, Form, FormActions, FormError, FormField, FormInput, FormLabel } from '../styles' @@ -17,13 +17,13 @@ async function deleteApp(input: HTMLInputElement) { if (value !== expected) { deleteAppError = `Type "${expected}" to confirm` - rerenderModal() + renderModal() return } deleteAppDeleting = true deleteAppError = '' - rerenderModal() + renderModal() try { const res = await fetch(`/api/sync/apps/${deleteAppTarget.name}`, { @@ -41,7 +41,7 @@ async function deleteApp(input: HTMLInputElement) { } catch (err) { deleteAppError = err instanceof Error ? err.message : 'Failed to delete app' deleteAppDeleting = false - rerenderModal() + renderModal() } } diff --git a/src/client/modals/NewApp.tsx b/src/client/modals/NewApp.tsx index 94f51d5..e48e654 100644 --- a/src/client/modals/NewApp.tsx +++ b/src/client/modals/NewApp.tsx @@ -1,4 +1,4 @@ -import { closeModal, openModal, rerenderModal } from '../components/modal' +import { closeModal, openModal, renderModal } from '../components/modal' import { navigate } from '../router' import { apps } from '../state' import { Button, Form, FormActions, FormCheckbox, FormCheckboxField, FormCheckboxLabel, FormError, FormField, FormInput, FormLabel, FormSelect } from '../styles' @@ -16,25 +16,25 @@ async function createNewApp() { if (!name) { newAppError = 'App name is required' - rerenderModal() + renderModal() return } if (!/^[a-z][a-z0-9-]*$/.test(name)) { newAppError = 'Name must start with a letter and contain only lowercase letters, numbers, and hyphens' - rerenderModal() + renderModal() return } if (apps.some(a => a.name === name)) { newAppError = 'An app with this name already exists' - rerenderModal() + renderModal() return } newAppCreating = true newAppError = '' - rerenderModal() + renderModal() try { const res = await fetch('/api/apps', { @@ -55,7 +55,7 @@ async function createNewApp() { } catch (err) { newAppError = err instanceof Error ? err.message : 'Failed to create app' newAppCreating = false - rerenderModal() + renderModal() } } @@ -105,7 +105,7 @@ export function openNewAppModal() { checked={newAppTool} onChange={(e: Event) => { newAppTool = (e.target as HTMLInputElement).checked - rerenderModal() + renderModal() }} /> Tool diff --git a/src/client/modals/RenameApp.tsx b/src/client/modals/RenameApp.tsx index 53c0101..3e8c2ca 100644 --- a/src/client/modals/RenameApp.tsx +++ b/src/client/modals/RenameApp.tsx @@ -1,5 +1,5 @@ import type { App } from '../../shared/types' -import { closeModal, openModal, rerenderModal } from '../components/modal' +import { closeModal, openModal, renderModal } from '../components/modal' import { navigate } from '../router' import { apps } from '../state' import { Button, Form, FormActions, FormError, FormField, FormInput, FormLabel } from '../styles' @@ -15,13 +15,13 @@ async function doRenameApp(input: HTMLInputElement) { if (!newName) { renameAppError = 'App name is required' - rerenderModal() + renderModal() return } if (!/^[a-z][a-z0-9-]*$/.test(newName)) { renameAppError = 'Name must start with a letter and contain only lowercase letters, numbers, and hyphens' - rerenderModal() + renderModal() return } @@ -32,13 +32,13 @@ async function doRenameApp(input: HTMLInputElement) { if (apps.some(a => a.name === newName)) { renameAppError = 'An app with this name already exists' - rerenderModal() + renderModal() return } renameAppRenaming = true renameAppError = '' - rerenderModal() + renderModal() try { const res = await fetch(`/api/apps/${renameAppTarget.name}/rename`, { @@ -65,7 +65,7 @@ async function doRenameApp(input: HTMLInputElement) { } catch (err) { renameAppError = err instanceof Error ? err.message : 'Failed to rename app' renameAppRenaming = false - rerenderModal() + renderModal() } }