import React, { useEffect, useState } from "react" import { request } from "@octokit/request" import Link from "@/components/MDXComponents/Link" type SolutionsProps = { feedback: boolean message?: string } type GitHubSearchItem = { url: string html_url: string title: string [key: string]: unknown } const Solutions: React.FC = ({ feedback, message }) => { const [possibleSolutionsQuery, setPossibleSolutionsQuery] = useState("") const [possibleSolutions, setPossibleSolutions] = useState< GitHubSearchItem[] >([]) function constructQuery(searchQuery: string) { return `${searchQuery} repo:medusajs/medusa is:closed is:issue` } async function searchGitHub(query: string) { return request(`GET /search/issues`, { q: query, sort: "updated", per_page: 3, }) } useEffect(() => { if (!feedback) { let query = constructQuery( // Github does not allow queries longer than 256 characters message ? message.substring(0, 256) : document.title ) searchGitHub(query) .then(async (result) => { if (!result.data.items.length && message) { query = constructQuery(document.title) result = await searchGitHub(query) } setPossibleSolutionsQuery(query) setPossibleSolutions(result.data.items) }) .catch((err) => console.error(err)) } else { setPossibleSolutionsQuery("") setPossibleSolutions([]) } }, [feedback, message]) return ( <> {possibleSolutions.length > 0 && (
If you faced a problem, here are some possible solutions from GitHub:
    {possibleSolutions.map((solution) => (
  • {solution.title}
  • ))}
Explore more issues in{" "} the GitHub repository
)} ) } export default Solutions