diff --git a/apps/studio/hooks/branches/useEdgeFunctionsDiff.ts b/apps/studio/hooks/branches/useEdgeFunctionsDiff.ts index 7f8629b974d..32133ad80d3 100644 --- a/apps/studio/hooks/branches/useEdgeFunctionsDiff.ts +++ b/apps/studio/hooks/branches/useEdgeFunctionsDiff.ts @@ -86,10 +86,10 @@ export const useEdgeFunctionsDiff = ({ const { added = [], removed = [], - overlap = [], + modified = [], } = useMemo(() => { if (!currentBranchFunctions || !mainBranchFunctions) { - return { added: [], removed: [], overlap: [] as typeof currentBranchFunctions } + return { added: [], removed: [], modified: [] } } const currentFuncs = currentBranchFunctions ?? [] @@ -97,18 +97,22 @@ export const useEdgeFunctionsDiff = ({ const added = currentFuncs.filter((c) => !mainFuncs.find((m) => m.slug === c.slug)) const removed = mainFuncs.filter((m) => !currentFuncs.find((c) => c.slug === m.slug)) - const overlap = currentFuncs.filter((c) => mainFuncs.find((m) => m.slug === c.slug)) + const modified = currentFuncs.filter((c) => + mainFuncs.find( + (m) => m.slug === c.slug && (m.ezbr_sha256 === undefined || m.ezbr_sha256 !== c.ezbr_sha256) + ) + ) - return { added, removed, overlap } + return { added, removed, modified } }, [currentBranchFunctions, mainBranchFunctions]) - const overlapSlugs = overlap.map((f) => f.slug) const addedSlugs = added.map((f) => f.slug) const removedSlugs = removed.map((f) => f.slug) + const maybeModifiedSlugs = modified.map((f) => f.slug) // Fetch function bodies --------------------------------------------------- const currentBodiesQueries = useQueries({ - queries: overlapSlugs.map((slug) => ({ + queries: maybeModifiedSlugs.map((slug) => ({ queryKey: ['edge-function-body', currentBranchRef, slug], queryFn: ({ signal }: { signal?: AbortSignal }) => getEdgeFunctionBody({ projectRef: currentBranchRef, slug }, signal), @@ -118,7 +122,7 @@ export const useEdgeFunctionsDiff = ({ }) const mainBodiesQueries = useQueries({ - queries: overlapSlugs.map((slug) => ({ + queries: maybeModifiedSlugs.map((slug) => ({ queryKey: ['edge-function-body', mainBranchRef, slug], queryFn: ({ signal }: { signal?: AbortSignal }) => getEdgeFunctionBody({ projectRef: mainBranchRef, slug }, signal), @@ -173,12 +177,12 @@ export const useEdgeFunctionsDiff = ({ // Build lookup maps -------------------------------------------------------- const currentBodiesMap: Record = {} currentBodiesQueries.forEach((q, idx) => { - if (q.data) currentBodiesMap[overlapSlugs[idx]] = q.data + if (q.data) currentBodiesMap[maybeModifiedSlugs[idx]] = q.data }) const mainBodiesMap: Record = {} mainBodiesQueries.forEach((q, idx) => { - if (q.data) mainBodiesMap[overlapSlugs[idx]] = q.data + if (q.data) mainBodiesMap[maybeModifiedSlugs[idx]] = q.data }) const addedBodiesMap: Record = {} @@ -196,7 +200,7 @@ export const useEdgeFunctionsDiff = ({ const functionFileInfo: FunctionFileInfo = {} // Process overlapping functions to determine modifications and file info - overlapSlugs.forEach((slug) => { + maybeModifiedSlugs.forEach((slug) => { const currentBody = currentBodiesMap[slug] const mainBody = mainBodiesMap[slug] if (!currentBody || !mainBody) return @@ -229,9 +233,8 @@ export const useEdgeFunctionsDiff = ({ if (hasModifications) { modifiedSlugs.push(slug) + functionFileInfo[slug] = fileInfos } - - functionFileInfo[slug] = fileInfos }) // Add file info for added functions