@umituz/react-native-ai-generation-content 1.23.2 → 1.23.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-ai-generation-content",
3
- "version": "1.23.2",
3
+ "version": "1.23.4",
4
4
  "description": "Provider-agnostic AI generation orchestration for React Native with result preview components",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -49,6 +49,9 @@ export const CoupleFutureWizard: React.FC<CoupleFutureWizardProps> = ({
49
49
  });
50
50
 
51
51
  // Notify parent app when step changes
52
+ // NOTE: Do NOT include callbacks in dependencies - causes infinite loop!
53
+ // Parent app re-renders when onStepChange updates state, which recreates callbacks,
54
+ // which would retrigger this effect, creating infinite loop.
52
55
  useEffect(() => {
53
56
  if (flow.currentStep && callbacks?.onStepChange) {
54
57
  if (typeof __DEV__ !== "undefined" && __DEV__) {
@@ -60,7 +63,8 @@ export const CoupleFutureWizard: React.FC<CoupleFutureWizardProps> = ({
60
63
  }
61
64
  callbacks.onStepChange(flow.currentStep.id, flow.currentStep.type);
62
65
  }
63
- }, [flow.currentStep, flow.currentStepIndex, callbacks]);
66
+ // eslint-disable-next-line react-hooks/exhaustive-deps
67
+ }, [flow.currentStep, flow.currentStepIndex]);
64
68
 
65
69
  const handleScenarioPreviewContinue = useCallback(() => {
66
70
  if (typeof __DEV__ !== "undefined" && __DEV__) {
@@ -29,6 +29,7 @@ export const AIGenerateWizardFlow: React.FC<AIGenerateWizardFlowProps> = ({
29
29
  onBack: onBackProp,
30
30
  onSave,
31
31
  onShare,
32
+ onStepChange,
32
33
  t,
33
34
  }) => {
34
35
  const tokens = useAppDesignTokens();
@@ -74,7 +75,7 @@ export const AIGenerateWizardFlow: React.FC<AIGenerateWizardFlowProps> = ({
74
75
  handleBack,
75
76
  handleNext,
76
77
  handleGenerate,
77
- } = useAIGenerateWizardFlow({ featureType, onGenerate, onBack: onBackProp });
78
+ } = useAIGenerateWizardFlow({ featureType, onGenerate, onBack: onBackProp, onStepChange });
78
79
 
79
80
  switch (currentStep) {
80
81
  case AIGenerateStep.UPLOAD_1:
@@ -61,5 +61,6 @@ export interface AIGenerateWizardFlowProps {
61
61
  readonly onBack?: () => void;
62
62
  readonly onSave?: (uri: string) => Promise<void>;
63
63
  readonly onShare?: (uri: string) => Promise<void>;
64
+ readonly onStepChange?: (stepId: string) => void;
64
65
  readonly t: (key: string) => string;
65
66
  }
@@ -14,12 +14,14 @@ interface UseAIGenerateWizardFlowProps {
14
14
  featureType: string;
15
15
  onGenerate: (data: GenerationData) => Promise<string | null | void>;
16
16
  onBack?: () => void;
17
+ onStepChange?: (stepId: string) => void;
17
18
  }
18
19
 
19
20
  export function useAIGenerateWizardFlow({
20
21
  featureType,
21
22
  onGenerate,
22
23
  onBack: onBackProp,
24
+ onStepChange,
23
25
  }: UseAIGenerateWizardFlowProps) {
24
26
  const state = useAIGenerateState();
25
27
  const {
@@ -28,6 +30,22 @@ export function useAIGenerateWizardFlow({
28
30
  selectedDuration
29
31
  } = state;
30
32
 
33
+ // Notify parent app when step changes
34
+ // NOTE: Do NOT include onStepChange in dependencies - causes infinite loop!
35
+ // Parent app re-renders when callback updates state, recreating the callback,
36
+ // which would retrigger this effect in an infinite loop.
37
+ useEffect(() => {
38
+ if (onStepChange) {
39
+ if (typeof __DEV__ !== "undefined" && __DEV__) {
40
+ console.log("[AIGenerateWizardFlow] Step changed", {
41
+ currentStep,
42
+ });
43
+ }
44
+ onStepChange(currentStep);
45
+ }
46
+ // eslint-disable-next-line react-hooks/exhaustive-deps
47
+ }, [currentStep]);
48
+
31
49
  const imageCountRequired = useMemo(() => {
32
50
  if (!featureType || !hasAIFeature(featureType)) return 0;
33
51
  const config = getAIFeatureConfig(featureType as Parameters<typeof getAIFeatureConfig>[0]);
@@ -29,18 +29,11 @@ export type { AIGenerationHeroProps } from "./AIGenerationHero";
29
29
  export * from "./result";
30
30
  export * from "./photo-step";
31
31
  export * from "./modals/SettingsSheet";
32
- export * from "./selectors/AspectRatioSelector";
33
- export * from "./selectors/DurationSelector";
34
- export * from "./selectors/GridSelector";
35
- export * from "./selectors/StyleSelector";
36
- export * from "./selectors/factories";
37
- export * from "./selectors/types";
38
- export * from "./PromptInput";
32
+ export * from "./selectors";
39
33
  export * from "./image-picker";
40
34
  export * from "./buttons";
41
35
  export * from "./display";
42
36
  export * from "./headers";
43
37
  export * from "./PhotoUploadCard";
44
- export * from "./selectors";
45
38
  export * from "./prompts/ExamplePrompts";
46
39
  export * from "./moderation/ModerationSummary";