import React, { Component } from 'react'; import {withStyles, ListSubheader, Paper, List, ListItem, ListItemText, CircularProgress, ListItemAvatar, Avatar, ListItemSecondaryAction, Tooltip} from '@material-ui/core'; import PersonIcon from '@material-ui/icons/Person'; import ForumIcon from '@material-ui/icons/Forum'; import {styles} from './PageLayout.styles'; import Mastodon from 'megalodon'; import { Status } from '../types/Status'; import { LinkableIconButton, LinkableAvatar } from '../interfaces/overrides'; interface IMessagesState { posts?: [Status]; viewIsLoading: boolean; viewDidLoad?: boolean; viewDidError?: boolean; viewDidErrorCode?: any; } class MessagesPage extends Component { client: Mastodon; constructor(props: any) { super(props); this.client = new Mastodon(localStorage.getItem('access_token') as string, localStorage.getItem('baseurl') as string + "/api/v1"); this.state = { viewIsLoading: true } } componentWillMount() { this.client.get('/conversations') .then((resp) => { let data:any = resp.data; let messages: any = []; data.forEach((message: any) => { if (message.last_status !== null) { messages.push(message.last_status); } }); this.setState({ posts: messages, viewIsLoading: false, viewDidLoad: true }); }); } removeHTMLContent(text: string) { const div = document.createElement('div'); div.innerHTML = text; let innerContent = div.textContent || div.innerText || ""; innerContent = innerContent.slice(0, 100) + "..." return innerContent; } render() { const { classes } = this.props; return (
{ this.state.viewDidLoad?
Recent messages { this.state.posts? this.state.posts.map((message: Status) => { return ( ) }): null }
: null } { this.state.viewIsLoading?
: null }
) } } export default withStyles(styles)(MessagesPage);