refactor(intake): extract non-integrated style detail state
This commit is contained in:
parent
68d16eaae3
commit
ce30eca2bb
@ -465,6 +465,11 @@ import {
|
||||
resolveQualityInspectionImageFieldKey,
|
||||
syncQualityInspectionRowsWithSkuItems,
|
||||
} from "./qualityInspectionHelpers";
|
||||
import {
|
||||
buildInstallationRevisionSignature,
|
||||
buildPackagingRevisionSignature,
|
||||
type StyleDetailForm,
|
||||
} from "./styleDetailState";
|
||||
import {
|
||||
MATERIAL_TYPE_OPTIONS,
|
||||
PLANNING_LAYOUT_AUDIENCE_OPTIONS,
|
||||
@ -870,27 +875,6 @@ type FieldDefinition = {
|
||||
auto?: boolean;
|
||||
};
|
||||
|
||||
type StyleDetailForm = {
|
||||
installMethod: string;
|
||||
installSteps: string;
|
||||
packageDetail: string;
|
||||
craftDetail: string;
|
||||
model3dFileName: string;
|
||||
model3dDataUrl: string;
|
||||
model3dNodeOffsets: PreviewNodeOffsetMap;
|
||||
model3dNodeRotations: PreviewNodeRotationMap;
|
||||
model3dNodeMaterialIds: PreviewNodeMaterialIdMap;
|
||||
model3dUvConfig: AssetVariantUvConfig | null;
|
||||
outerPackagingType: string;
|
||||
innerPackagingItems: NonIntegratedPackagingInnerItem[];
|
||||
packagingModel3dFileName: string;
|
||||
packagingModel3dDataUrl: string;
|
||||
packagingModel3dNodeOffsets: PreviewNodeOffsetMap;
|
||||
packagingModel3dNodeRotations: PreviewNodeRotationMap;
|
||||
packagingModel3dNodeMaterialIds: PreviewNodeMaterialIdMap;
|
||||
packagingModel3dUvConfig: AssetVariantUvConfig | null;
|
||||
};
|
||||
|
||||
type ReviewSheetFieldKey = Exclude<keyof NonIntegratedReviewSheet, "issues">;
|
||||
type ReviewIssueFieldKey = Exclude<
|
||||
keyof NonIntegratedReviewIssue,
|
||||
@ -1429,40 +1413,6 @@ const EMPTY_STYLE_DETAIL: StyleDetailForm = {
|
||||
packagingModel3dUvConfig: null,
|
||||
};
|
||||
|
||||
function buildInstallationRevisionSignature(
|
||||
styleDetails: Record<string, StyleDetailForm>,
|
||||
) {
|
||||
return Object.fromEntries(
|
||||
Object.entries(styleDetails).map(([styleKey, detail]) => [
|
||||
styleKey,
|
||||
{
|
||||
installMethod: detail.installMethod,
|
||||
installSteps: detail.installSteps,
|
||||
},
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
function buildPackagingRevisionSignature(
|
||||
styleDetails: Record<string, StyleDetailForm>,
|
||||
) {
|
||||
return Object.fromEntries(
|
||||
Object.entries(styleDetails).map(([styleKey, detail]) => [
|
||||
styleKey,
|
||||
{
|
||||
packageDetail: detail.packageDetail,
|
||||
craftDetail: detail.craftDetail,
|
||||
outerPackagingType: detail.outerPackagingType,
|
||||
innerPackagingItems: detail.innerPackagingItems,
|
||||
packagingModel3dFileName: detail.packagingModel3dFileName,
|
||||
packagingModel3dDataUrl: detail.packagingModel3dDataUrl,
|
||||
packagingModel3dNodeOffsets: detail.packagingModel3dNodeOffsets,
|
||||
packagingModel3dNodeRotations: detail.packagingModel3dNodeRotations,
|
||||
},
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
function createEmptySkuItem(): NonIntegratedSkuItem {
|
||||
return {
|
||||
id: buildNonIntegratedSkuId(),
|
||||
|
||||
@ -0,0 +1,64 @@
|
||||
import type { AssetVariantUvConfig } from "@/lib/asset-variant-render-config";
|
||||
import type {
|
||||
NonIntegratedPackagingInnerItem,
|
||||
} from "./nonIntegratedStorage";
|
||||
import type {
|
||||
PreviewNodeMaterialIdMap,
|
||||
PreviewNodeOffsetMap,
|
||||
PreviewNodeRotationMap,
|
||||
} from "./previewState";
|
||||
|
||||
export type StyleDetailForm = {
|
||||
installMethod: string;
|
||||
installSteps: string;
|
||||
packageDetail: string;
|
||||
craftDetail: string;
|
||||
model3dFileName: string;
|
||||
model3dDataUrl: string;
|
||||
model3dNodeOffsets: PreviewNodeOffsetMap;
|
||||
model3dNodeRotations: PreviewNodeRotationMap;
|
||||
model3dNodeMaterialIds: PreviewNodeMaterialIdMap;
|
||||
model3dUvConfig: AssetVariantUvConfig | null;
|
||||
outerPackagingType: string;
|
||||
innerPackagingItems: NonIntegratedPackagingInnerItem[];
|
||||
packagingModel3dFileName: string;
|
||||
packagingModel3dDataUrl: string;
|
||||
packagingModel3dNodeOffsets: PreviewNodeOffsetMap;
|
||||
packagingModel3dNodeRotations: PreviewNodeRotationMap;
|
||||
packagingModel3dNodeMaterialIds: PreviewNodeMaterialIdMap;
|
||||
packagingModel3dUvConfig: AssetVariantUvConfig | null;
|
||||
};
|
||||
|
||||
export function buildInstallationRevisionSignature(
|
||||
styleDetails: Record<string, StyleDetailForm>,
|
||||
) {
|
||||
return Object.fromEntries(
|
||||
Object.entries(styleDetails).map(([styleKey, detail]) => [
|
||||
styleKey,
|
||||
{
|
||||
installMethod: detail.installMethod,
|
||||
installSteps: detail.installSteps,
|
||||
},
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
export function buildPackagingRevisionSignature(
|
||||
styleDetails: Record<string, StyleDetailForm>,
|
||||
) {
|
||||
return Object.fromEntries(
|
||||
Object.entries(styleDetails).map(([styleKey, detail]) => [
|
||||
styleKey,
|
||||
{
|
||||
packageDetail: detail.packageDetail,
|
||||
craftDetail: detail.craftDetail,
|
||||
outerPackagingType: detail.outerPackagingType,
|
||||
innerPackagingItems: detail.innerPackagingItems,
|
||||
packagingModel3dFileName: detail.packagingModel3dFileName,
|
||||
packagingModel3dDataUrl: detail.packagingModel3dDataUrl,
|
||||
packagingModel3dNodeOffsets: detail.packagingModel3dNodeOffsets,
|
||||
packagingModel3dNodeRotations: detail.packagingModel3dNodeRotations,
|
||||
},
|
||||
]),
|
||||
);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user