import React, {useEffect, useState} from "react" import Layout from "../components/layout" import RepoCard from "../components/cards/repo" import AdbConnect from "../components/adbconnect" import bgImage from "../media/phones.png" import { TiWarning } from "react-icons/ti"; import { BiErrorAlt } from "react-icons/bi"; import { GoVerified } from "react-icons/go"; import { IconContext } from "react-icons"; import "./repos.css"; const IndexPage = () => { const [repos, setRepos] = useState(null); const [hadError, setHadError] = useState(false); useEffect(() => { fetch("https://raw.githubusercontent.com/recloudstream/cs-repos/master/repos-db.json") .catch(err => { setHadError(true) }) .then(r => r.json()) .then(setRepos) .catch(err => { setHadError(true) }) }, [setRepos]) return

Keep in mind that the extensions can execute arbitrary code inside the app.

This means you should treat them with the same level of scrutiny you treat any apps. Extensions can also read all of the Cloudstream's data.
Repos with a are constantly audited by the app developers so you can probably trust them.
{(!repos && !hadError) &&
Fetching data...

Failed to connect to GitHub servers.

GitHub has been a target of censorship in some countries.
Please try changing your DNS server or try using a VPN.
} {repos && <> {repos.map((it, index) => )} } {(!repos && hadError) &&

Failed to connect to GitHub servers.

GitHub has been a target of censorship in some countries.
Please try changing your DNS server or try using a VPN.
}
} export function Head() { return ( <> Cloudstream Repositories ) } export default IndexPage