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