medias.js 950 B

1234567891011121314151617181920212223242526272829303132333435
  1. class Media {
  2. constructor(data) {
  3. this.date = new Date(data.date);
  4. this.md5sum = data.md5sum;
  5. this.path = data.path;
  6. this.meta = data.meta || {};
  7. this.tags = data.tags || [];
  8. this.thumbnail = `/api/media/thumbnail/${data.md5sum}.png`;
  9. this.ui = null;
  10. }
  11. }
  12. class MediaStorage extends EventTarget
  13. {
  14. constructor() {
  15. super();
  16. this.medias = [];
  17. this.oldest = null;
  18. this.newest = null;
  19. }
  20. pushAll(arr) {
  21. for (let i of arr) {
  22. this.medias.push(i);
  23. this.oldest = !this.oldest || this.oldest.date.getTime() < i.date.getTime() ? i : this.oldest;
  24. this.newest = !this.newest || this.newest.date.getTime() > i.date.getTime() ? i : this.newest;
  25. }
  26. for (let i of arr)
  27. this.dispatchEvent(new CustomEvent("newMedia", { detail: i }));
  28. }
  29. }
  30. MediaStorage.Instance = new MediaStorage();