Custom add and create flow polish
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import type {
|
||||
CommunicationMethodDetailEntry,
|
||||
ConflictManagementDetailEntry,
|
||||
DecisionApproachDetailEntry,
|
||||
MembershipMethodDetailEntry,
|
||||
} from "../../app/(app)/create/types";
|
||||
import {
|
||||
communicationPresetFor,
|
||||
conflictManagementPresetFor,
|
||||
decisionApproachPresetFor,
|
||||
membershipPresetFor,
|
||||
} from "./finalReviewChipPresets";
|
||||
|
||||
function stringArraysEqual(a: readonly string[], b: readonly string[]): boolean {
|
||||
if (a.length !== b.length) return false;
|
||||
return a.every((v, i) => v === b[i]);
|
||||
}
|
||||
|
||||
/** True when communication facet text matches {@link communicationPresetFor} for this card id. */
|
||||
export function communicationMethodFacetMatchesPreset(
|
||||
details: CommunicationMethodDetailEntry | undefined,
|
||||
cardId: string,
|
||||
): boolean {
|
||||
if (!details) return true;
|
||||
const p = communicationPresetFor(cardId);
|
||||
return (
|
||||
details.corePrinciple === p.corePrinciple &&
|
||||
details.logisticsAdmin === p.logisticsAdmin &&
|
||||
details.codeOfConduct === p.codeOfConduct
|
||||
);
|
||||
}
|
||||
|
||||
export function membershipMethodFacetMatchesPreset(
|
||||
details: MembershipMethodDetailEntry | undefined,
|
||||
cardId: string,
|
||||
): boolean {
|
||||
if (!details) return true;
|
||||
const p = membershipPresetFor(cardId);
|
||||
return (
|
||||
details.eligibility === p.eligibility &&
|
||||
details.joiningProcess === p.joiningProcess &&
|
||||
details.expectations === p.expectations
|
||||
);
|
||||
}
|
||||
|
||||
export function decisionApproachFacetMatchesPreset(
|
||||
details: DecisionApproachDetailEntry | undefined,
|
||||
cardId: string,
|
||||
): boolean {
|
||||
if (!details) return true;
|
||||
const p = decisionApproachPresetFor(cardId);
|
||||
return (
|
||||
details.corePrinciple === p.corePrinciple &&
|
||||
stringArraysEqual(details.applicableScope, p.applicableScope) &&
|
||||
stringArraysEqual(details.selectedApplicableScope, p.selectedApplicableScope) &&
|
||||
details.stepByStepInstructions === p.stepByStepInstructions &&
|
||||
details.consensusLevel === p.consensusLevel &&
|
||||
details.objectionsDeadlocks === p.objectionsDeadlocks
|
||||
);
|
||||
}
|
||||
|
||||
export function conflictManagementFacetMatchesPreset(
|
||||
details: ConflictManagementDetailEntry | undefined,
|
||||
cardId: string,
|
||||
): boolean {
|
||||
if (!details) return true;
|
||||
const p = conflictManagementPresetFor(cardId);
|
||||
return (
|
||||
details.corePrinciple === p.corePrinciple &&
|
||||
stringArraysEqual(details.applicableScope, p.applicableScope) &&
|
||||
stringArraysEqual(details.selectedApplicableScope, p.selectedApplicableScope) &&
|
||||
details.processProtocol === p.processProtocol &&
|
||||
details.restorationFallbacks === p.restorationFallbacks
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user