import React, {useEffect, useState} from "react" import Layout from "../components/layout" import RepoCard from "../components/cards/repo" import AdbConnect from "../components/adbconnect" import SEO from "../components/seo" 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 ReposPage = () => { 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 } export default ReposPage