{"version":3,"file":"afterChange.mjs","names":["afterChangeHook: CollectionAfterChangeHook"],"sources":["../../src/collectionHooks/afterChange.ts"],"sourcesContent":["import { s3Store } from '../plugin'\nimport { MediaCloudErrors } from '../types/errors'\nimport { useErrorHandler } from '../hooks/useErrorHandler'\n\nimport type { CollectionAfterChangeHook } from 'payload'\n\nexport const afterChangeHook: CollectionAfterChangeHook = async ({\n  doc,\n  previousDoc,\n  collection,\n  operation,\n  req,\n}) => {\n  const { throwError } = useErrorHandler()\n\n  // Skip if this is an internal update to prevent infinite loop\n  if (req.context?._mediaCloudPluginInternal) {\n    return doc\n  }\n\n  // Skip if this is a new document, only move files on update\n  if (operation !== 'update') {\n    return doc\n  }\n\n  // Move asset in S3 if path has changed\n  // Path is updated in `beforeChange` if filename or folder changes\n  if (doc.path !== previousDoc?.path) {\n    if (doc.storage === 's3' && s3Store) {\n      try {\n        const oldKey = previousDoc?.path\n        const newKey = doc.path\n\n        await s3Store.copy(oldKey, newKey)\n      } catch (error) {\n        // Revert path and filename if the file was not moved successfully\n        // Marked as internal to prevent infinite loop\n        req.context = { ...req.context }\n        req.context._mediaCloudPluginInternal = true\n\n        await req.payload.update({\n          collection: collection.slug,\n          id: doc.id,\n          data: { path: previousDoc.path, filename: previousDoc.filename },\n          req,\n        })\n\n        delete req.context._mediaCloudPluginInternal\n\n        throwError({ ...MediaCloudErrors.S3_MOVE_ERROR, cause: error })\n      }\n    }\n  }\n\n  return doc\n}\n"],"mappings":";;;;;AAMA,MAAaA,kBAA6C,OAAO,EAC/D,KACA,aACA,YACA,WACA,UACI;CACJ,MAAM,EAAE,eAAe,iBAAiB;AAGxC,KAAI,IAAI,SAAS,0BACf,QAAO;AAIT,KAAI,cAAc,SAChB,QAAO;AAKT,KAAI,IAAI,SAAS,aAAa,MAC5B;MAAI,IAAI,YAAY,QAAQ,QAC1B,KAAI;GACF,MAAM,SAAS,aAAa;GAC5B,MAAM,SAAS,IAAI;AAEnB,SAAM,QAAQ,KAAK,QAAQ,OAAO;WAC3B,OAAO;AAGd,OAAI,UAAU,EAAE,GAAG,IAAI,SAAS;AAChC,OAAI,QAAQ,4BAA4B;AAExC,SAAM,IAAI,QAAQ,OAAO;IACvB,YAAY,WAAW;IACvB,IAAI,IAAI;IACR,MAAM;KAAE,MAAM,YAAY;KAAM,UAAU,YAAY;KAAU;IAChE;IACD,CAAC;AAEF,UAAO,IAAI,QAAQ;AAEnB,cAAW;IAAE,GAAG,iBAAiB;IAAe,OAAO;IAAO,CAAC;;;AAKrE,QAAO"}