fix: check for modified functions by eszip hash (#40603)

This commit is contained in:
Han Qiao authored and GitHub committed 2025-11-24 14:09:11 +08:00
1 parent a3ec8adeaa
commit 4766629ccf
1 file changed
+15 -12
@@ -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<string, EdgeFunctionBodyData | undefined> = {}
currentBodiesQueries.forEach((q, idx) => {
if (q.data) currentBodiesMap[overlapSlugs[idx]] = q.data
if (q.data) currentBodiesMap[maybeModifiedSlugs[idx]] = q.data
})
const mainBodiesMap: Record<string, EdgeFunctionBodyData | undefined> = {}
mainBodiesQueries.forEach((q, idx) => {
if (q.data) mainBodiesMap[overlapSlugs[idx]] = q.data
if (q.data) mainBodiesMap[maybeModifiedSlugs[idx]] = q.data
})
const addedBodiesMap: Record<string, EdgeFunctionBodyData | undefined> = {}
@@ -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