refactor(builder): remove dead per-page headCode field (D9)
PageData.headCode was never populated from anything but '' and never read anywhere -- the real, live concept is SiteDesign.headCode (set via the Code modal, wired into Preview/export in D8). Remove the dead field from the PageData interface and its ~7 hardcoded headCode: '' seeds/discards in PageContext.tsx (DEFAULT_PAGE, DEFAULT_HEADER, DEFAULT_FOOTER, the context default value, addPage, setPagesCraftState, replaceAllPages). Update the PageData literals in useWhpApi.save.test.ts to match the trimmed interface. Verified via grep that nothing reads page.headCode, and `npm run build` (strict tsc) is clean -- no live reader broke. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,10 +2,10 @@ import { describe, test, expect } from 'vitest';
|
|||||||
import { buildSavePayload } from './useWhpApi';
|
import { buildSavePayload } from './useWhpApi';
|
||||||
import { PageData } from '../types';
|
import { PageData } from '../types';
|
||||||
|
|
||||||
const pageA: PageData = { id: 'home', name: 'Home', slug: 'index', craftState: 'STORED_HOME', headCode: '' };
|
const pageA: PageData = { id: 'home', name: 'Home', slug: 'index', craftState: 'STORED_HOME' };
|
||||||
const pageB: PageData = { id: 'page_2', name: 'About', slug: 'about', craftState: 'STORED_ABOUT', headCode: '' };
|
const pageB: PageData = { id: 'page_2', name: 'About', slug: 'about', craftState: 'STORED_ABOUT' };
|
||||||
const headerPage: PageData = { id: '__header__', name: 'Header', slug: '__header__', craftState: 'STALE_HEADER', headCode: '' };
|
const headerPage: PageData = { id: '__header__', name: 'Header', slug: '__header__', craftState: 'STALE_HEADER' };
|
||||||
const footerPage: PageData = { id: '__footer__', name: 'Footer', slug: '__footer__', craftState: 'STALE_FOOTER', headCode: '' };
|
const footerPage: PageData = { id: '__footer__', name: 'Footer', slug: '__footer__', craftState: 'STALE_FOOTER' };
|
||||||
|
|
||||||
describe('buildSavePayload', () => {
|
describe('buildSavePayload', () => {
|
||||||
test('editing header: live serialize lands in header_craft_state, not in any page slot', () => {
|
test('editing header: live serialize lands in header_craft_state, not in any page slot', () => {
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ export const DEFAULT_HEADER_STATE = JSON.stringify({
|
|||||||
|
|
||||||
const PageContext = createContext<PageContextValue>({
|
const PageContext = createContext<PageContextValue>({
|
||||||
pages: [],
|
pages: [],
|
||||||
headerPage: { id: HEADER_ID, name: 'Header', slug: '__header__', craftState: null, headCode: '' },
|
headerPage: { id: HEADER_ID, name: 'Header', slug: '__header__', craftState: null },
|
||||||
footerPage: { id: FOOTER_ID, name: 'Footer', slug: '__footer__', craftState: null, headCode: '' },
|
footerPage: { id: FOOTER_ID, name: 'Footer', slug: '__footer__', craftState: null },
|
||||||
activePageId: 'home',
|
activePageId: 'home',
|
||||||
isEditingHeader: false,
|
isEditingHeader: false,
|
||||||
isEditingFooter: false,
|
isEditingFooter: false,
|
||||||
@@ -166,7 +166,6 @@ const DEFAULT_PAGE: PageData = {
|
|||||||
name: 'Home',
|
name: 'Home',
|
||||||
slug: 'index',
|
slug: 'index',
|
||||||
craftState: null,
|
craftState: null,
|
||||||
headCode: '',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const DEFAULT_HEADER: PageData = {
|
const DEFAULT_HEADER: PageData = {
|
||||||
@@ -174,7 +173,6 @@ const DEFAULT_HEADER: PageData = {
|
|||||||
name: 'Header',
|
name: 'Header',
|
||||||
slug: '__header__',
|
slug: '__header__',
|
||||||
craftState: DEFAULT_HEADER_STATE,
|
craftState: DEFAULT_HEADER_STATE,
|
||||||
headCode: '',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const DEFAULT_FOOTER: PageData = {
|
const DEFAULT_FOOTER: PageData = {
|
||||||
@@ -182,7 +180,6 @@ const DEFAULT_FOOTER: PageData = {
|
|||||||
name: 'Footer',
|
name: 'Footer',
|
||||||
slug: '__footer__',
|
slug: '__footer__',
|
||||||
craftState: null,
|
craftState: null,
|
||||||
headCode: '',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PageProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
|
export const PageProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
|
||||||
@@ -307,7 +304,6 @@ export const PageProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
|||||||
name,
|
name,
|
||||||
slug: uniqueSlug(requestedSlug, prev.map((p) => p.slug)),
|
slug: uniqueSlug(requestedSlug, prev.map((p) => p.slug)),
|
||||||
craftState: null,
|
craftState: null,
|
||||||
headCode: '',
|
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -380,7 +376,6 @@ export const PageProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
|||||||
// ALWAYS the landing page → slug 'index' → file index.html.
|
// ALWAYS the landing page → slug 'index' → file index.html.
|
||||||
slug: i === 0 ? 'index' : p.slug,
|
slug: i === 0 ? 'index' : p.slug,
|
||||||
craftState: p.craftState,
|
craftState: p.craftState,
|
||||||
headCode: '',
|
|
||||||
})));
|
})));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@@ -500,7 +495,6 @@ export const PageProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
|||||||
name: p.name,
|
name: p.name,
|
||||||
slug,
|
slug,
|
||||||
craftState: treeToState(p.tree),
|
craftState: treeToState(p.tree),
|
||||||
headCode: '',
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
setPages(built);
|
setPages(built);
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ export interface PageData {
|
|||||||
name: string;
|
name: string;
|
||||||
slug: string;
|
slug: string;
|
||||||
craftState: string | null;
|
craftState: string | null;
|
||||||
headCode: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AssetData {
|
export interface AssetData {
|
||||||
|
|||||||
Reference in New Issue
Block a user