@umituz/react-native-ai-generation-content 1.83.10 → 1.83.11
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 +1 -1
- package/src/domain/constants/queue-status.constants.ts +0 -2
- package/src/domain/entities/flow-config-data.types.ts +0 -9
- package/src/domain/entities/flow-config.types.ts +2 -6
- package/src/domain/entities/flow-configuration.types.ts +1 -8
- package/src/domain/interfaces/app-services.interface.ts +2 -2
- package/src/domain/interfaces/index.ts +0 -8
- package/src/domains/background/infrastructure/services/job-poller.service.ts +0 -1
- package/src/domains/background/infrastructure/utils/result-validator.util.ts +0 -1
- package/src/domains/background/infrastructure/utils/status-checker.util.ts +0 -1
- package/src/domains/background/infrastructure/utils/status-extraction-helpers.ts +1 -1
- package/src/domains/content-moderation/infrastructure/utils/content-security.util.ts +1 -1
- package/src/domains/creations/domain/constants/creation-fields.constants.ts +1 -10
- package/src/domains/creations/domain/constants/creation-status.constants.ts +0 -20
- package/src/domains/creations/domain/constants/creation-validation.constants.ts +0 -12
- package/src/domains/creations/domain/constants/index.ts +3 -15
- package/src/domains/creations/domain/entities/index.ts +1 -1
- package/src/domains/creations/infrastructure/repositories/creation-update.operations.ts +0 -2
- package/src/domains/creations/infrastructure/repositories/creations-operations.ts +1 -1
- package/src/domains/creations/presentation/components/CreationCard.tsx +3 -3
- package/src/domains/creations/presentation/components/CreationImagePreview.tsx +1 -1
- package/src/domains/creations/presentation/components/CreationVideoPreview.tsx +1 -1
- package/src/domains/creations/presentation/components/CreationsFilterBar.tsx +0 -1
- package/src/domains/creations/presentation/components/GalleryEmptyStates.tsx +4 -4
- package/src/domains/creations/presentation/components/GalleryHeader.tsx +3 -1
- package/src/domains/creations/presentation/components/GalleryScreenHeader.tsx +1 -1
- package/src/domains/creations/presentation/components/index.ts +0 -23
- package/src/domains/creations/presentation/hooks/creation-validators.ts +4 -4
- package/src/domains/creations/presentation/hooks/filterHelpers.ts +5 -5
- package/src/domains/creations/presentation/hooks/useFilter.ts +2 -2
- package/src/domains/creations/presentation/hooks/useGalleryCallbacks.ts +1 -1
- package/src/domains/creations/presentation/hooks/useGalleryState.ts +2 -2
- package/src/domains/creations/presentation/screens/CreationsGalleryScreen.tsx +0 -1
- package/src/domains/creations/presentation/utils/filter-buttons.util.ts +2 -2
- package/src/domains/creations/presentation-exports.ts +5 -3
- package/src/domains/face-detection/presentation/components/FaceValidationStatus.tsx +1 -1
- package/src/domains/generation/infrastructure/executors/text-to-image-executor.helpers.ts +1 -1
- package/src/domains/generation/wizard/infrastructure/strategies/image-generation.strategy.ts +0 -2
- package/src/domains/generation/wizard/infrastructure/strategies/image-generation.types.ts +0 -4
- package/src/domains/generation/wizard/infrastructure/strategies/index.ts +0 -1
- package/src/domains/generation/wizard/infrastructure/strategies/shared/unified-prompt-builder.ts +1 -1
- package/src/domains/generation/wizard/infrastructure/strategies/video-generation.strategy.ts +0 -1
- package/src/domains/generation/wizard/infrastructure/strategies/video-generation.types.ts +2 -6
- package/src/domains/generation/wizard/infrastructure/strategies/wizard-strategy.constants.ts +0 -7
- package/src/domains/generation/wizard/infrastructure/strategies/wizard-strategy.factory.ts +1 -3
- package/src/domains/generation/wizard/infrastructure/utils/creation-persistence.util.ts +0 -5
- package/src/domains/generation/wizard/infrastructure/utils/index.ts +0 -3
- package/src/domains/generation/wizard/infrastructure/utils/primitive-extractors.ts +3 -3
- package/src/domains/generation/wizard/presentation/components/IndeterminateProgressBar.tsx +1 -1
- package/src/domains/generation/wizard/presentation/components/WizardContinueButton.tsx +1 -1
- package/src/domains/generation/wizard/presentation/components/WizardFlowContent.tsx +1 -1
- package/src/domains/generation/wizard/presentation/components/WizardStepRenderer.tsx +0 -2
- package/src/domains/generation/wizard/presentation/components/WizardStepRenderer.utils.ts +0 -7
- package/src/domains/generation/wizard/presentation/components/index.ts +0 -2
- package/src/domains/generation/wizard/presentation/components/step-renderers/renderPhotoUploadStep.tsx +1 -1
- package/src/domains/generation/wizard/presentation/components/step-renderers/renderPreviewStep.tsx +1 -1
- package/src/domains/generation/wizard/presentation/components/step-renderers/renderSelectionStep.tsx +1 -1
- package/src/domains/generation/wizard/presentation/components/step-renderers/renderTextInputStep.tsx +1 -1
- package/src/domains/generation/wizard/presentation/hooks/generationStateMachine.ts +2 -2
- package/src/domains/generation/wizard/presentation/hooks/useGenerationPhase.ts +1 -1
- package/src/domains/generation/wizard/presentation/hooks/usePhotoBlockingGeneration.ts +2 -2
- package/src/domains/generation/wizard/presentation/hooks/useWizardFlowHandlers.ts +1 -1
- package/src/domains/generation/wizard/presentation/screens/GeneratingScreen.tsx +1 -1
- package/src/domains/generation/wizard/presentation/screens/GenericPhotoUploadScreen.tsx +3 -3
- package/src/domains/generation/wizard/presentation/screens/SelectionScreen.tsx +0 -6
- package/src/domains/generation/wizard/presentation/screens/TextInputScreen.tsx +5 -3
- package/src/domains/generation/wizard/presentation/screens/index.ts +0 -13
- package/src/domains/generation/wizard/presentation/utilities/validateScenario.ts +0 -6
- package/src/domains/image-to-video/presentation/hooks/image-to-video-feature.types.ts +0 -8
- package/src/domains/image-to-video/presentation/index.ts +0 -4
- package/src/domains/result-preview/presentation/components/StarRatingPicker.tsx +1 -1
- package/src/domains/result-preview/presentation/types/result-preview.types.ts +0 -5
- package/src/domains/scenarios/configs/index.ts +1 -6
- package/src/domains/scenarios/configs/wizard-step-factories.ts +1 -1
- package/src/domains/scenarios/infrastructure/scenario-registry.ts +0 -9
- package/src/domains/scenarios/presentation/components/ScenarioContinueButton.tsx +1 -1
- package/src/domains/scenarios/presentation/hooks/useHierarchicalScenarios.ts +2 -2
- package/src/domains/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +1 -1
- package/src/domains/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +2 -2
- package/src/domains/shared/presentation/components/AutoSkipPreview.tsx +1 -1
- package/src/domains/shared/presentation/components/index.ts +0 -1
- package/src/domains/shared/presentation/utils/index.ts +0 -3
- package/src/domains/shared/presentation/utils/wizard-flow.utils.ts +2 -2
- package/src/domains/text-to-image/presentation/index.ts +0 -2
- package/src/domains/text-to-video/domain/types/component.types.ts +0 -6
- package/src/domains/text-to-video/domain/types/index.ts +0 -4
- package/src/domains/text-to-video/presentation/components/FrameSelector.tsx +97 -52
- package/src/domains/text-to-video/presentation/index.ts +0 -2
- package/src/infrastructure/config/index.ts +0 -2
- package/src/infrastructure/constants/index.ts +0 -6
- package/src/infrastructure/constants/polling.constants.ts +0 -21
- package/src/infrastructure/constants/validation.constants.ts +0 -30
- package/src/infrastructure/utils/error-classification.ts +1 -1
- package/src/infrastructure/utils/error-factory.ts +2 -2
- package/src/infrastructure/utils/index.ts +0 -9
- package/src/infrastructure/utils/message-extractor.ts +1 -20
- package/src/infrastructure/utils/progress.utils.ts +0 -37
- package/src/infrastructure/utils/provider-validator.util.ts +1 -1
- package/src/infrastructure/utils/url-extractor/index.ts +0 -5
- package/src/infrastructure/utils/url-extractor.util.ts +0 -11
- package/src/infrastructure/utils/video-helpers.ts +1 -1
- package/src/infrastructure/validation/ai-validator.ts +0 -28
- package/src/infrastructure/validation/entity-validator.ts +0 -34
- package/src/infrastructure/validation/input-validator.ts +2 -5
- package/src/infrastructure/validation/sanitizer.ts +0 -17
- package/src/presentation/components/AIGenerationConfig.tsx +3 -1
- package/src/presentation/components/GenerationProgressContent.styles.ts +0 -2
- package/src/presentation/components/PhotoUploadCard/PhotoUploadCard.tsx +0 -1
- package/src/presentation/components/ProgressCloseButton.tsx +1 -1
- package/src/presentation/components/ProgressDismissButton.tsx +1 -1
- package/src/presentation/components/ProgressHeader.tsx +1 -1
- package/src/presentation/components/ProgressHint.tsx +1 -1
- package/src/presentation/components/display/AIGenerationResult.tsx +6 -4
- package/src/presentation/components/display/index.ts +0 -1
- package/src/presentation/components/moderation/ModerationSummary.tsx +2 -2
- package/src/presentation/components/prompts/ExamplePrompts.tsx +2 -2
- package/src/presentation/components/result/ResultImageCard.tsx +39 -21
- package/src/presentation/components/result/ResultStoryCard.tsx +38 -15
- package/src/presentation/components/result/button-style.utils.ts +1 -1
- package/src/presentation/components/selectors/GridSelector.tsx +2 -2
- package/src/presentation/components/selectors/factories/aspect-ratio.factory.ts +0 -2
- package/src/presentation/components/selectors/factories/duration.factory.ts +0 -2
- package/src/presentation/components/selectors/factories/style.factory.ts +1 -1
- package/src/presentation/components/shared/ModelSelector.tsx +3 -1
- package/src/presentation/hooks/ai-feature-callbacks-auth.hooks.ts +2 -2
- package/src/presentation/hooks/ai-feature-callbacks-cost.hooks.ts +2 -2
- package/src/presentation/hooks/ai-feature-callbacks-execution.hooks.ts +2 -2
- package/src/presentation/hooks/generation/index.ts +0 -5
- package/src/presentation/hooks/generation/moderation-handler.ts +1 -1
- package/src/presentation/hooks/generation/types.ts +0 -12
- package/src/presentation/hooks/index.ts +0 -4
- package/src/presentation/hooks/useProgressDismiss.ts +1 -1
- package/src/presentation/layouts/types/layout-props.ts +1 -1
- package/src/domain/constants/index.ts +0 -2
- package/src/domain/entities/feature-flow-config.types.ts +0 -17
- package/src/domain/entities/scenario-step-config.types.ts +0 -32
- package/src/domain/entities/step-config.types.ts +0 -18
- package/src/domain/entities/step-definition.types.ts +0 -50
- package/src/domain/entities/step-input-config.types.ts +0 -36
- package/src/domain/entities/step-upload-config.types.ts +0 -17
- package/src/domains/background/domain/entities/index.ts +0 -1
- package/src/domains/background/domain/interfaces/index.ts +0 -1
- package/src/domains/content-moderation/infrastructure/utils/validators.util.ts +0 -51
- package/src/domains/creations/domain/constants/creation-errors.constants.ts +0 -27
- package/src/domains/creations/domain/constants/creation-query.constants.ts +0 -37
- package/src/domains/creations/domain/constants/creation-types.constants.ts +0 -45
- package/src/domains/creations/presentation/components/CreationImageViewer.tsx +0 -43
- package/src/domains/creations/presentation/components/CreationRating.tsx +0 -69
- package/src/domains/creations/presentation/components/CreationsGrid.tsx +0 -130
- package/src/domains/creations/presentation/components/FilterSheets.tsx +0 -63
- package/src/domains/creations/presentation/hooks/index.ts +0 -24
- package/src/domains/creations/presentation/hooks/useCreationRating.ts +0 -68
- package/src/domains/creations/presentation/screens/index.ts +0 -5
- package/src/domains/generation/infrastructure/flow/scenario-configs.ts +0 -54
- package/src/domains/generation/infrastructure/flow/step-builders.ts +0 -133
- package/src/domains/generation/wizard/infrastructure/strategies/video-generation.utils.ts +0 -42
- package/src/domains/generation/wizard/presentation/components/WizardHeader.tsx +0 -96
- package/src/domains/generation/wizard/presentation/components/step-renderers/index.ts +0 -8
- package/src/domains/generation/wizard/presentation/components/step-renderers/renderGeneratingStep.tsx +0 -24
- package/src/domains/generation/wizard/presentation/components/step-renderers/renderResultStep.tsx +0 -69
- package/src/domains/generation/wizard/presentation/utilities/index.ts +0 -1
- package/src/domains/prompts/infrastructure/services/base/index.ts +0 -6
- package/src/domains/prompts/infrastructure/services/base/prompt-service.base.ts +0 -112
- package/src/domains/result-preview/index.ts +0 -37
- package/src/domains/result-preview/presentation/components/GenerationErrorScreen.tsx +0 -109
- package/src/domains/result-preview/presentation/components/index.ts +0 -16
- package/src/domains/result-preview/presentation/hooks/index.ts +0 -5
- package/src/domains/result-preview/presentation/types/index.ts +0 -16
- package/src/domains/result-preview/presentation/types/result-data.types.ts +0 -35
- package/src/domains/text-to-image/presentation/screens/TextToImageWizardFlow.types.ts +0 -27
- package/src/domains/text-to-video/domain/types/action-component.types.ts +0 -15
- package/src/domains/text-to-video/domain/types/selector-component.types.ts +0 -31
- package/src/infrastructure/constants/content.constants.ts +0 -8
- package/src/infrastructure/constants/storage.constants.ts +0 -27
- package/src/infrastructure/http/api-client.types.ts +0 -17
- package/src/infrastructure/http/http-client-methods.ts +0 -73
- package/src/infrastructure/http/http-client.util.ts +0 -12
- package/src/infrastructure/http/http-fetch-handler.ts +0 -63
- package/src/infrastructure/http/http-methods.constants.ts +0 -23
- package/src/infrastructure/http/http-request-executor.ts +0 -49
- package/src/infrastructure/http/http-response-parser.ts +0 -65
- package/src/infrastructure/http/index.ts +0 -16
- package/src/infrastructure/http/query-string.util.ts +0 -40
- package/src/infrastructure/http/timeout.util.ts +0 -26
- package/src/infrastructure/logging/debug.util.ts +0 -51
- package/src/infrastructure/logging/index.ts +0 -6
- package/src/infrastructure/utils/content-validators.ts +0 -92
- package/src/infrastructure/utils/domain-guards.ts +0 -23
- package/src/infrastructure/utils/error-classifiers.ts +0 -23
- package/src/infrastructure/utils/error-handlers.ts +0 -53
- package/src/infrastructure/utils/error-retry.ts +0 -44
- package/src/infrastructure/utils/error-types.ts +0 -23
- package/src/infrastructure/utils/general-validators.ts +0 -64
- package/src/infrastructure/utils/id-validators.ts +0 -39
- package/src/infrastructure/utils/primitive-guards.ts +0 -66
- package/src/infrastructure/utils/structure-guards.ts +0 -75
- package/src/infrastructure/utils/type-guards.util.ts +0 -26
- package/src/infrastructure/utils/validation-types.ts +0 -8
- package/src/infrastructure/utils/validation.util.ts +0 -18
- package/src/shared/utils/index.ts +0 -6
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WizardHeader Component
|
|
3
|
-
* Header with back button on left, action button on right
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import React from "react";
|
|
7
|
-
import { View, TouchableOpacity, StyleSheet } from "react-native";
|
|
8
|
-
import {
|
|
9
|
-
AtomicText,
|
|
10
|
-
AtomicIcon,
|
|
11
|
-
useAppDesignTokens,
|
|
12
|
-
} from "@umituz/react-native-design-system";
|
|
13
|
-
|
|
14
|
-
export interface WizardHeaderProps {
|
|
15
|
-
readonly onBack: () => void;
|
|
16
|
-
readonly onAction?: () => void;
|
|
17
|
-
readonly backLabel?: string;
|
|
18
|
-
readonly actionLabel?: string;
|
|
19
|
-
readonly isActionDisabled?: boolean;
|
|
20
|
-
readonly showAction?: boolean;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const WizardHeader: React.FC<WizardHeaderProps> = ({
|
|
24
|
-
onBack,
|
|
25
|
-
onAction,
|
|
26
|
-
backLabel,
|
|
27
|
-
actionLabel,
|
|
28
|
-
isActionDisabled = false,
|
|
29
|
-
showAction = true,
|
|
30
|
-
}) => {
|
|
31
|
-
const tokens = useAppDesignTokens();
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<View style={[styles.container, { paddingHorizontal: tokens.spacing.md }]}>
|
|
35
|
-
<TouchableOpacity onPress={onBack} style={styles.backButton}>
|
|
36
|
-
<AtomicIcon name="chevron-left" size="md" color="textPrimary" />
|
|
37
|
-
{backLabel ? (
|
|
38
|
-
<AtomicText type="bodyMedium" color="textPrimary">
|
|
39
|
-
{backLabel}
|
|
40
|
-
</AtomicText>
|
|
41
|
-
) : null}
|
|
42
|
-
</TouchableOpacity>
|
|
43
|
-
|
|
44
|
-
{showAction && actionLabel ? (
|
|
45
|
-
<TouchableOpacity
|
|
46
|
-
onPress={onAction}
|
|
47
|
-
disabled={isActionDisabled}
|
|
48
|
-
style={[
|
|
49
|
-
styles.actionButton,
|
|
50
|
-
{
|
|
51
|
-
backgroundColor: isActionDisabled
|
|
52
|
-
? tokens.colors.surfaceSecondary
|
|
53
|
-
: tokens.colors.primary,
|
|
54
|
-
borderRadius: tokens.radius.md,
|
|
55
|
-
},
|
|
56
|
-
]}
|
|
57
|
-
>
|
|
58
|
-
<AtomicText
|
|
59
|
-
type="labelLarge"
|
|
60
|
-
style={{
|
|
61
|
-
color: isActionDisabled
|
|
62
|
-
? tokens.colors.textSecondary
|
|
63
|
-
: tokens.colors.textInverse,
|
|
64
|
-
fontWeight: "600",
|
|
65
|
-
}}
|
|
66
|
-
>
|
|
67
|
-
{actionLabel}
|
|
68
|
-
</AtomicText>
|
|
69
|
-
</TouchableOpacity>
|
|
70
|
-
) : (
|
|
71
|
-
<View style={styles.placeholder} />
|
|
72
|
-
)}
|
|
73
|
-
</View>
|
|
74
|
-
);
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
const styles = StyleSheet.create({
|
|
78
|
-
container: {
|
|
79
|
-
flexDirection: "row",
|
|
80
|
-
justifyContent: "space-between",
|
|
81
|
-
alignItems: "center",
|
|
82
|
-
paddingVertical: 12,
|
|
83
|
-
},
|
|
84
|
-
backButton: {
|
|
85
|
-
flexDirection: "row",
|
|
86
|
-
alignItems: "center",
|
|
87
|
-
gap: 4,
|
|
88
|
-
},
|
|
89
|
-
actionButton: {
|
|
90
|
-
paddingHorizontal: 16,
|
|
91
|
-
paddingVertical: 8,
|
|
92
|
-
},
|
|
93
|
-
placeholder: {
|
|
94
|
-
width: 80,
|
|
95
|
-
},
|
|
96
|
-
});
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Step Renderers
|
|
3
|
-
* Separated renderer functions for each wizard step type
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export { renderPreviewStep, type PreviewStepProps } from "./renderPreviewStep";
|
|
7
|
-
export { renderGeneratingStep, type GeneratingStepProps } from "./renderGeneratingStep";
|
|
8
|
-
export { renderResultStep, type ResultStepProps } from "./renderResultStep";
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generating Step Renderer
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import React from "react";
|
|
6
|
-
import { GeneratingScreen } from "../../screens/GeneratingScreen";
|
|
7
|
-
import type { WizardScenarioData } from "../../hooks/useWizardGeneration";
|
|
8
|
-
|
|
9
|
-
export interface GeneratingStepProps {
|
|
10
|
-
readonly progress: number;
|
|
11
|
-
readonly scenario: WizardScenarioData | undefined;
|
|
12
|
-
readonly t: (key: string) => string;
|
|
13
|
-
readonly renderGenerating?: (progress: number) => React.ReactElement | null;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function renderGeneratingStep({
|
|
17
|
-
progress,
|
|
18
|
-
scenario,
|
|
19
|
-
t,
|
|
20
|
-
renderGenerating,
|
|
21
|
-
}: GeneratingStepProps): React.ReactElement | null {
|
|
22
|
-
if (renderGenerating) return renderGenerating(progress);
|
|
23
|
-
return <GeneratingScreen progress={progress} scenario={scenario} t={t} />;
|
|
24
|
-
}
|
package/src/domains/generation/wizard/presentation/components/step-renderers/renderResultStep.tsx
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Result Step Renderer
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import React from "react";
|
|
6
|
-
import { extractMediaUrl, getMediaTypeFromUrl } from "@umituz/react-native-design-system";
|
|
7
|
-
import { ResultPreviewScreen } from "../../../../../result-preview/presentation/components/ResultPreviewScreen";
|
|
8
|
-
|
|
9
|
-
export interface ResultStepProps {
|
|
10
|
-
readonly generationResult: unknown;
|
|
11
|
-
readonly isSaving: boolean;
|
|
12
|
-
readonly isSharing: boolean;
|
|
13
|
-
readonly showRating: boolean;
|
|
14
|
-
readonly onDownload: () => void;
|
|
15
|
-
readonly onShare: () => void;
|
|
16
|
-
readonly onRate?: () => void;
|
|
17
|
-
readonly onTryAgain?: () => void;
|
|
18
|
-
readonly onBack: () => void;
|
|
19
|
-
readonly t: (key: string) => string;
|
|
20
|
-
readonly renderResult?: (result: unknown) => React.ReactElement | null;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function renderResultStep({
|
|
24
|
-
generationResult,
|
|
25
|
-
isSaving,
|
|
26
|
-
isSharing,
|
|
27
|
-
showRating,
|
|
28
|
-
onDownload,
|
|
29
|
-
onShare,
|
|
30
|
-
onRate,
|
|
31
|
-
onTryAgain,
|
|
32
|
-
onBack,
|
|
33
|
-
t,
|
|
34
|
-
renderResult,
|
|
35
|
-
}: ResultStepProps): React.ReactElement | null {
|
|
36
|
-
if (renderResult) return renderResult(generationResult);
|
|
37
|
-
|
|
38
|
-
const media = extractMediaUrl(generationResult);
|
|
39
|
-
if (!media) return null;
|
|
40
|
-
|
|
41
|
-
const isVideo = media.isVideo || getMediaTypeFromUrl(media.url) === "video";
|
|
42
|
-
const handleTryAgain = onTryAgain ?? onBack;
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<ResultPreviewScreen
|
|
46
|
-
imageUrl={isVideo ? undefined : media.url}
|
|
47
|
-
videoUrl={isVideo ? media.url : undefined}
|
|
48
|
-
isSaving={isSaving}
|
|
49
|
-
isSharing={isSharing}
|
|
50
|
-
onDownload={onDownload}
|
|
51
|
-
onShare={onShare}
|
|
52
|
-
onRate={onRate}
|
|
53
|
-
onTryAgain={handleTryAgain}
|
|
54
|
-
onNavigateBack={handleTryAgain}
|
|
55
|
-
hideLabel
|
|
56
|
-
iconOnly
|
|
57
|
-
showTryAgain
|
|
58
|
-
showRating={showRating}
|
|
59
|
-
translations={{
|
|
60
|
-
title: t("generation.result.title"),
|
|
61
|
-
saveButton: t("generation.result.save"),
|
|
62
|
-
saving: t("generation.result.saving"),
|
|
63
|
-
shareButton: t("generation.result.share"),
|
|
64
|
-
sharing: t("generation.result.sharing"),
|
|
65
|
-
tryAnother: t("generation.result.tryAnother"),
|
|
66
|
-
}}
|
|
67
|
-
/>
|
|
68
|
-
);
|
|
69
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { validateScenario, type ScenarioValidationResult } from "./validateScenario";
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base Prompt Service
|
|
3
|
-
* Abstract class for AI prompt generation services
|
|
4
|
-
* Eliminates code duplication across service implementations
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { AIPromptTemplate } from '../../../domain/entities/AIPromptTemplate';
|
|
8
|
-
import type { AIPromptResult, AIPromptCategory } from '../../../domain/entities/types';
|
|
9
|
-
import type { AIPromptSafety } from '../../../domain/entities/value-objects';
|
|
10
|
-
import { createAIPromptTemplate } from '../../../domain/entities/AIPromptTemplate';
|
|
11
|
-
import { PromptGenerationService } from '../PromptGenerationService';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Default safety configuration for all AI prompt templates
|
|
15
|
-
*/
|
|
16
|
-
export const DEFAULT_PROMPT_SAFETY: AIPromptSafety = {
|
|
17
|
-
contentFilter: true,
|
|
18
|
-
adultContentFilter: true,
|
|
19
|
-
violenceFilter: true,
|
|
20
|
-
hateSpeechFilter: true,
|
|
21
|
-
copyrightFilter: true,
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Template creation parameters
|
|
26
|
-
*/
|
|
27
|
-
export interface TemplateParams {
|
|
28
|
-
id: string;
|
|
29
|
-
name: string;
|
|
30
|
-
description: string;
|
|
31
|
-
category: AIPromptCategory;
|
|
32
|
-
template: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Base class for AI prompt generation services
|
|
37
|
-
* Provides common functionality for template generation
|
|
38
|
-
*/
|
|
39
|
-
export abstract class BasePromptService<TConfig> {
|
|
40
|
-
protected readonly promptService: PromptGenerationService;
|
|
41
|
-
|
|
42
|
-
constructor() {
|
|
43
|
-
this.promptService = new PromptGenerationService();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Generate template with standard error handling
|
|
48
|
-
*/
|
|
49
|
-
generateTemplate(config: TConfig): Promise<AIPromptResult<AIPromptTemplate>> {
|
|
50
|
-
try {
|
|
51
|
-
if (!this.validateConfig(config)) {
|
|
52
|
-
return Promise.resolve({
|
|
53
|
-
success: false,
|
|
54
|
-
error: 'VALIDATION_ERROR',
|
|
55
|
-
message: 'Invalid configuration',
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const template = this.createTemplate(config);
|
|
60
|
-
return Promise.resolve({ success: true, data: template });
|
|
61
|
-
} catch {
|
|
62
|
-
return Promise.resolve({
|
|
63
|
-
success: false,
|
|
64
|
-
error: 'GENERATION_FAILED',
|
|
65
|
-
message: 'Failed to generate template',
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Generate prompt from template
|
|
72
|
-
*/
|
|
73
|
-
async generatePrompt(
|
|
74
|
-
template: AIPromptTemplate,
|
|
75
|
-
config: TConfig,
|
|
76
|
-
): Promise<AIPromptResult<string>> {
|
|
77
|
-
const variables = this.buildVariables(config);
|
|
78
|
-
return this.promptService.generateFromTemplate(template, variables);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Create template with default safety config
|
|
83
|
-
*/
|
|
84
|
-
protected createTemplateWithDefaults(params: TemplateParams): AIPromptTemplate {
|
|
85
|
-
return createAIPromptTemplate({
|
|
86
|
-
...params,
|
|
87
|
-
variables: [],
|
|
88
|
-
safety: DEFAULT_PROMPT_SAFETY,
|
|
89
|
-
version: '1.0.0',
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Service name for error messages
|
|
95
|
-
*/
|
|
96
|
-
protected abstract getServiceName(): string;
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Validate configuration
|
|
100
|
-
*/
|
|
101
|
-
abstract validateConfig(config: TConfig): boolean;
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Create the template (service-specific)
|
|
105
|
-
*/
|
|
106
|
-
protected abstract createTemplate(config: TConfig): AIPromptTemplate;
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Build variables for prompt generation
|
|
110
|
-
*/
|
|
111
|
-
protected abstract buildVariables(config: TConfig): Record<string, unknown>;
|
|
112
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Result Preview Domain Export
|
|
3
|
-
* Reusable result preview components for AI generation
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Components
|
|
7
|
-
export {
|
|
8
|
-
ResultPreviewScreen,
|
|
9
|
-
ResultImageCard,
|
|
10
|
-
ResultActionBar,
|
|
11
|
-
RecentCreationsSection,
|
|
12
|
-
GenerationErrorScreen,
|
|
13
|
-
StarRatingPicker,
|
|
14
|
-
} from "./presentation/components";
|
|
15
|
-
export type {
|
|
16
|
-
StarRatingPickerProps,
|
|
17
|
-
GenerationErrorTranslations,
|
|
18
|
-
GenerationErrorConfig,
|
|
19
|
-
GenerationErrorScreenProps,
|
|
20
|
-
} from "./presentation/components";
|
|
21
|
-
|
|
22
|
-
// Hooks
|
|
23
|
-
export { useResultActions } from "./presentation/hooks";
|
|
24
|
-
|
|
25
|
-
// Types
|
|
26
|
-
export type {
|
|
27
|
-
ResultData,
|
|
28
|
-
ResultActionsCallbacks,
|
|
29
|
-
ResultDisplayState,
|
|
30
|
-
ResultImageCardProps,
|
|
31
|
-
ResultActionBarProps,
|
|
32
|
-
RecentCreation,
|
|
33
|
-
ResultPreviewScreenProps,
|
|
34
|
-
ResultPreviewTranslations,
|
|
35
|
-
UseResultActionsOptions,
|
|
36
|
-
UseResultActionsReturn,
|
|
37
|
-
} from "./presentation/types";
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GenerationErrorScreen
|
|
3
|
-
* Generic error screen for AI generation failures
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import React, { useMemo } from "react";
|
|
7
|
-
import { View, StyleSheet, StyleProp, ViewStyle } from "react-native";
|
|
8
|
-
import {
|
|
9
|
-
ScreenLayout,
|
|
10
|
-
AtomicText,
|
|
11
|
-
AtomicIcon,
|
|
12
|
-
useAppDesignTokens,
|
|
13
|
-
AtomicButton,
|
|
14
|
-
type DesignTokens,
|
|
15
|
-
} from "@umituz/react-native-design-system";
|
|
16
|
-
|
|
17
|
-
export interface GenerationErrorTranslations {
|
|
18
|
-
readonly title: string;
|
|
19
|
-
readonly tryAgain: string;
|
|
20
|
-
readonly chooseAnother: string;
|
|
21
|
-
readonly noCreditCharged: string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export interface GenerationErrorConfig {
|
|
25
|
-
readonly showCreditInfo?: boolean;
|
|
26
|
-
readonly iconName?: string;
|
|
27
|
-
readonly iconSize?: number;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface GenerationErrorScreenProps {
|
|
31
|
-
readonly errorMessage?: string;
|
|
32
|
-
readonly translations: GenerationErrorTranslations;
|
|
33
|
-
readonly config?: GenerationErrorConfig;
|
|
34
|
-
readonly onTryAgain: () => void;
|
|
35
|
-
readonly onChooseAnother: () => void;
|
|
36
|
-
readonly premiumButtonText?: string;
|
|
37
|
-
readonly onGoPremium?: () => void;
|
|
38
|
-
readonly style?: StyleProp<ViewStyle>;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const DEFAULT_CONFIG: GenerationErrorConfig = { showCreditInfo: true, iconName: "alert-circle", iconSize: 56 };
|
|
42
|
-
|
|
43
|
-
export const GenerationErrorScreen: React.FC<GenerationErrorScreenProps> = ({
|
|
44
|
-
errorMessage,
|
|
45
|
-
translations,
|
|
46
|
-
config = DEFAULT_CONFIG,
|
|
47
|
-
onTryAgain,
|
|
48
|
-
onChooseAnother,
|
|
49
|
-
premiumButtonText,
|
|
50
|
-
onGoPremium,
|
|
51
|
-
style,
|
|
52
|
-
}) => {
|
|
53
|
-
const tokens = useAppDesignTokens();
|
|
54
|
-
const styles = useMemo(() => createStyles(tokens), [tokens]);
|
|
55
|
-
const mergedConfig = { ...DEFAULT_CONFIG, ...config };
|
|
56
|
-
|
|
57
|
-
return (
|
|
58
|
-
<View style={[styles.container, { backgroundColor: tokens.colors.backgroundPrimary }, style]}>
|
|
59
|
-
<ScreenLayout scrollable={false} edges={["top", "bottom"]} backgroundColor="transparent">
|
|
60
|
-
<View style={styles.content}>
|
|
61
|
-
<View style={styles.iconContainer}>
|
|
62
|
-
<AtomicIcon name={mergedConfig.iconName || "alert-circle"} size={mergedConfig.iconSize || 56} customColor={tokens.colors.error} />
|
|
63
|
-
</View>
|
|
64
|
-
<AtomicText style={styles.title}>{translations.title}</AtomicText>
|
|
65
|
-
<AtomicText style={styles.message}>{errorMessage || translations.title}</AtomicText>
|
|
66
|
-
|
|
67
|
-
{mergedConfig.showCreditInfo && (
|
|
68
|
-
<View style={styles.infoContainer}>
|
|
69
|
-
<AtomicIcon name="information-circle-outline" size={16} customColor={tokens.colors.textSecondary} />
|
|
70
|
-
<AtomicText style={styles.infoText}>{translations.noCreditCharged}</AtomicText>
|
|
71
|
-
</View>
|
|
72
|
-
)}
|
|
73
|
-
|
|
74
|
-
<View style={styles.spacer} />
|
|
75
|
-
|
|
76
|
-
<View style={styles.actionsContainer}>
|
|
77
|
-
{onGoPremium && premiumButtonText && (
|
|
78
|
-
<AtomicButton title={premiumButtonText} onPress={onGoPremium} variant="primary" size="lg" fullWidth />
|
|
79
|
-
)}
|
|
80
|
-
<AtomicButton
|
|
81
|
-
title={translations.tryAgain}
|
|
82
|
-
onPress={onTryAgain}
|
|
83
|
-
variant={onGoPremium ? "secondary" : "primary"}
|
|
84
|
-
size="lg"
|
|
85
|
-
fullWidth
|
|
86
|
-
/>
|
|
87
|
-
<View style={styles.secondaryButtonContainer}>
|
|
88
|
-
<AtomicButton title={translations.chooseAnother} onPress={onChooseAnother} variant="text" size="md" fullWidth />
|
|
89
|
-
</View>
|
|
90
|
-
</View>
|
|
91
|
-
</View>
|
|
92
|
-
</ScreenLayout>
|
|
93
|
-
</View>
|
|
94
|
-
);
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
const createStyles = (tokens: DesignTokens) =>
|
|
98
|
-
StyleSheet.create({
|
|
99
|
-
container: { flex: 1 },
|
|
100
|
-
content: { flex: 1, alignItems: "center", paddingHorizontal: 32, paddingTop: 80, paddingBottom: 40 },
|
|
101
|
-
iconContainer: { marginBottom: 24 },
|
|
102
|
-
title: { ...tokens.typography.headlineSmall, color: tokens.colors.textPrimary, fontWeight: "700", marginBottom: 12, textAlign: "center" },
|
|
103
|
-
message: { ...tokens.typography.bodyMedium, color: tokens.colors.textSecondary, textAlign: "center", lineHeight: 22, marginBottom: 24 },
|
|
104
|
-
infoContainer: { flexDirection: "row", alignItems: "center", gap: 6, opacity: 0.7 },
|
|
105
|
-
infoText: { ...tokens.typography.bodySmall, color: tokens.colors.textSecondary },
|
|
106
|
-
spacer: { flex: 1 },
|
|
107
|
-
actionsContainer: { width: "100%", gap: 16 },
|
|
108
|
-
secondaryButtonContainer: { marginTop: 4 },
|
|
109
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Result Preview Components Export
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export { ResultPreviewScreen } from "./ResultPreviewScreen";
|
|
6
|
-
export { ResultImageCard } from "./ResultImageCard";
|
|
7
|
-
export { ResultActionBar } from "./ResultActionBar";
|
|
8
|
-
export { RecentCreationsSection } from "./RecentCreationsSection";
|
|
9
|
-
export { GenerationErrorScreen } from "./GenerationErrorScreen";
|
|
10
|
-
export { StarRatingPicker } from "./StarRatingPicker";
|
|
11
|
-
export type { StarRatingPickerProps } from "./StarRatingPicker";
|
|
12
|
-
export type {
|
|
13
|
-
GenerationErrorTranslations,
|
|
14
|
-
GenerationErrorConfig,
|
|
15
|
-
GenerationErrorScreenProps,
|
|
16
|
-
} from "./GenerationErrorScreen";
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Result Preview Types Export
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export type {
|
|
6
|
-
ResultData,
|
|
7
|
-
ResultActionsCallbacks,
|
|
8
|
-
ResultDisplayState,
|
|
9
|
-
ResultImageCardProps,
|
|
10
|
-
ResultActionBarProps,
|
|
11
|
-
RecentCreation,
|
|
12
|
-
ResultPreviewScreenProps,
|
|
13
|
-
ResultPreviewTranslations,
|
|
14
|
-
UseResultActionsOptions,
|
|
15
|
-
UseResultActionsReturn,
|
|
16
|
-
} from "./result-preview.types";
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Result Data Types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Result data structure
|
|
7
|
-
*/
|
|
8
|
-
export interface ResultData {
|
|
9
|
-
imageUrl: string;
|
|
10
|
-
metadata?: Record<string, unknown>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Result actions callbacks
|
|
15
|
-
*/
|
|
16
|
-
export interface ResultActionsCallbacks {
|
|
17
|
-
/** Download/save result */
|
|
18
|
-
onDownload: () => void | Promise<void>;
|
|
19
|
-
/** Share result */
|
|
20
|
-
onShare: () => void | Promise<void>;
|
|
21
|
-
/** Try again with same inputs */
|
|
22
|
-
onTryAgain: () => void | Promise<void>;
|
|
23
|
-
/** Navigate back */
|
|
24
|
-
onNavigateBack: () => void | Promise<void>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Result display state
|
|
29
|
-
*/
|
|
30
|
-
export interface ResultDisplayState {
|
|
31
|
-
/** Currently saving */
|
|
32
|
-
isSaving: boolean;
|
|
33
|
-
/** Currently sharing */
|
|
34
|
-
isSharing: boolean;
|
|
35
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TextToImageWizardFlow Types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { AlertMessages } from "../../../../presentation/hooks/generation/types";
|
|
6
|
-
import type { GenerationErrorInfo } from "../../../generation/wizard/presentation/components/WizardFlow.types";
|
|
7
|
-
|
|
8
|
-
export interface TextToImageWizardFlowProps {
|
|
9
|
-
readonly model: string;
|
|
10
|
-
readonly userId?: string;
|
|
11
|
-
readonly isAuthenticated: boolean;
|
|
12
|
-
readonly hasPremium: boolean;
|
|
13
|
-
readonly creditBalance: number;
|
|
14
|
-
readonly isCreditsLoaded: boolean;
|
|
15
|
-
readonly onShowAuthModal: (callback: () => void) => void;
|
|
16
|
-
readonly onShowPaywall: () => void;
|
|
17
|
-
readonly onGenerationComplete?: () => void;
|
|
18
|
-
readonly onGenerationError?: (error: string, errorInfo?: GenerationErrorInfo) => void;
|
|
19
|
-
readonly onBack: () => void;
|
|
20
|
-
readonly t: (key: string) => string;
|
|
21
|
-
readonly alertMessages?: AlertMessages;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export interface TextToImageFormState {
|
|
25
|
-
prompt: string;
|
|
26
|
-
selectedStyle: string;
|
|
27
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Action Component Types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { ViewStyle } from "react-native";
|
|
6
|
-
|
|
7
|
-
export interface GenerateButtonProps {
|
|
8
|
-
isGenerating: boolean;
|
|
9
|
-
isDisabled: boolean;
|
|
10
|
-
onPress: () => void;
|
|
11
|
-
credits?: number;
|
|
12
|
-
label: string;
|
|
13
|
-
generatingLabel: string;
|
|
14
|
-
style?: ViewStyle;
|
|
15
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Selector Component Types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { ViewStyle } from "react-native";
|
|
6
|
-
import type { VideoStyleOption, AspectRatioOption, VideoDurationOption } from "./config.types";
|
|
7
|
-
|
|
8
|
-
export interface StyleSelectorProps {
|
|
9
|
-
styles: VideoStyleOption[];
|
|
10
|
-
selectedStyle: string;
|
|
11
|
-
onStyleSelect: (styleId: string) => void;
|
|
12
|
-
getLabel: (key: string) => string;
|
|
13
|
-
title: string;
|
|
14
|
-
style?: ViewStyle;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface AspectRatioSelectorProps {
|
|
18
|
-
ratios: AspectRatioOption[];
|
|
19
|
-
selectedRatio: string;
|
|
20
|
-
onRatioSelect: (ratioId: string) => void;
|
|
21
|
-
getLabel: (key: string) => string;
|
|
22
|
-
style?: ViewStyle;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface DurationSelectorProps {
|
|
26
|
-
durations: VideoDurationOption[];
|
|
27
|
-
selectedDuration: number;
|
|
28
|
-
onDurationSelect: (duration: number) => void;
|
|
29
|
-
getLabel: (key: string) => string;
|
|
30
|
-
style?: ViewStyle;
|
|
31
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Storage Constants
|
|
3
|
-
* Database and storage related constants
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { env } from "../config/env.config";
|
|
7
|
-
|
|
8
|
-
/** Maximum number of creations to fetch in one query */
|
|
9
|
-
export const MAX_CREATIONS_FETCH_LIMIT = 100;
|
|
10
|
-
|
|
11
|
-
/** Default number of creations per page */
|
|
12
|
-
export const DEFAULT_CREATIONS_PAGE_SIZE = 20;
|
|
13
|
-
|
|
14
|
-
/** Maximum number of logs to keep in memory */
|
|
15
|
-
export const MAX_LOG_ENTRIES = 1000;
|
|
16
|
-
|
|
17
|
-
/** Timeout for database operations (milliseconds) */
|
|
18
|
-
export const DB_OPERATION_TIMEOUT_MS = env.storageDbOperationTimeoutMs;
|
|
19
|
-
|
|
20
|
-
/** Maximum cache size for frequently accessed data */
|
|
21
|
-
export const MAX_CACHE_SIZE = env.storageMaxCacheSize;
|
|
22
|
-
|
|
23
|
-
/** Cache TTL for creations (milliseconds) - 5 minutes */
|
|
24
|
-
export const CREATIONS_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
25
|
-
|
|
26
|
-
/** Cache TTL for user data (milliseconds) - 10 minutes */
|
|
27
|
-
export const USER_DATA_CACHE_TTL_MS = 10 * 60 * 1000;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Client Types
|
|
3
|
-
* Type definitions for HTTP client utilities
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export interface RequestOptions extends RequestInit {
|
|
7
|
-
timeout?: number;
|
|
8
|
-
retries?: number;
|
|
9
|
-
headers?: Record<string, string>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface ApiResponse<T> {
|
|
13
|
-
data: T | null;
|
|
14
|
-
error: string | null;
|
|
15
|
-
status: number;
|
|
16
|
-
headers: Headers;
|
|
17
|
-
}
|