diff --git a/amplify/backend.ts b/amplify/backend.ts
index dde375ef..7788b61b 100644
--- a/amplify/backend.ts
+++ b/amplify/backend.ts
@@ -1,6 +1,6 @@
import { defineBackend } from '@aws-amplify/backend'
import { auth } from './auth/resource'
-import { storage, productsImages, storeLogo, templates } from './storage/resource'
+import { storage } from './storage/resource'
import { createSubscription } from './functions/createSubscription/resource'
import { webHookPlan } from './functions/webHookPlan/resource'
import { cancelPlan } from './functions/cancelPlan/resource'
@@ -39,13 +39,10 @@ const backend = defineBackend({
checkStoreName,
postConfirmation,
generateHaikuFunction,
- productsImages,
checkStoreDomain,
- storeLogo,
apiKeyManager,
generateProductDescriptionFunction,
generatePriceSuggestionFunction,
- templates,
getStoreProducts,
getStoreData,
storeImages,
@@ -118,8 +115,8 @@ backend.storeImages.resources.lambda.addToRolePolicy(
effect: Effect.ALLOW,
actions: ['s3:ListBucket', 's3:GetObject', 's3:PutObject', 's3:DeleteObject'],
resources: [
- backend.productsImages.resources.bucket.bucketArn,
- `${backend.productsImages.resources.bucket.bucketArn}/*`,
+ backend.storage.resources.bucket.bucketArn,
+ `${backend.storage.resources.bucket.bucketArn}/*`,
],
})
)
diff --git a/amplify/functions/storeImages/handler.ts b/amplify/functions/storeImages/handler.ts
index 3728f561..7f209e6b 100644
--- a/amplify/functions/storeImages/handler.ts
+++ b/amplify/functions/storeImages/handler.ts
@@ -6,7 +6,6 @@ import {
} from '@aws-sdk/client-s3'
import { env } from '$amplify/env/storeImages'
-// Inicializar el cliente S3
const s3Client = new S3Client()
const bucketName = env.BUCKET_NAME
diff --git a/amplify/storage/resource.ts b/amplify/storage/resource.ts
index 3e4b9112..3e5cb692 100644
--- a/amplify/storage/resource.ts
+++ b/amplify/storage/resource.ts
@@ -1,90 +1,36 @@
import { defineStorage } from '@aws-amplify/backend'
/**
- * Configuración de almacenamiento para fotos de perfil
+ * Configuración de almacenamiento para almacenar archivos en S3
* Este bucket es el predeterminado para la aplicación
*/
export const storage = defineStorage({
- name: 'profilePictures',
+ name: 'fasttifyAssets',
isDefault: true,
access: allow => ({
- 'public/profile-pictures/{entity_id}/*': [
- // Cualquier usuario puede leer las fotos de perfil
+ 'profile-pictures/{entity_id}/*': [
allow.guest.to(['read']),
- // Los usuarios autenticados pueden subir archivos
allow.authenticated.to(['read', 'write']),
- // El propietario tiene control total sobre sus archivos
allow.entity('identity').to(['read', 'write', 'delete']),
],
- 'picture-submissions/*': [
- // Los usuarios autenticados pueden leer y escribir
- allow.authenticated.to(['read', 'write']),
- // Los invitados solo pueden leer
- allow.guest.to(['read']),
- // Solo el propietario puede eliminar sus archivos
- allow.entity('identity').to(['delete']),
- ],
- }),
-})
-
-/**
- * Configuración de almacenamiento para imágenes de productos
- * Bucket dedicado para almacenar todas las imágenes relacionadas con productos
- */
-export const productsImages = defineStorage({
- name: 'productsImages',
- access: allow => ({
'products/{entity_id}/*': [
- // Cualquier usuario puede ver las imágenes de productos
allow.guest.to(['read']),
- // Los usuarios autenticados pueden subir imágenes
allow.authenticated.to(['read', 'write']),
- // El propietario tiene control total sobre sus archivos
allow.entity('identity').to(['read', 'write', 'delete']),
],
- 'picture-submissions/*': [
- // Los usuarios autenticados pueden leer y escribir
- allow.authenticated.to(['read', 'write']),
- // Los invitados solo pueden leer
+ 'store-logos/{entity_id}/*': [
allow.guest.to(['read']),
- // Solo el propietario puede eliminar sus archivos
- allow.entity('identity').to(['delete']),
+ allow.authenticated.to(['read', 'write']),
+ allow.entity('identity').to(['read', 'write', 'delete']),
],
- }),
-})
-
-/**
- * Configuración de almacenamiento para logos de tiendas
- * Bucket dedicado para almacenar logos e imágenes de identidad de las tiendas
- */
-export const storeLogo = defineStorage({
- name: 'storeLogo',
- access: allow => ({
- 'store/{entity_id}/*': [
- // Cualquier usuario puede ver los logos de tiendas
+ 'templates/{entity_id}/*': [
allow.guest.to(['read']),
- // Los usuarios autenticados pueden subir logos
allow.authenticated.to(['read', 'write']),
- // El propietario tiene control total sobre sus archivos
- allow.entity('identity').to(['read', 'write', 'delete']),
],
'picture-submissions/*': [
- // Los usuarios autenticados pueden leer y escribir
- allow.authenticated.to(['read', 'write']),
- // Los invitados solo pueden leer
allow.guest.to(['read']),
- // Solo el propietario puede eliminar sus archivos
- allow.entity('identity').to(['delete']),
- ],
- }),
-})
-
-export const templates = defineStorage({
- name: 'templates',
- access: allow => ({
- 'templates/{entity_id}/*': [
allow.authenticated.to(['read', 'write']),
- allow.guest.to(['read']),
+ allow.entity('identity').to(['delete']),
],
}),
})
diff --git a/app/(main-layout)/account-settings/hooks/useUpdateProfilePicture.ts b/app/(main-layout)/account-settings/hooks/useUpdateProfilePicture.ts
index bdb27c7e..bf05352a 100644
--- a/app/(main-layout)/account-settings/hooks/useUpdateProfilePicture.ts
+++ b/app/(main-layout)/account-settings/hooks/useUpdateProfilePicture.ts
@@ -22,10 +22,11 @@ export function useUpdateProfilePicture() {
// 1. Subir la imagen a S3 en una carpeta pública con el nombre único.
const result = await uploadData({
- path: `public/profile-pictures/${userData?.sub}/${uniqueFileName}`,
+ path: `profile-pictures/${userData?.sub}/${uniqueFileName}`,
data: file,
options: {
contentType: file.type,
+ bucket: 'fasttifyAssets',
},
}).result
diff --git a/app/store/components/ai-chat/AiInput.tsx b/app/store/components/ai-chat/AiInput.tsx
index a19ba958..9991f5ca 100644
--- a/app/store/components/ai-chat/AiInput.tsx
+++ b/app/store/components/ai-chat/AiInput.tsx
@@ -1,6 +1,6 @@
'use client'
-import { Globe, Paperclip, Send } from 'lucide-react'
+import { Send } from 'lucide-react'
import { useState } from 'react'
import { Textarea } from '@/components/ui/textarea'
import { motion, AnimatePresence } from 'framer-motion'
@@ -73,65 +73,6 @@ export function AIInputWithSearch({
-
-
-
-