( filePath: string, onProgress: ImportProgressCallback )
| 629 | } |
| 630 | |
| 631 | export async function analyzeNewImport( |
| 632 | filePath: string, |
| 633 | onProgress: ImportProgressCallback |
| 634 | ): Promise<AnalyzeNewImportResult> { |
| 635 | const formatFeature = detectFormat(filePath) |
| 636 | if (!formatFeature) { |
| 637 | return { totalMessages: 0, totalMembers: 0, meta: null, error: 'error.unrecognized_format' } |
| 638 | } |
| 639 | |
| 640 | let meta: { name: string; platform: string; type: string } | null = null |
| 641 | const memberSet = new Set<string>() |
| 642 | let totalMessages = 0 |
| 643 | |
| 644 | await streamParseFile(filePath, { |
| 645 | onMeta: (parsedMeta: ParsedMeta) => { |
| 646 | meta = { name: parsedMeta.name, platform: parsedMeta.platform, type: parsedMeta.type } |
| 647 | }, |
| 648 | onMembers: (members: ParsedMember[]) => { |
| 649 | for (const m of members) memberSet.add(m.platformId) |
| 650 | }, |
| 651 | onProgress: (progress: ParseProgress) => { |
| 652 | onProgress(progress) |
| 653 | }, |
| 654 | onMessageBatch: (batch: ParsedMessage[]) => { |
| 655 | for (const msg of batch) { |
| 656 | totalMessages++ |
| 657 | if (!memberSet.has(msg.senderPlatformId)) memberSet.add(msg.senderPlatformId) |
| 658 | } |
| 659 | }, |
| 660 | }) |
| 661 | |
| 662 | return { totalMessages, totalMembers: memberSet.size, meta } |
| 663 | } |
| 664 | |
| 665 | // ==================== Temp DB for merge preview ==================== |
| 666 |
nothing calls this directly
no test coverage detected