50 lines
No EOL
1.4 KiB
TypeScript
50 lines
No EOL
1.4 KiB
TypeScript
import * as mangrove from 'mangrove-reviews'
|
|
import {UIEventSource} from "../UIEventSource";
|
|
|
|
export default class MangroveReviews {
|
|
|
|
constructor() {
|
|
}
|
|
|
|
/**
|
|
* Gives a UIEVentsource with all reviews.
|
|
* Note: rating is between 1 and 100
|
|
*/
|
|
public static GetReviewsFor(lon: number, lat: number, name: string): UIEventSource<{
|
|
comment?: string,
|
|
author: string,
|
|
date: Date,
|
|
rating: number
|
|
}[]> {
|
|
|
|
let uri = `geo:${lat},${lon}?u=50`;
|
|
if (name !== undefined && name !== null) {
|
|
uri += "&q=" + name;
|
|
}
|
|
const reviewsSource : UIEventSource< {
|
|
comment?: string,
|
|
author: string,
|
|
date: Date,
|
|
rating: number
|
|
}[]> = new UIEventSource([]);
|
|
|
|
mangrove.getReviews({sub: uri}).then(
|
|
(data) => {
|
|
const reviews = [];
|
|
for (const review of data.reviews) {
|
|
const r = review.payload;
|
|
reviews.push({
|
|
date: new Date(r.iat * 1000),
|
|
comment: r.opinion,
|
|
author: r.metadata.nickname,
|
|
rating: r.rating // percentage points
|
|
})
|
|
}
|
|
reviewsSource.setData(reviews)
|
|
}
|
|
);
|
|
return reviewsSource;
|
|
}
|
|
|
|
|
|
} |