You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
905 B
TypeScript
29 lines
905 B
TypeScript
import { Injectable } from '@angular/core';
|
|
import { FeedItem, feedItemMocks } from '../models/feed-item.model';
|
|
import { BehaviorSubject } from 'rxjs';
|
|
|
|
import { ApiService } from '../../api/api.service';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class FeedProviderService {
|
|
currentFeed$: BehaviorSubject<FeedItem[]> = new BehaviorSubject<FeedItem[]>([]);
|
|
|
|
constructor(private api: ApiService) { }
|
|
|
|
async getFeed(): Promise<BehaviorSubject<FeedItem[]>> {
|
|
const req = await this.api.get('/feed');
|
|
const items = <FeedItem[]> req.rows;
|
|
this.currentFeed$.next(items);
|
|
return Promise.resolve(this.currentFeed$);
|
|
}
|
|
|
|
async uploadFeedItem(caption: string, file: File): Promise<any> {
|
|
const res = await this.api.upload('/feed', file, {caption: caption, url: file.name});
|
|
const feed = [res, ...this.currentFeed$.value];
|
|
this.currentFeed$.next(feed);
|
|
return res;
|
|
}
|
|
|
|
} |