/
parties-upload.component.ts
60 lines (51 loc) · 1.58 KB
/
parties-upload.component.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import {Component, OnInit} from '@angular/core';
import template from './parties-upload.component.html';
import { upload } from '../../../../both/methods/images.methods';
import {Subject, Subscription, Observable} from "rxjs";
import {MeteorObservable} from "meteor-rxjs";
import {Thumb} from "../../../../both/models/image.model";
import {Thumbs} from "../../../../both/collections/images.collection";
@Component({
selector: 'parties-upload',
template
})
export class PartiesUploadComponent implements OnInit {
fileIsOver: boolean = false;
uploading: boolean = false;
files: Subject<string[]> = new Subject<string[]>();
thumbsSubscription: Subscription;
thumbs: Observable<Thumb[]>;
constructor() {}
ngOnInit() {
this.files.subscribe((filesArray) => {
MeteorObservable.autorun().subscribe(() => {
if (this.thumbsSubscription) {
this.thumbsSubscription.unsubscribe();
this.thumbsSubscription = undefined;
}
this.thumbsSubscription = MeteorObservable.subscribe("thumbs", filesArray).subscribe(() => {
this.thumbs = Thumbs.find({
originalStore: 'images',
originalId: {
$in: filesArray
}
}).zone();
});
});
});
}
fileOver(fileIsOver: boolean): void {
this.fileIsOver = fileIsOver;
}
onFileDrop(file: File): void {
this.uploading = true;
upload(file)
.then(() => {
this.uploading = false;
})
.catch((error) => {
this.uploading = false;
console.log(`Something went wrong!`, error);
});
}
}