Sean Rhee 5 лет назад
Родитель
Сommit
53d5acf731

BIN
dashboard/src/assets/github-icon.png


+ 1 - 0
dashboard/src/components/repo-selector/RepoSelector.tsx

@@ -45,6 +45,7 @@ export default class RepoSelector extends Component<PropsType, StateType> {
       if (err) {
         this.setState({ loading: false, error: true });
       } else {
+        console.log(res.data);
         this.setState({ repos: res.data, loading: false, error: false });
       }
     });

+ 10 - 1
dashboard/src/main/home/Home.tsx

@@ -35,6 +35,7 @@ type StateType = {
   showWelcome: boolean,
   currentView: string,
   handleDO: boolean, // Trigger DO infra calls after oauth flow if needed
+  ghRedirect: boolean,
   forceRefreshClusters: boolean, // For updating ClusterSection from modal on deletion
 
   // Track last project id for refreshing clusters on project change
@@ -52,6 +53,7 @@ export default class Home extends Component<PropsType, StateType> {
     forceRefreshClusters: false,
     sidebarReady: false,
     handleDO: false,
+    ghRedirect: false,
   }
 
   // TODO: Refactor and prevent flash + multiple reload
@@ -71,7 +73,11 @@ export default class Home extends Component<PropsType, StateType> {
           this.setState({ currentView: 'provisioner', sidebarReady: true, });
         } else {
           // console.log('getting here', currentCluster)
-          this.setState({ currentView: 'dashboard', sidebarReady: true });
+          if (this.state.ghRedirect) {
+            this.setState({ currentView: 'integrations', sidebarReady: true, ghRedirect: false });
+          } else {
+            this.setState({ currentView: 'dashboard', sidebarReady: true });
+          }
         }
       });
     }
@@ -200,6 +206,9 @@ export default class Home extends Component<PropsType, StateType> {
       this.setState({ handleDO: true });
       this.checkDO();
     }
+
+    this.setState({ ghRedirect: urlParams.get('gh_oauth') !== null });
+    urlParams.delete('gh_oauth');
     
     let { user } = this.context;
     window.location.href.indexOf('127.0.0.1') === -1 && posthog.init(process.env.POSTHOG_API_KEY, {

+ 4 - 2
dashboard/src/main/home/integrations/IntegrationList.tsx

@@ -18,12 +18,14 @@ type StateType = {
 export default class IntegrationList extends Component<PropsType, StateType> {
   renderContents = () => {
     let { integrations, titles, setCurrent, isCategory } = this.props;
+    console.log(`titles: ${titles}`);
+    console.log(`integrations: ${integrations}`);
     if (titles && titles.length > 0) {
       return integrations.map((integration: string, i: number) => {
         let icon = integrationList[integration] && integrationList[integration].icon;
         let subtitle = integrationList[integration] && integrationList[integration].label;
         let label = titles[i];
-        let disabled = integration === 'repo' || integration === 'kubernetes';
+        let disabled = integration === 'kubernetes';
         return (
           <Integration
             key={i}
@@ -46,7 +48,7 @@ export default class IntegrationList extends Component<PropsType, StateType> {
       return integrations.map((integration: string, i: number) => {
         let icon = integrationList[integration] && integrationList[integration].icon;
         let label = integrationList[integration] && integrationList[integration].label;
-        let disabled = integration === 'repo' || integration === 'kubernetes';
+        let disabled = integration === 'kubernetes';
         return (
           <Integration
             key={i}

+ 2 - 1
dashboard/src/main/home/integrations/Integrations.tsx

@@ -32,6 +32,7 @@ export default class Integrations extends Component<PropsType, StateType> {
   // TODO: implement once backend is restructured
   getIntegrations = (categoryType: string) => {
     let { currentProject } = this.context;
+    this.setState({ currentOptions: [], currentTitles: [], currentIntegrationData: [] });
     switch (categoryType) {
       case 'kubernetes':
         api.getProjectClusters('<token>', {}, { id: currentProject.id }, (err: any, res: any) => {
@@ -99,7 +100,7 @@ export default class Integrations extends Component<PropsType, StateType> {
             {
               items.map((item: any, i: number) => {
                 return (
-                  <Credential>
+                  <Credential key={i}>
                     <i className="material-icons">admin_panel_settings</i> {item.name}
                   </Credential>
                 );

+ 1 - 1
dashboard/src/main/home/sidebar/Sidebar.tsx

@@ -117,7 +117,7 @@ export default class Sidebar extends Component<PropsType, StateType> {
           <NavButton
             selected={currentView === 'integrations'}
             onClick={() => {
-              setCurrentModal('IntegrationsInstructionsModal', {})
+              setCurrentView('integrations')
             }}
           >
             <Img src={integrations} />

+ 12 - 0
dashboard/src/shared/api.tsx

@@ -186,6 +186,16 @@ const getClusters = baseApi<{}, { id: number }>('GET', pathParams => {
   return `/api/projects/${pathParams.id}/clusters`;
 });
 
+const getGitRepoInfo = baseApi('GET', '/api/repos/github/');
+
+const getGitRepoList = baseApi<{
+}, {
+  project_id: number,
+  git_repo_id: number,
+}>('GET', pathParams => {
+  return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos`;
+});
+
 const getGitRepos = baseApi<{
 }, {
   project_id: number,
@@ -400,6 +410,8 @@ export default {
   getChartControllers,
   getClusterIntegrations,
   getClusters,
+  getGitRepoInfo,
+  getGitRepoList,
   getGitRepos,
   getImageRepos,
   getImageTags,