Upgrade dependencies, etc. (#55)

* Run prettify

* Upgrade dependencies and switch out some libraries:

* timeago (freshly jquery dependent) -> ReactTimeAgo
* next-ga -> react-ga and custom plumbing

* Move static/ to public/static/

As per https://github.com/zeit/next.js/blob/master/errors/static-dir-deprecated.md

* Fix cons->icons typo

* Import only what's necessary from lodash (223 -> 180 kb)

* Asyncify MembershipInfoForm
This commit is contained in:
Aarni Koskela
2019-10-30 20:05:08 +02:00
committed by Riku Rouvila
parent db98341a51
commit dcf26deb0f
36 changed files with 3376 additions and 585 deletions

View File

@@ -1,9 +1,14 @@
import _ from "lodash";
import flatMap from "lodash/flatMap";
import sortBy from "lodash/sortBy";
import React from "react";
import request from "axios";
import timeago from "timeago";
import api from "./api";
import transformers from "./feed-transformers";
import ReactTimeAgo from "react-time-ago";
import JavascriptTimeAgo from "javascript-time-ago";
import timeagoFi from "javascript-time-ago/locale/fi";
JavascriptTimeAgo.locale(timeagoFi);
export default class Feed extends React.Component {
state = {
@@ -16,17 +21,13 @@ export default class Feed extends React.Component {
async updateFeed() {
const res = await request.get(api("feeds"));
const messages = _(res.data)
.map((messages, type) => transformers[type](messages))
.flatten()
.value();
const messages = sortBy(
flatMap(res.data, (messages, type) => transformers[type](messages)),
"timestamp"
);
messages.reverse(); // In-place
this.setState({
messages: _(messages)
.sortBy("timestamp")
.reverse()
.value()
.slice(0, 40),
messages: messages.slice(0, 40),
});
}
@@ -36,7 +37,12 @@ export default class Feed extends React.Component {
if (message.imageLink) {
image = (
<a target="_blank" href={message.imageLink} rel="noopener noreferrer" tabIndex="-1">
<a
target="_blank"
href={message.imageLink}
rel="noopener noreferrer"
tabIndex="-1"
>
{image}
</a>
);
@@ -44,7 +50,9 @@ export default class Feed extends React.Component {
return (
<div className="message" key={i}>
<div className="message__image" aria-hidden="true">{image}</div>
<div className="message__image" aria-hidden="true">
{image}
</div>
<div className="message__content">
<div className="message__user">
<a href={message.userLink}>{message.user}</a>
@@ -52,13 +60,13 @@ export default class Feed extends React.Component {
<div
className="message__body"
dangerouslySetInnerHTML={{ __html: message.body }}
></div>
/>
<div className="message__icon">
<i className={`fa fa-${message.type}`}></i>
<i className={`fa fa-${message.type}`} aria-hidden="true" />
</div>
<div className="message__details">
<span className="message__timestamp">
{timeago(message.timestamp)}
<ReactTimeAgo date={message.timestamp} locale="fi" />
</span>
<span className="message__meta">{message.meta}</span>
</div>