import sortBy from "lodash/sortBy"; import React from "react"; import request from "axios"; import api from "./api"; import ReactTimeAgo from "react-time-ago"; import JavascriptTimeAgo from "javascript-time-ago"; import timeagoFi from "javascript-time-ago/locale/fi.json"; import { convertTwitterItems, TwitterItem } from "./feed-transformers/twitter"; import { GithubApi } from "parse-github-event/lib/types"; import { convertGithubItems } from "./feed-transformers/github"; import { KKEvent } from "../data/events"; JavascriptTimeAgo.addLocale(timeagoFi); interface FeedsResult { twitter?: TwitterItem[]; github?: GithubApi.GithubEvent[]; } interface FeedState { messages: KKEvent[]; } export default class Feed extends React.Component { public state: FeedState = { messages: [], }; componentDidMount() { this.updateFeed(); } async updateFeed() { const res = await request.get(api("feeds")); const { github, twitter } = res.data; const messages = sortBy( [ ...convertTwitterItems(twitter ?? []), ...convertGithubItems(github ?? []), ].flat(), "timestamp" ); messages.reverse(); // In-place this.setState({ messages: messages.slice(0, 40), }); } render() { const messages = this.state.messages.map((message, i) => { let image = ; if (message.imageLink) { image = ( {image} ); } return (
{message.user}