18d307f52SEvan Baconimport gql from 'graphql-tag';
28d307f52SEvan Bacon
38fd977adSWill Schurmanimport { CurrentUserQuery } from '../../../graphql/generated';
48d307f52SEvan Baconimport { graphqlClient, withErrorHandlingAsync } from '../client';
58d307f52SEvan Bacon
68d307f52SEvan Baconexport const UserQuery = {
78d307f52SEvan Bacon  async currentUserAsync(): Promise<CurrentUserQuery['meActor']> {
88d307f52SEvan Bacon    const data = await withErrorHandlingAsync(
98d307f52SEvan Bacon      graphqlClient
108d307f52SEvan Bacon        .query<CurrentUserQuery>(
118d307f52SEvan Bacon          gql`
128d307f52SEvan Bacon            query CurrentUser {
138d307f52SEvan Bacon              meActor {
148d307f52SEvan Bacon                __typename
158d307f52SEvan Bacon                id
169fe3dc72SWill Schurman                ... on UserActor {
179fe3dc72SWill Schurman                  primaryAccount {
189fe3dc72SWill Schurman                    id
199fe3dc72SWill Schurman                  }
208d307f52SEvan Bacon                  username
218d307f52SEvan Bacon                }
228d307f52SEvan Bacon                ... on Robot {
238d307f52SEvan Bacon                  firstName
248d307f52SEvan Bacon                }
258d307f52SEvan Bacon                accounts {
268d307f52SEvan Bacon                  id
279fe3dc72SWill Schurman                  users {
289fe3dc72SWill Schurman                    actor {
299fe3dc72SWill Schurman                      id
308d307f52SEvan Bacon                    }
319fe3dc72SWill Schurman                    permissions
329fe3dc72SWill Schurman                  }
339fe3dc72SWill Schurman                }
348d307f52SEvan Bacon              }
358d307f52SEvan Bacon            }
368d307f52SEvan Bacon          `,
378d307f52SEvan Bacon          /* variables */ undefined,
388d307f52SEvan Bacon          {
39*d88ac65dSlzkb            additionalTypenames: ['User', 'SSOUser'],
408d307f52SEvan Bacon          }
418d307f52SEvan Bacon        )
428d307f52SEvan Bacon        .toPromise()
438d307f52SEvan Bacon    );
448d307f52SEvan Bacon
458d307f52SEvan Bacon    return data.meActor;
468d307f52SEvan Bacon  },
478d307f52SEvan Bacon};
48