File indexing completed on 2025-05-04 05:31:00
0001 import React ,{useState,useEffect} from 'react' 0002 import TimeAgo from 'react-timeago' 0003 const Mastodon = (props) => { 0004 const [posts, setPosts] = useState([]); 0005 const [user, setUser] = useState({'username':''}); 0006 const [mastodonUrl, setMastodonUrl] = useState(window.config.mastodonUrl); 0007 const [baseUrl, setBaseUrl] = useState(window.config.baseUrl); 0008 useEffect(() => { 0009 loadData(); 0010 },[]); 0011 0012 const loadData = () => { 0013 fetch(`/json/socialuserstatuses?username=${props.username}`, { 0014 mode: 'cors', 0015 credentials: 'include' 0016 }) 0017 .then(response => response.json()) 0018 .then(data => { 0019 let items = data; 0020 console.log(items.user.account); 0021 0022 if ( items && typeof(items.statuses) != "undefined") 0023 { 0024 setPosts(items.statuses); 0025 } 0026 0027 if (items && typeof(items.user.account) != "undefined") 0028 { 0029 setUser(items.user.account); 0030 } 0031 }); 0032 0033 } 0034 0035 return ( 0036 <div className="sub-system-container"> 0037 <div className="header">Mastodon : <a href={user.url}>{user.username} </a> 0038 { 0039 user.avatar && 0040 <img src={user.avatar} style={{width:'48px',height: '48px', borderRadius:'10px'}}></img> 0041 } 0042 0043 </div> 0044 <div> 0045 <ul>{ 0046 posts.slice(0, 5).map((p,index) => 0047 <li key={index}> 0048 <div className="title"> 0049 <a className="title" href={p.url}> 0050 <span>{p.content.replace(/(<([^>]+)>)/ig,"")}</span> 0051 </a> <TimeAgo date={p.created_at} /> 0052 </div> 0053 </li> 0054 ) 0055 } 0056 </ul> 0057 </div> 0058 0059 </div> 0060 ) 0061 } 0062 0063 export default Mastodon;