home.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const html = require('choo/html');
  2. const { list } = require('../utils');
  3. const archiveTile = require('./archiveTile');
  4. const modal = require('./modal');
  5. const intro = require('./intro');
  6. module.exports = function(state, emit) {
  7. if (state.user.loginRequired && !state.user.loggedIn) {
  8. emit('signup-cta', 'required');
  9. }
  10. const archives = state.storage.files
  11. .filter(archive => !archive.expired)
  12. .map(archive => archiveTile(state, emit, archive));
  13. let left = '';
  14. if (state.uploading) {
  15. left = archiveTile.uploading(state, emit);
  16. } else if (state.archive.numFiles > 0) {
  17. left = archiveTile.wip(state, emit);
  18. } else {
  19. left = archiveTile.empty(state, emit);
  20. }
  21. archives.reverse();
  22. const right =
  23. archives.length === 0
  24. ? intro(state)
  25. : list(archives, 'p-2 h-full overflow-y-auto w-full', 'mb-4 w-full');
  26. return html`
  27. <main class="main">
  28. ${state.modal && modal(state, emit)}
  29. <section
  30. class="h-full w-full p-6 md:p-8 overflow-hidden md:flex md:flex-row md:rounded-xl md:shadow-big"
  31. >
  32. <div class="px-2 w-full md:px-0 md:mr-8 md:w-1/2">${left}</div>
  33. <div class="mt-6 w-full md:w-1/2 md:-m-2">${right}</div>
  34. </section>
  35. </main>
  36. `;
  37. };