ubot1 / docs /components /releases.tsx
sahanind's picture
Upload 96 files
e7ef6c8 verified
// Example from https://beta.reactjs.org/learn
import React, { useState, useEffect } from "react";
import ReactMarkdown from 'react-markdown'
import styles from './releases.module.css'
import gfm from 'remark-gfm'
function dateformate(date){
const event = new Date(date)
return event.toDateString()
}
function Releases() {
const [books, setBooks] = useState(null);
useEffect(() => {
getData();
async function getData() {
try {
const response = await fetch(
"https://api.github.com/repos/kalanakt/All-Url-Uploader/releases"
);
const data = await response.json();
setBooks(data);
} catch (error) {
console.log(error);
}
}
}, []);
return (
<div className={styles.container}>
{books ? (
<div className="books">
{books.map((book: {
[x: string]: any; commit: { message: string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.ReactFragment | React.ReactPortal; author: { date: string; }; comment_count: string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.ReactFragment | React.ReactPortal; verification: { verified: string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | React.ReactFragment | React.ReactPortal; }; }; html_url: string; comments_url: string; author: {
[x: string]: string; login: string; avatar_url: string;
}; }, index: React.Key) => {
return (
<div key={index} className={styles.tmtimelineitem}>
<span><a href={book.html_url}>{book.tag_name}</a> <span className={styles.uktextmuted}>({dateformate(book.published_at)})</span></span>
<div className={styles.tmtimelineentry}>
<div className={styles.tmtimelineentrylabel}>
<span className={styles.ukbadge}>{book.draft ? <span className={styles.ukbadgesuccess}>Darft</span> : book.prerelease ? <span className={styles.ukbadgewarning}>Pre release</span> : <span className={styles.ukbadgesuccess}>Release</span>}</span>
</div>
<div className={styles.tmtimelineentrydata}>
<ReactMarkdown remarkPlugins={[gfm]}>{book.body.split(' ').slice(0, 20).join(' ')}</ReactMarkdown>
</div>
<a href={book.html_url}><span className={styles.readmore}>Read More ...</span></a>
</div>
</div>
);
})}
</div>
) : (
<span>404 : Page Not Found</span>
)}
</div>
)
}
export default function MyApp() {
return <Releases />
}