Files

45 lines
1.2 KiB
JavaScript
Raw Permalink Normal View History

import { syncGeneratedPagesFromPublicAssets } from './mindspace-page-sync.mjs';
import { resolvePublishDir } from './user-publish.mjs';
export function createPageSyncService({
pool,
pageService,
assetService,
h5Root,
syncWorkspaceAssets = null,
logger = console,
} = {}) {
const syncInFlight = new Map();
async function syncUserGeneratedPages(userId) {
if (!pool || !pageService || !userId) {
return { created: 0, skipped: 0, updated: 0 };
}
let inFlight = syncInFlight.get(userId);
if (!inFlight) {
inFlight = syncGeneratedPagesFromPublicAssets({
pool,
pageService,
assetService,
userId,
publishDir: h5Root ? resolvePublishDir(h5Root, { id: userId }) : null,
syncWorkspaceAssets,
})
.catch((error) => {
logger.warn?.('[MindSpace] page sync failed:', error?.message ?? error);
return { created: 0, skipped: 0, updated: 0 };
})
.finally(() => {
if (syncInFlight.get(userId) === inFlight) {
syncInFlight.delete(userId);
}
});
syncInFlight.set(userId, inFlight);
}
return inFlight;
}
return { syncUserGeneratedPages };
}