23 lines
		
	
	
		
			825 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			825 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { createZip } from '../../utils/zip'
 | 
						|
import { guessZipFileName } from '../../utils/helpers'
 | 
						|
import state from '..'
 | 
						|
import toast from 'react-hot-toast'
 | 
						|
 | 
						|
export const downloadAsZip = async () => {
 | 
						|
  try {
 | 
						|
    state.zipLoading = true
 | 
						|
    // TODO do something about file/gist loading state
 | 
						|
    const files = state.files.map(({ name, content }) => ({ name, content }))
 | 
						|
    const wasmFiles = state.files
 | 
						|
      .filter(i => i.compiledContent)
 | 
						|
      .map(({ name, compiledContent }) => ({ name: `${name}.wasm`, content: compiledContent }))
 | 
						|
    const zipped = await createZip([...files, ...wasmFiles])
 | 
						|
    const zipFileName = guessZipFileName(files)
 | 
						|
    zipped.saveFile(zipFileName)
 | 
						|
  } catch (error) {
 | 
						|
    toast.error('Error occurred while creating zip file, try again later')
 | 
						|
  } finally {
 | 
						|
    state.zipLoading = false
 | 
						|
  }
 | 
						|
}
 |