Я пытаюсь использовать эту библиотеку getStream
теперь у них есть быстрый старт angular-cli здесь
но я не могу на всю жизнь понять, как заставить это работать ..
Нет реальной документации о том, как заставить его работать в угловом приложении, когда вы загружаете проект, вы попадаете на эту страницу
структура файла примерно такая ...
src
│ README.md
│ angular.cli.json
| ...
│
└───App
│ app.module.ts
│ app.component.ts
| stream.service.ts
| stream-activity.model.ts
│ ...
|
└───feed-activity
| │ feed-activity.component.html
| │ feed-activity.component.ts
| │ ...
|
└───feed-activity-list
│ feed-activity-list.component.html
│ feed-activity-list.component.ts
| ...
Теперь в stream.service.ts у вас есть ..
import { Injectable } from '@angular/core';
import { environment } from '../environments/environment';
import * as stream from 'getstream';
import { StreamActivity } from './stream-activity.model';
@Injectable()
export class StreamService {
client: stream.Client;
constructor() {
// Instantiate a new client (client side)
this.client = stream.connect(
environment.STREAM_APP_KEY,
null,
environment.STREAM_APP_ID);
}
getFeed(): Promise<StreamActivity[]> {
// Instantiate the feed via factory method
const feed = this.client.feed(
environment.STREAM_FEED_GROUP,
environment.STREAM_FEED_ID,
environment.STREAM_FEED_READ_ONLY_TOKEN);
// Fetch the feed and pick the results property off the response object
return feed.get().then(response => response['results']);
}
}
и в feed-activity-list.ts
import { Component, OnInit } from '@angular/core';
import { StreamService } from '../stream.service';
import { StreamActivity } from '../stream-activity.model';
@Component({
selector: 'app-feed-activity-list',
templateUrl: './feed-activity-list.component.html',
styleUrls: ['./feed-activity-list.component.scss']
})
export class FeedActivityListComponent implements OnInit {
activities: StreamActivity[] = [];
constructor(
private streamClient: StreamService
) { }
ngOnInit() {
this.streamClient.getFeed().then(activities => {
console.log('Service promise resolved: ', activities);
this.activities = activities;
});
}
}
, а затем feed-activity.component.ts
import { Component, Input, OnInit } from '@angular/core';
import { StreamActivity } from '../stream-activity.model';
import { StreamService } from '../stream.service';
@Component({
selector: 'app-feed-activity',
templateUrl: './feed-activity.component.html',
styleUrls: ['./feed-activity.component.scss']
})
export class FeedActivityComponent implements OnInit {
@Input() activity: StreamActivity = new StreamActivity();
constructor(
private _StreamActivity: StreamActivity,
private _streamService: StreamService
) { }
ngOnInit() {
}
}
теперь согласно руководству по быстрому запуску для js
var chris = client.feed('user', 'chris');
// Add an Activity; message is a custom field - tip: you can add unlimited
// custom fields!
chris.addActivity({
actor: 'chris',
verb: 'add',
object: 'picture:10',
foreign_id: 'picture:10',
message: 'Beautiful bird!'
}).then(
null, // nothing further to do
function(err) {
// Handle or raise the Error.
}
);
теперь я не уверен, где я могу поместить этот код, чтобы заставить это работать ... Я пытался сделать это в компоненте активности канала
ngOnInit() {
const user = this._streamService.client.feed('user', 'user');
user.addActivity({
actor: 'user',
verb: 'add',
message: 'Beautiful bird!'
}).then(
null,
function(err) {
console.log(err);
}
);
}
но это, похоже, ничего не делает ??
Мне интересно, имел ли кто-нибудь успех во внедрении stream.io в там угловые приложения ??
любая помощь будет оценена!