1+ 'use client' ;
2+
3+ import React , { useCallback , useEffect , useState } from 'react' ;
4+
5+ import styles from '../settings.module.css' ;
6+ import { deleteGithubIntegration , isGithubConnected } from "@/api/DashboardService" ;
7+ import { API_BASE_URL } from "@/api/apiConfig" ;
8+
9+ async function redirectToGithubIntegration ( ) {
10+ try {
11+ window . location . href = `${ API_BASE_URL } /integrations/github/authorize` ;
12+ } catch ( error ) {
13+ console . error ( 'Error: ' , error ) ;
14+ }
15+ }
16+
17+ const Integrations = ( ) => {
18+ const [ isExternalGitIntegration , setIsExternalGitIntegration ] = useState < boolean | undefined > ( null ) ;
19+ useEffect ( ( ) => {
20+ ( async function ( ) {
21+ const gitIntegrated = await isGithubConnected ( ) ;
22+ setIsExternalGitIntegration ( gitIntegrated ) ;
23+ } ) ( ) ;
24+ } , [ ] ) ;
25+
26+ const deleteIntegration = async ( ) => {
27+ await deleteGithubIntegration ( ) ;
28+ const gitIntegrated = await isGithubConnected ( ) ;
29+ setIsExternalGitIntegration ( gitIntegrated ) ;
30+ } ;
31+
32+ return (
33+ < div className = "min-h-screen text-white" >
34+ < div className = "max-w-3xl mx-auto" >
35+ < h2 className = "text-xl font-semibold mb-4" > Integrations</ h2 >
36+ < div >
37+ < div className = { `flex items-center justify-between p-4 rounded-lg mb-3 ${ styles . integration_container } ` } >
38+ < div className = "flex items-center" >
39+ < div className = "w-10 h-10 mr-4" >
40+ < svg viewBox = "0 0 24 24" className = "fill-current" >
41+ < path
42+ d = "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
43+ </ svg >
44+ </ div >
45+ < div >
46+ < h3 className = "text-white font-semibold" > GitHub</ h3 >
47+ < p className = "text-gray-400 text-sm" >
48+ Integrate with GitHub to start working on your projects
49+ </ p >
50+ </ div >
51+ </ div >
52+ { isExternalGitIntegration === undefined ? ( < > </ > ) : isExternalGitIntegration === false ? (
53+ < button
54+ onClick = { ( ) => redirectToGithubIntegration ( ) }
55+ className = "bg-white font-semibold text-black px-4 py-2 rounded-md transition-colors"
56+ >
57+ Connect
58+ </ button >
59+ ) : (
60+ < button
61+ onClick = { ( ) => deleteIntegration ( ) }
62+ className = "font-semibold text-gray-200 hover:text-white px-4 py-2 rounded-md transition-colors"
63+ >
64+ Delete
65+ </ button >
66+ ) }
67+ </ div >
68+ </ div >
69+ </ div >
70+ </ div >
71+ ) ;
72+ } ;
73+
74+ export default Integrations ;
0 commit comments