diff --git a/frontend/package.json b/frontend/package.json
index 60e6da7..bddae34 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -39,7 +39,7 @@
"dayjs": "^1.9.1",
"dompurify": "^2.2.6",
"emoji-mart": "^3.0.0",
- "emoticon": "^3.2.0",
+ "emoticon": "^4.0.0",
"graphql": "^15.0.0",
"graphql-tag": "^2.10.3",
"history": "^4.10.1",
diff --git a/frontend/src/Admin/index.tsx b/frontend/src/Admin/index.tsx
index 402d8ce..3d01341 100644
--- a/frontend/src/Admin/index.tsx
+++ b/frontend/src/Admin/index.tsx
@@ -215,9 +215,12 @@ const AdminRoute = () => {
},
});
if (data && user) {
+ /*
+TODO: add permision check
if (user.roles.org !== 'admin') {
return ;
}
+ */
return (
<>
@@ -225,7 +228,8 @@ const AdminRoute = () => {
initialTab={0}
users={data.users}
invitedUsers={data.invitedUsers}
- canInviteUser={user.roles.org === 'admin'}
+ // canInviteUser={user.roles.org === 'admin'} TODO: add permision check
+ canInviteUser={true}
onInviteUser={NOOP}
onUpdateUserPassword={() => {
hidePopup();
diff --git a/frontend/src/App/Routes.tsx b/frontend/src/App/Routes.tsx
index 480c16e..3c4f227 100644
--- a/frontend/src/App/Routes.tsx
+++ b/frontend/src/App/Routes.tsx
@@ -13,8 +13,6 @@ import Login from 'Auth';
import Register from 'Register';
import Profile from 'Profile';
import styled from 'styled-components';
-import JwtDecode from 'jwt-decode';
-import { setAccessToken } from 'shared/utils/accessToken';
import { useCurrentUser } from 'App/context';
const MainContent = styled.div`
@@ -26,9 +24,9 @@ const MainContent = styled.div`
flex-grow: 1;
`;
-type RefreshTokenResponse = {
- accessToken: string;
- setup?: null | { confirmToken: string };
+type ValidateTokenResponse = {
+ valid: boolean;
+ userID: string;
};
const AuthorizedRoutes = () => {
@@ -36,27 +34,17 @@ const AuthorizedRoutes = () => {
const [loading, setLoading] = useState(true);
const { setUser } = useCurrentUser();
useEffect(() => {
- fetch('/auth/refresh_token', {
+ fetch('/auth/validate', {
method: 'POST',
credentials: 'include',
}).then(async x => {
const { status } = x;
- if (status === 400) {
- history.replace('/login');
+ const response: ValidateTokenResponse = await x.json();
+ const { valid, userID } = response;
+ if (!valid) {
+ history.replace(`/login`);
} else {
- const response: RefreshTokenResponse = await x.json();
- const { accessToken, setup } = response;
- if (setup) {
- history.replace(`/register?confirmToken=${setup.confirmToken}`);
- } else {
- const claims: JWTToken = JwtDecode(accessToken);
- const currentUser = {
- id: claims.userId,
- roles: { org: claims.orgRole, teams: new Map(), projects: new Map() },
- };
- setUser(currentUser);
- setAccessToken(accessToken);
- }
+ setUser(userID);
}
setLoading(false);
});
diff --git a/frontend/src/App/TopNavbar.tsx b/frontend/src/App/TopNavbar.tsx
index e1d8e55..bc2bb59 100644
--- a/frontend/src/App/TopNavbar.tsx
+++ b/frontend/src/App/TopNavbar.tsx
@@ -3,13 +3,8 @@ import TopNavbar, { MenuItem } from 'shared/components/TopNavbar';
import { ProfileMenu } from 'shared/components/DropdownMenu';
import ProjectSettings, { DeleteConfirm, DELETE_INFO } from 'shared/components/ProjectSettings';
import { useHistory } from 'react-router';
-import { PermissionLevel, PermissionObjectType, useCurrentUser } from 'App/context';
-import {
- RoleCode,
- useTopNavbarQuery,
- useDeleteProjectMutation,
- GetProjectsDocument,
-} from 'shared/generated/graphql';
+import { useCurrentUser } from 'App/context';
+import { RoleCode, useTopNavbarQuery, useDeleteProjectMutation, GetProjectsDocument } from 'shared/generated/graphql';
import { usePopup, Popup } from 'shared/components/PopupMenu';
import produce from 'immer';
import MiniProfile from 'shared/components/MiniProfile';
@@ -107,23 +102,10 @@ const GlobalTopNavbar: React.FC = ({
onRemoveInvitedFromBoard,
onRemoveFromBoard,
}) => {
- const { user, setUserRoles, setUser } = useCurrentUser();
+ const { user, setUser } = useCurrentUser();
const { loading, data } = useTopNavbarQuery({
- onCompleted: response => {
- if (user && user.roles) {
- setUserRoles({
- org: user.roles.org,
- teams: response.me.teamRoles.reduce((map, obj) => {
- map.set(obj.teamID, obj.roleCode);
- return map;
- }, new Map()),
- projects: response.me.projectRoles.reduce((map, obj) => {
- map.set(obj.projectID, obj.roleCode);
- return map;
- }, new Map()),
- });
- }
- },
+ // TODO: maybe remove?
+ onCompleted: response => {},
});
const { showPopup, hidePopup } = usePopup();
const history = useHistory();
@@ -147,7 +129,7 @@ const GlobalTopNavbar: React.FC = ({
{
history.push('/admin');
hidePopup();
@@ -189,7 +171,9 @@ const GlobalTopNavbar: React.FC = ({
if (!user) {
return null;
}
- const userIsTeamOrProjectAdmin = user.isAdmin(PermissionLevel.TEAM, PermissionObjectType.TEAM, teamID);
+ // TODO: readd permision check
+ // const userIsTeamOrProjectAdmin = user.isAdmin(PermissionLevel.TEAM, PermissionObjectType.TEAM, teamID);
+ const userIsTeamOrProjectAdmin = true;
const onInvitedMemberProfile = ($targetRef: React.RefObject, email: string) => {
const member = projectInvitedMembers ? projectInvitedMembers.find(u => u.email === email) : null;
if (member) {
diff --git a/frontend/src/App/cache.ts b/frontend/src/App/cache.ts
index 48b5e73..e6080a6 100644
--- a/frontend/src/App/cache.ts
+++ b/frontend/src/App/cache.ts
@@ -1,4 +1,4 @@
-import { InMemoryCache } from 'apollo-cache-inmemory';
+import { InMemoryCache } from '@apollo/client';
const cache = new InMemoryCache();
diff --git a/frontend/src/App/context.ts b/frontend/src/App/context.ts
index 13f5f2e..fe8c419 100644
--- a/frontend/src/App/context.ts
+++ b/frontend/src/App/context.ts
@@ -1,79 +1,20 @@
import React, { useContext } from 'react';
-export enum PermissionLevel {
- ORG,
- TEAM,
- PROJECT,
-}
-
-export enum PermissionObjectType {
- ORG,
- TEAM,
- PROJECT,
- TASK,
-}
-
-export type CurrentUserRoles = {
- org: string;
- teams: Map;
- projects: Map;
-};
-
-export interface CurrentUserRaw {
- id: string;
- roles: CurrentUserRoles;
-}
-
type UserContextState = {
- user: CurrentUserRaw | null;
- setUser: (user: CurrentUserRaw | null) => void;
- setUserRoles: (roles: CurrentUserRoles) => void;
+ user: string | null;
+ setUser: (user: string | null) => void;
};
+
export const UserContext = React.createContext({
user: null,
setUser: _user => null,
- setUserRoles: roles => null,
});
-export interface CurrentUser extends CurrentUserRaw {
- isAdmin: (level: PermissionLevel, objectType: PermissionObjectType, subjectID?: string | null) => boolean;
- isVisible: (level: PermissionLevel, objectType: PermissionObjectType, subjectID?: string | null) => boolean;
-}
-
export const useCurrentUser = () => {
- const { user, setUser, setUserRoles } = useContext(UserContext);
- let currentUser: CurrentUser | null = null;
- if (user) {
- currentUser = {
- ...user,
- isAdmin(level: PermissionLevel, objectType: PermissionObjectType, subjectID?: string | null) {
- if (user.roles.org === 'admin') {
- return true;
- }
- switch (level) {
- case PermissionLevel.TEAM:
- return subjectID ? this.roles.teams.get(subjectID) === 'admin' : false;
- default:
- return false;
- }
- },
- isVisible(level: PermissionLevel, objectType: PermissionObjectType, subjectID?: string | null) {
- if (user.roles.org === 'admin') {
- return true;
- }
- switch (level) {
- case PermissionLevel.TEAM:
- return subjectID ? this.roles.teams.get(subjectID) !== null : false;
- default:
- return false;
- }
- },
- };
- }
+ const { user, setUser } = useContext(UserContext);
return {
- user: currentUser,
+ user,
setUser,
- setUserRoles,
};
};
diff --git a/frontend/src/App/index.tsx b/frontend/src/App/index.tsx
index f5ba404..8aa4990 100644
--- a/frontend/src/App/index.tsx
+++ b/frontend/src/App/index.tsx
@@ -1,16 +1,14 @@
import React, { useState, useEffect } from 'react';
-import jwtDecode from 'jwt-decode';
import { createBrowserHistory } from 'history';
import { Router } from 'react-router';
import { PopupProvider } from 'shared/components/PopupMenu';
import { ToastContainer } from 'react-toastify';
-import { setAccessToken } from 'shared/utils/accessToken';
import styled, { ThemeProvider } from 'styled-components';
import NormalizeStyles from './NormalizeStyles';
import BaseStyles from './BaseStyles';
import theme from './ThemeStyles';
import Routes from './Routes';
-import { UserContext, CurrentUserRaw, CurrentUserRoles, PermissionLevel, PermissionObjectType } from './context';
+import { UserContext } from './context';
import 'react-toastify/dist/ReactToastify.css';
@@ -48,19 +46,11 @@ const StyledContainer = styled(ToastContainer).attrs({
const history = createBrowserHistory();
const App = () => {
- const [user, setUser] = useState(null);
- const setUserRoles = (roles: CurrentUserRoles) => {
- if (user) {
- setUser({
- ...user,
- roles,
- });
- }
- };
+ const [user, setUser] = useState(null);
return (
<>
-
+
diff --git a/frontend/src/Auth/index.tsx b/frontend/src/Auth/index.tsx
index d4564d3..5b9d324 100644
--- a/frontend/src/Auth/index.tsx
+++ b/frontend/src/Auth/index.tsx
@@ -1,7 +1,5 @@
import React, { useState, useEffect, useContext } from 'react';
import { useHistory } from 'react-router';
-import JwtDecode from 'jwt-decode';
-import { setAccessToken } from 'shared/utils/accessToken';
import Login from 'shared/components/Login';
import UserContext from 'App/context';
import { Container, LoginWrapper } from './Styles';
@@ -30,42 +28,23 @@ const Auth = () => {
setComplete(true);
} else {
const response = await x.json();
- const { accessToken } = response;
- const claims: JWTToken = JwtDecode(accessToken);
- const currentUser = {
- id: claims.userId,
- roles: { org: claims.orgRole, teams: new Map(), projects: new Map() },
- };
- setUser(currentUser);
- setComplete(true);
- setAccessToken(accessToken);
-
+ const { userID } = response;
+ setUser(userID);
history.push('/');
}
});
};
useEffect(() => {
- fetch('/auth/refresh_token', {
+ fetch('/auth/validate', {
method: 'POST',
credentials: 'include',
}).then(async x => {
- const { status } = x;
- if (status === 200) {
- const response: RefreshTokenResponse = await x.json();
- const { accessToken, setup } = response;
- if (setup) {
- history.replace(`/register?confirmToken=${setup.confirmToken}`);
- } else {
- const claims: JWTToken = JwtDecode(accessToken);
- const currentUser = {
- id: claims.userId,
- roles: { org: claims.orgRole, teams: new Map(), projects: new Map() },
- };
- setUser(currentUser);
- setAccessToken(accessToken);
- history.replace('/projects');
- }
+ const response = await x.json();
+ const { valid, userID } = response;
+ if (valid) {
+ setUser(userID);
+ history.replace('/projects');
}
});
}, []);
diff --git a/frontend/src/Confirm/index.tsx b/frontend/src/Confirm/index.tsx
index e34d923..818acfa 100644
--- a/frontend/src/Confirm/index.tsx
+++ b/frontend/src/Confirm/index.tsx
@@ -5,8 +5,6 @@ import { useHistory, useLocation } from 'react-router';
import * as QueryString from 'query-string';
import { toast } from 'react-toastify';
import { Container, LoginWrapper } from './Styles';
-import JwtDecode from 'jwt-decode';
-import { setAccessToken } from 'shared/utils/accessToken';
import { useCurrentUser } from 'App/context';
const UsersConfirm = () => {
@@ -31,18 +29,8 @@ const UsersConfirm = () => {
const { status } = x;
if (status === 200) {
const response = await x.json();
- const { accessToken } = response;
- const claims: JWTToken = JwtDecode(accessToken);
- const currentUser = {
- id: claims.userId,
- roles: {
- org: claims.orgRole,
- teams: new Map(),
- projects: new Map(),
- },
- };
- setUser(currentUser);
- setAccessToken(accessToken);
+ const { userID } = response;
+ setUser(userID);
history.push('/');
} else {
setFailed();
diff --git a/frontend/src/Profile/index.tsx b/frontend/src/Profile/index.tsx
index aff2e0f..fdec70e 100644
--- a/frontend/src/Profile/index.tsx
+++ b/frontend/src/Profile/index.tsx
@@ -1,7 +1,6 @@
import React, { useRef, useEffect } from 'react';
import styled from 'styled-components/macro';
import GlobalTopNavbar from 'App/TopNavbar';
-import { getAccessToken } from 'shared/utils/accessToken';
import Settings from 'shared/components/Settings';
import {
useMeQuery,
@@ -49,12 +48,9 @@ const Projects = () => {
if (e.target.files) {
const fileData = new FormData();
fileData.append('file', e.target.files[0]);
- const accessToken = getAccessToken();
axios
.post('/users/me/avatar', fileData, {
- headers: {
- Authorization: `Bearer ${accessToken}`,
- },
+ withCredentials: true,
})
.then(res => {
if ($fileUpload && $fileUpload.current) {
@@ -75,7 +71,7 @@ const Projects = () => {
}
}}
onResetPassword={(password, done) => {
- updateUserPassword({ variables: { userID: user.id, password } });
+ updateUserPassword({ variables: { userID: user, password } });
toast('Password was changed!');
done();
}}
diff --git a/frontend/src/Projects/Project/Board/index.tsx b/frontend/src/Projects/Project/Board/index.tsx
index 1ef8217..90d16f8 100644
--- a/frontend/src/Projects/Project/Board/index.tsx
+++ b/frontend/src/Projects/Project/Board/index.tsx
@@ -543,7 +543,7 @@ const ProjectBoard: React.FC = ({ projectID, onCardLabelClick
onChangeTaskMetaFilter={filter => {
setTaskMetaFilters(filter);
}}
- userID={user?.id}
+ userID={user ?? ''}
labels={labelsRef}
members={membersRef}
/>,
diff --git a/frontend/src/Projects/Project/Details/index.tsx b/frontend/src/Projects/Project/Details/index.tsx
index b59c155..f3962ed 100644
--- a/frontend/src/Projects/Project/Details/index.tsx
+++ b/frontend/src/Projects/Project/Details/index.tsx
@@ -541,7 +541,7 @@ const Details: React.FC = ({
bio="None"
onRemoveFromTask={() => {
if (user) {
- unassignTask({ variables: { taskID: data.findTask.id, userID: user.id } });
+ unassignTask({ variables: { taskID: data.findTask.id, userID: user ?? '' } });
}
}}
/>
diff --git a/frontend/src/Projects/index.tsx b/frontend/src/Projects/index.tsx
index 649d917..6eb9387 100644
--- a/frontend/src/Projects/index.tsx
+++ b/frontend/src/Projects/index.tsx
@@ -12,7 +12,7 @@ import {
import { Link } from 'react-router-dom';
import NewProject from 'shared/components/NewProject';
-import { PermissionLevel, PermissionObjectType, useCurrentUser } from 'App/context';
+import { useCurrentUser } from 'App/context';
import Button from 'shared/components/Button';
import { usePopup, Popup } from 'shared/components/PopupMenu';
import { useForm } from 'react-hook-form';
@@ -268,7 +268,7 @@ const Projects = () => {
- {user.roles.org === 'admin' && (
+ {true && ( // TODO: add permision check
{
@@ -330,7 +330,7 @@ const Projects = () => {
{team.name}
- {user.isAdmin(PermissionLevel.TEAM, PermissionObjectType.TEAM, team.id) && (
+ {true && ( // TODO: add permision check
Projects
@@ -355,7 +355,7 @@ const Projects = () => {
))}
- {user.isAdmin(PermissionLevel.TEAM, PermissionObjectType.TEAM, team.id) && (
+ {true && ( // TODO: add permision check
{
diff --git a/frontend/src/Teams/Members/index.tsx b/frontend/src/Teams/Members/index.tsx
index b9fb940..f8eeb4a 100644
--- a/frontend/src/Teams/Members/index.tsx
+++ b/frontend/src/Teams/Members/index.tsx
@@ -3,7 +3,7 @@ import Input from 'shared/components/Input';
import updateApolloCache from 'shared/utils/cache';
import produce from 'immer';
import Button from 'shared/components/Button';
-import { useCurrentUser, PermissionLevel, PermissionObjectType } from 'App/context';
+import { useCurrentUser } from 'App/context';
import Select from 'shared/components/Select';
import {
useGetTeamQuery,
@@ -424,7 +424,7 @@ const Members: React.FC = ({ teamID }) => {
fetchPolicy: 'cache-and-network',
pollInterval: 3000,
});
- const { user, setUserRoles } = useCurrentUser();
+ const { user } = useCurrentUser();
const warning =
'You can’t leave because you are the only admin. To make another user an admin, click their avatar, select “Change permissions…”, and select “Admin”.';
const [createTeamMember] = useCreateTeamMemberMutation({
@@ -446,17 +446,7 @@ const Members: React.FC = ({ teamID }) => {
);
},
});
- const [updateTeamMemberRole] = useUpdateTeamMemberRoleMutation({
- onCompleted: r => {
- if (user) {
- setUserRoles(
- produce(user.roles, draftRoles => {
- draftRoles.teams.set(r.updateTeamMemberRole.teamID, r.updateTeamMemberRole.member.role.code);
- }),
- );
- }
- },
- });
+ const [updateTeamMemberRole] = useUpdateTeamMemberRoleMutation();
const [deleteTeamMember] = useDeleteTeamMemberMutation({
update: (client, response) => {
updateApolloCache(
@@ -491,7 +481,7 @@ const Members: React.FC = ({ teamID }) => {
- {user.isAdmin(PermissionLevel.TEAM, PermissionObjectType.TEAM, data.findTeam.id) && (
+ {true && ( // TODO: add permission check
{
showPopup(
@@ -528,11 +518,12 @@ const Members: React.FC = ({ teamID }) => {
showPopup(
$target,
{
updateTeamMemberRole({ variables: { userID: member.id, teamID, roleCode } });
}}
diff --git a/frontend/src/Teams/index.tsx b/frontend/src/Teams/index.tsx
index b9b3dbb..34eea54 100644
--- a/frontend/src/Teams/index.tsx
+++ b/frontend/src/Teams/index.tsx
@@ -13,7 +13,7 @@ import { usePopup, Popup } from 'shared/components/PopupMenu';
import { History } from 'history';
import produce from 'immer';
import { TeamSettings, DeleteConfirm, DELETE_INFO } from 'shared/components/ProjectSettings';
-import { PermissionObjectType, PermissionLevel, useCurrentUser } from 'App/context';
+import { useCurrentUser } from 'App/context';
import NOOP from 'shared/utils/noop';
import Members from './Members';
import Projects from './Projects';
@@ -95,9 +95,12 @@ const Teams = () => {
const [currentTab, setCurrentTab] = useState(0);
const match = useRouteMatch();
if (data && user) {
+ /*
+TODO: re-add permission check
if (!user.isVisible(PermissionLevel.TEAM, PermissionObjectType.TEAM, teamID)) {
return ;
}
+ */
return (
<>
- axios.post('/auth/refresh_token', {}, { withCredentials: true }).then(tokenRefreshResponse => {
- setAccessToken(tokenRefreshResponse.data.accessToken);
- failedRequest.response.config.headers.Authorization = `Bearer ${tokenRefreshResponse.data.accessToken}`;
- return Promise.resolve();
- });
-
-createAuthRefreshInterceptor(axios, refreshAuthLogic);
-
-const resolvePendingRequests = () => {
- pendingRequests.map((callback: any) => callback());
- pendingRequests = [];
-};
-
-const resolvePromise = (resolve: () => void) => {
- pendingRequests.push(() => resolve());
-};
-
-const resetPendingRequests = () => {
- pendingRequests = [];
-};
-
-const setRefreshing = (newVal: boolean) => {
- isRefreshing = newVal;
-};
-
-const errorLink = onError(({ graphQLErrors, networkError, operation, forward }) => {
- if (graphQLErrors) {
- for (const err of graphQLErrors) {
- if (err.extensions && err.extensions.code) {
- switch (err.extensions.code) {
- case 'UNAUTHENTICATED':
- if (!isRefreshing) {
- setRefreshing(true);
- forward$ = fromPromise(
- getNewToken()
- .then((response: any) => {
- setAccessToken(response.accessToken);
- resolvePendingRequests();
- return response.accessToken;
- })
- .catch(() => {
- resetPendingRequests();
- // TODO
- // Handle token refresh errors e.g clear stored tokens, redirect to login, ...
- return undefined;
- })
- .finally(() => {
- setRefreshing(false);
- }),
- ).filter(value => Boolean(value));
- } else {
- forward$ = fromPromise(new Promise(resolvePromise));
- }
- return forward$.flatMap(() => forward(operation));
- default:
- // pass
- }
- }
- }
- }
- if (networkError) {
- console.log(`[Network error]: ${networkError}`); // eslint-disable-line no-console
- }
- return undefined;
-});
-
-const requestLink = new ApolloLink(
- (operation, forward) =>
- new Observable((observer: any) => {
- let handle: any;
- Promise.resolve(operation)
- .then((op: any) => {
- const accessToken = getAccessToken();
- if (accessToken) {
- op.setContext({
- headers: {
- Authorization: `Bearer ${accessToken}`,
- },
- });
- }
- })
- .then(() => {
- handle = forward(operation).subscribe({
- next: observer.next.bind(observer),
- error: observer.error.bind(observer),
- complete: observer.complete.bind(observer),
- });
- })
- .catch(observer.error.bind(observer));
-
- return () => {
- if (handle) {
- handle.unsubscribe();
- }
- };
- }),
-);
-
-const client = new ApolloClient({
- link: ApolloLink.from([
- onError(({ graphQLErrors, networkError }) => {
- if (graphQLErrors) {
- graphQLErrors.forEach(
- ({ message, locations, path }) =>
- console.log(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`), // eslint-disable-line no-console
- );
- }
- if (networkError) {
- console.log(`[Network error]: ${networkError}`); // eslint-disable-line no-console
- }
- }),
- errorLink,
- requestLink,
- new HttpLink({
- uri: '/graphql',
- credentials: 'same-origin',
- }),
- ]),
- cache,
-});
+const client = new ApolloClient({ uri: '/graphql', cache });
+console.log('cloient', client);
ReactDOM.render(
diff --git a/frontend/src/shared/components/AddList/Styles.ts b/frontend/src/shared/components/AddList/Styles.ts
index d9076bd..4e32fac 100644
--- a/frontend/src/shared/components/AddList/Styles.ts
+++ b/frontend/src/shared/components/AddList/Styles.ts
@@ -1,5 +1,5 @@
import styled, { css } from 'styled-components';
-import TextareaAutosize from 'react-autosize-textarea/lib';
+import TextareaAutosize from 'react-autosize-textarea';
import { mixin } from 'shared/utils/styles';
import Button from 'shared/components/Button';
diff --git a/frontend/src/shared/components/AddList/index.tsx b/frontend/src/shared/components/AddList/index.tsx
index 3992fc9..b347efa 100644
--- a/frontend/src/shared/components/AddList/index.tsx
+++ b/frontend/src/shared/components/AddList/index.tsx
@@ -49,6 +49,7 @@ export const NameEditor: React.FC = ({ onSave: handleSave, onCa
) => setListName(e.currentTarget.value)}
diff --git a/frontend/src/shared/components/Card/Styles.ts b/frontend/src/shared/components/Card/Styles.ts
index fd43ddf..23f0f91 100644
--- a/frontend/src/shared/components/Card/Styles.ts
+++ b/frontend/src/shared/components/Card/Styles.ts
@@ -10,6 +10,7 @@ export const CardMember = styled(TaskAssignee)<{ zIndex: number }>`
z-index: ${props => props.zIndex};
position: relative;
`;
+
export const ChecklistIcon = styled(CheckSquareOutline)<{ color: 'success' | 'normal' }>`
${props =>
props.color === 'success' &&
@@ -18,6 +19,7 @@ export const ChecklistIcon = styled(CheckSquareOutline)<{ color: 'success' | 'no
stroke: ${props.theme.colors.success};
`}
`;
+
export const ClockIcon = styled(Clock)<{ color: string }>`
fill: ${props => props.color};
`;
@@ -26,7 +28,7 @@ export const EditorTextarea = styled(TextareaAutosize)`
overflow: hidden;
overflow-wrap: break-word;
resize: none;
- height: 90px;
+ height: 54px;
width: 100%;
background: none;
diff --git a/frontend/src/shared/components/TaskDetails/remark.js b/frontend/src/shared/components/TaskDetails/remark.js
index 01635fd..f151344 100644
--- a/frontend/src/shared/components/TaskDetails/remark.js
+++ b/frontend/src/shared/components/TaskDetails/remark.js
@@ -1,6 +1,6 @@
import visit from 'unist-util-visit';
import emoji from 'node-emoji';
-import emoticon from 'emoticon';
+import { emoticon } from 'emoticon';
import { Emoji } from 'emoji-mart';
import React from 'react';
diff --git a/frontend/src/shared/generated/graphql.tsx b/frontend/src/shared/generated/graphql.tsx
index 2a2ec75..0851447 100644
--- a/frontend/src/shared/generated/graphql.tsx
+++ b/frontend/src/shared/generated/graphql.tsx
@@ -1,10 +1,10 @@
-import gql from 'graphql-tag';
-import * as ApolloReactCommon from '@apollo/react-common';
-import * as ApolloReactHooks from '@apollo/react-hooks';
+import { gql } from '@apollo/client';
+import * as Apollo from '@apollo/client';
export type Maybe = T | null;
export type Exact = { [K in keyof T]: T[K] };
export type MakeOptional = Omit & { [SubKey in K]?: Maybe };
export type MakeMaybe = Omit & { [SubKey in K]: Maybe };
+const defaultOptions = {}
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
ID: string;
@@ -18,171 +18,15 @@ export type Scalars = {
};
-
-
-
-export enum RoleCode {
- Owner = 'owner',
- Admin = 'admin',
- Member = 'member',
- Observer = 'observer'
+export enum ActionLevel {
+ Org = 'ORG',
+ Team = 'TEAM',
+ Project = 'PROJECT'
}
-export type ProjectLabel = {
- __typename?: 'ProjectLabel';
- id: Scalars['ID'];
- createdDate: Scalars['Time'];
- labelColor: LabelColor;
- name?: Maybe;
-};
-
-export type LabelColor = {
- __typename?: 'LabelColor';
- id: Scalars['ID'];
- name: Scalars['String'];
- position: Scalars['Float'];
- colorHex: Scalars['String'];
-};
-
-export type TaskLabel = {
- __typename?: 'TaskLabel';
- id: Scalars['ID'];
- projectLabel: ProjectLabel;
- assignedDate: Scalars['Time'];
-};
-
-export type ProfileIcon = {
- __typename?: 'ProfileIcon';
- url?: Maybe;
- initials?: Maybe;
- bgColor?: Maybe;
-};
-
-export type OwnersList = {
- __typename?: 'OwnersList';
- projects: Array;
- teams: Array;
-};
-
-export type Member = {
- __typename?: 'Member';
- id: Scalars['ID'];
- role: Role;
- fullName: Scalars['String'];
- username: Scalars['String'];
- profileIcon: ProfileIcon;
- owned: OwnedList;
- member: MemberList;
-};
-
-export type RefreshToken = {
- __typename?: 'RefreshToken';
- id: Scalars['ID'];
- userId: Scalars['UUID'];
- expiresAt: Scalars['Time'];
- createdAt: Scalars['Time'];
-};
-
-export type Role = {
- __typename?: 'Role';
- code: Scalars['String'];
- name: Scalars['String'];
-};
-
-export type OwnedList = {
- __typename?: 'OwnedList';
- teams: Array;
- projects: Array;
-};
-
-export type MemberList = {
- __typename?: 'MemberList';
- teams: Array;
- projects: Array;
-};
-
-export type UserAccount = {
- __typename?: 'UserAccount';
- id: Scalars['ID'];
- email: Scalars['String'];
- createdAt: Scalars['Time'];
- fullName: Scalars['String'];
- initials: Scalars['String'];
- bio: Scalars['String'];
- role: Role;
- username: Scalars['String'];
- profileIcon: ProfileIcon;
- owned: OwnedList;
- member: MemberList;
-};
-
-export type InvitedUserAccount = {
- __typename?: 'InvitedUserAccount';
- id: Scalars['ID'];
- email: Scalars['String'];
- invitedOn: Scalars['Time'];
- member: MemberList;
-};
-
-export type Team = {
- __typename?: 'Team';
- id: Scalars['ID'];
- createdAt: Scalars['Time'];
- name: Scalars['String'];
- members: Array;
-};
-
-export type InvitedMember = {
- __typename?: 'InvitedMember';
- email: Scalars['String'];
- invitedOn: Scalars['Time'];
-};
-
-export type Project = {
- __typename?: 'Project';
- id: Scalars['ID'];
- createdAt: Scalars['Time'];
- name: Scalars['String'];
- team?: Maybe;
- taskGroups: Array;
- members: Array;
- invitedMembers: Array;
- labels: Array;
-};
-
-export type TaskGroup = {
- __typename?: 'TaskGroup';
- id: Scalars['ID'];
- projectID: Scalars['String'];
- createdAt: Scalars['Time'];
- name: Scalars['String'];
- position: Scalars['Float'];
- tasks: Array;
-};
-
-export type ChecklistBadge = {
- __typename?: 'ChecklistBadge';
- complete: Scalars['Int'];
- total: Scalars['Int'];
-};
-
-export type TaskBadges = {
- __typename?: 'TaskBadges';
- checklist?: Maybe;
-};
-
-export type CausedBy = {
- __typename?: 'CausedBy';
- id: Scalars['ID'];
- fullName: Scalars['String'];
- profileIcon?: Maybe;
-};
-
-export type TaskActivityData = {
- __typename?: 'TaskActivityData';
- name: Scalars['String'];
- value: Scalars['String'];
-};
+export enum ActionType {
+ TaskMemberAdded = 'TASK_MEMBER_ADDED'
+}
export enum ActivityType {
TaskAdded = 'TASK_ADDED',
@@ -197,33 +41,65 @@ export enum ActivityType {
TaskChecklistRemoved = 'TASK_CHECKLIST_REMOVED'
}
-export type TaskActivity = {
- __typename?: 'TaskActivity';
- id: Scalars['ID'];
- type: ActivityType;
- data: Array;
- causedBy: CausedBy;
- createdAt: Scalars['Time'];
+export enum ActorType {
+ User = 'USER'
+}
+
+export type AddTaskLabelInput = {
+ taskID: Scalars['UUID'];
+ projectLabelID: Scalars['UUID'];
};
-export type Task = {
- __typename?: 'Task';
+export type AssignTaskInput = {
+ taskID: Scalars['UUID'];
+ userID: Scalars['UUID'];
+};
+
+export type CausedBy = {
+ __typename?: 'CausedBy';
id: Scalars['ID'];
- taskGroup: TaskGroup;
- createdAt: Scalars['Time'];
+ fullName: Scalars['String'];
+ profileIcon?: Maybe;
+};
+
+export type ChecklistBadge = {
+ __typename?: 'ChecklistBadge';
+ complete: Scalars['Int'];
+ total: Scalars['Int'];
+};
+
+export type CreateTaskChecklist = {
+ taskID: Scalars['UUID'];
name: Scalars['String'];
position: Scalars['Float'];
- description?: Maybe;
- dueDate?: Maybe;
- hasTime: Scalars['Boolean'];
- complete: Scalars['Boolean'];
- completedAt?: Maybe;
- assigned: Array;
- labels: Array;
- checklists: Array;
- badges: TaskBadges;
- activity: Array;
- comments: Array;
+};
+
+export type CreateTaskChecklistItem = {
+ taskChecklistID: Scalars['UUID'];
+ name: Scalars['String'];
+ position: Scalars['Float'];
+};
+
+export type CreateTaskComment = {
+ taskID: Scalars['UUID'];
+ message: Scalars['String'];
+};
+
+export type CreateTaskCommentPayload = {
+ __typename?: 'CreateTaskCommentPayload';
+ taskID: Scalars['UUID'];
+ comment: TaskComment;
+};
+
+export type CreateTeamMember = {
+ userID: Scalars['UUID'];
+ teamID: Scalars['UUID'];
+};
+
+export type CreateTeamMemberPayload = {
+ __typename?: 'CreateTeamMemberPayload';
+ team: Team;
+ teamMember: Member;
};
export type CreatedBy = {
@@ -233,118 +109,257 @@ export type CreatedBy = {
profileIcon: ProfileIcon;
};
-export type TaskComment = {
- __typename?: 'TaskComment';
- id: Scalars['ID'];
- createdAt: Scalars['Time'];
- updatedAt?: Maybe;
- message: Scalars['String'];
- createdBy: CreatedBy;
- pinned: Scalars['Boolean'];
+export type DeleteInvitedProjectMember = {
+ projectID: Scalars['UUID'];
+ email: Scalars['String'];
};
-export type Organization = {
- __typename?: 'Organization';
- id: Scalars['ID'];
- name: Scalars['String'];
+export type DeleteInvitedProjectMemberPayload = {
+ __typename?: 'DeleteInvitedProjectMemberPayload';
+ invitedMember: InvitedMember;
};
-export type TaskChecklistItem = {
- __typename?: 'TaskChecklistItem';
- id: Scalars['ID'];
- name: Scalars['String'];
+export type DeleteInvitedUserAccount = {
+ invitedUserID: Scalars['UUID'];
+};
+
+export type DeleteInvitedUserAccountPayload = {
+ __typename?: 'DeleteInvitedUserAccountPayload';
+ invitedUser: InvitedUserAccount;
+};
+
+export type DeleteProject = {
+ projectID: Scalars['UUID'];
+};
+
+export type DeleteProjectLabel = {
+ projectLabelID: Scalars['UUID'];
+};
+
+export type DeleteProjectMember = {
+ projectID: Scalars['UUID'];
+ userID: Scalars['UUID'];
+};
+
+export type DeleteProjectMemberPayload = {
+ __typename?: 'DeleteProjectMemberPayload';
+ ok: Scalars['Boolean'];
+ member: Member;
+ projectID: Scalars['UUID'];
+};
+
+export type DeleteProjectPayload = {
+ __typename?: 'DeleteProjectPayload';
+ ok: Scalars['Boolean'];
+ project: Project;
+};
+
+export type DeleteTaskChecklist = {
taskChecklistID: Scalars['UUID'];
- complete: Scalars['Boolean'];
- position: Scalars['Float'];
- dueDate: Scalars['Time'];
};
-export type TaskChecklist = {
- __typename?: 'TaskChecklist';
+export type DeleteTaskChecklistItem = {
+ taskChecklistItemID: Scalars['UUID'];
+};
+
+export type DeleteTaskChecklistItemPayload = {
+ __typename?: 'DeleteTaskChecklistItemPayload';
+ ok: Scalars['Boolean'];
+ taskChecklistItem: TaskChecklistItem;
+};
+
+export type DeleteTaskChecklistPayload = {
+ __typename?: 'DeleteTaskChecklistPayload';
+ ok: Scalars['Boolean'];
+ taskChecklist: TaskChecklist;
+};
+
+export type DeleteTaskComment = {
+ commentID: Scalars['UUID'];
+};
+
+export type DeleteTaskCommentPayload = {
+ __typename?: 'DeleteTaskCommentPayload';
+ taskID: Scalars['UUID'];
+ commentID: Scalars['UUID'];
+};
+
+export type DeleteTaskGroupInput = {
+ taskGroupID: Scalars['UUID'];
+};
+
+export type DeleteTaskGroupPayload = {
+ __typename?: 'DeleteTaskGroupPayload';
+ ok: Scalars['Boolean'];
+ affectedRows: Scalars['Int'];
+ taskGroup: TaskGroup;
+};
+
+export type DeleteTaskGroupTasks = {
+ taskGroupID: Scalars['UUID'];
+};
+
+export type DeleteTaskGroupTasksPayload = {
+ __typename?: 'DeleteTaskGroupTasksPayload';
+ taskGroupID: Scalars['UUID'];
+ tasks: Array;
+};
+
+export type DeleteTaskInput = {
+ taskID: Scalars['UUID'];
+};
+
+export type DeleteTaskPayload = {
+ __typename?: 'DeleteTaskPayload';
+ taskID: Scalars['UUID'];
+};
+
+export type DeleteTeam = {
+ teamID: Scalars['UUID'];
+};
+
+export type DeleteTeamMember = {
+ teamID: Scalars['UUID'];
+ userID: Scalars['UUID'];
+ newOwnerID?: Maybe;
+};
+
+export type DeleteTeamMemberPayload = {
+ __typename?: 'DeleteTeamMemberPayload';
+ teamID: Scalars['UUID'];
+ userID: Scalars['UUID'];
+ affectedProjects: Array;
+};
+
+export type DeleteTeamPayload = {
+ __typename?: 'DeleteTeamPayload';
+ ok: Scalars['Boolean'];
+ team: Team;
+ projects: Array;
+};
+
+export type DeleteUserAccount = {
+ userID: Scalars['UUID'];
+ newOwnerID?: Maybe;
+};
+
+export type DeleteUserAccountPayload = {
+ __typename?: 'DeleteUserAccountPayload';
+ ok: Scalars['Boolean'];
+ userAccount: UserAccount;
+};
+
+export type DuplicateTaskGroup = {
+ projectID: Scalars['UUID'];
+ taskGroupID: Scalars['UUID'];
+ name: Scalars['String'];
+ position: Scalars['Float'];
+};
+
+export type DuplicateTaskGroupPayload = {
+ __typename?: 'DuplicateTaskGroupPayload';
+ taskGroup: TaskGroup;
+};
+
+export enum EntityType {
+ Task = 'TASK'
+}
+
+export type FindProject = {
+ projectID: Scalars['UUID'];
+};
+
+export type FindTask = {
+ taskID: Scalars['UUID'];
+};
+
+export type FindTeam = {
+ teamID: Scalars['UUID'];
+};
+
+export type FindUser = {
+ userID: Scalars['UUID'];
+};
+
+export type InviteProjectMembers = {
+ projectID: Scalars['UUID'];
+ members: Array;
+};
+
+export type InviteProjectMembersPayload = {
+ __typename?: 'InviteProjectMembersPayload';
+ ok: Scalars['Boolean'];
+ projectID: Scalars['UUID'];
+ members: Array;
+ invitedMembers: Array;
+};
+
+export type InvitedMember = {
+ __typename?: 'InvitedMember';
+ email: Scalars['String'];
+ invitedOn: Scalars['Time'];
+};
+
+export type InvitedUserAccount = {
+ __typename?: 'InvitedUserAccount';
+ id: Scalars['ID'];
+ email: Scalars['String'];
+ invitedOn: Scalars['Time'];
+ member: MemberList;
+};
+
+export type LabelColor = {
+ __typename?: 'LabelColor';
id: Scalars['ID'];
name: Scalars['String'];
position: Scalars['Float'];
- items: Array;
+ colorHex: Scalars['String'];
};
-export enum ShareStatus {
- Invited = 'INVITED',
- Joined = 'JOINED'
-}
+export type LogoutUser = {
+ userID: Scalars['UUID'];
+};
-export enum RoleLevel {
- Admin = 'ADMIN',
- Member = 'MEMBER'
-}
+export type MePayload = {
+ __typename?: 'MePayload';
+ user: UserAccount;
+ teamRoles: Array;
+ projectRoles: Array;
+};
-export enum ActionLevel {
- Org = 'ORG',
- Team = 'TEAM',
- Project = 'PROJECT'
-}
+export type Member = {
+ __typename?: 'Member';
+ id: Scalars['ID'];
+ role: Role;
+ fullName: Scalars['String'];
+ username: Scalars['String'];
+ profileIcon: ProfileIcon;
+ owned: OwnedList;
+ member: MemberList;
+};
-export enum ObjectType {
- Org = 'ORG',
- Team = 'TEAM',
- Project = 'PROJECT',
- Task = 'TASK',
- TaskGroup = 'TASK_GROUP',
- TaskChecklist = 'TASK_CHECKLIST',
- TaskChecklistItem = 'TASK_CHECKLIST_ITEM'
-}
+export type MemberInvite = {
+ userID?: Maybe;
+ email?: Maybe;
+};
-export type Query = {
- __typename?: 'Query';
- findProject: Project;
- findTask: Task;
- findTeam: Team;
- findUser: UserAccount;
- invitedUsers: Array;
- labelColors: Array;
- me: MePayload;
- myTasks: MyTasksPayload;
- notifications: Array;
- organizations: Array;
- projects: Array;
- searchMembers: Array;
- taskGroups: Array;
+export type MemberList = {
+ __typename?: 'MemberList';
teams: Array;
- users: Array;
+ projects: Array;
};
-
-export type QueryFindProjectArgs = {
- input: FindProject;
+export type MemberSearchFilter = {
+ searchFilter: Scalars['String'];
+ projectID?: Maybe;
};
-
-export type QueryFindTaskArgs = {
- input: FindTask;
-};
-
-
-export type QueryFindTeamArgs = {
- input: FindTeam;
-};
-
-
-export type QueryFindUserArgs = {
- input: FindUser;
-};
-
-
-export type QueryMyTasksArgs = {
- input: MyTasks;
-};
-
-
-export type QueryProjectsArgs = {
- input?: Maybe;
-};
-
-
-export type QuerySearchMembersArgs = {
- input: MemberSearchFilter;
+export type MemberSearchResult = {
+ __typename?: 'MemberSearchResult';
+ similarity: Scalars['Int'];
+ id: Scalars['String'];
+ user?: Maybe;
+ status: ShareStatus;
};
export type Mutation = {
@@ -688,6 +703,23 @@ export type MutationUpdateUserRoleArgs = {
input: UpdateUserRole;
};
+export type MyTasks = {
+ status: MyTasksStatus;
+ sort: MyTasksSort;
+};
+
+export type MyTasksPayload = {
+ __typename?: 'MyTasksPayload';
+ tasks: Array;
+ projects: Array;
+};
+
+export enum MyTasksSort {
+ None = 'NONE',
+ Project = 'PROJECT',
+ DueDate = 'DUE_DATE'
+}
+
export enum MyTasksStatus {
All = 'ALL',
Incomplete = 'INCOMPLETE',
@@ -699,79 +731,68 @@ export enum MyTasksStatus {
CompleteThreeWeek = 'COMPLETE_THREE_WEEK'
}
-export enum MyTasksSort {
- None = 'NONE',
- Project = 'PROJECT',
- DueDate = 'DUE_DATE'
-}
-
-export type MyTasks = {
- status: MyTasksStatus;
- sort: MyTasksSort;
-};
-
-export type ProjectTaskMapping = {
- __typename?: 'ProjectTaskMapping';
- projectID: Scalars['UUID'];
- taskID: Scalars['UUID'];
-};
-
-export type MyTasksPayload = {
- __typename?: 'MyTasksPayload';
- tasks: Array;
- projects: Array;
-};
-
-export type TeamRole = {
- __typename?: 'TeamRole';
- teamID: Scalars['UUID'];
- roleCode: RoleCode;
-};
-
-export type ProjectRole = {
- __typename?: 'ProjectRole';
- projectID: Scalars['UUID'];
- roleCode: RoleCode;
-};
-
-export type MePayload = {
- __typename?: 'MePayload';
- user: UserAccount;
- teamRoles: Array;
- projectRoles: Array;
-};
-
-export type ProjectsFilter = {
+export type NewProject = {
teamID?: Maybe;
+ name: Scalars['String'];
};
-export type FindUser = {
+export type NewProjectLabel = {
+ projectID: Scalars['UUID'];
+ labelColorID: Scalars['UUID'];
+ name?: Maybe;
+};
+
+export type NewRefreshToken = {
userID: Scalars['UUID'];
};
-export type FindProject = {
+export type NewTask = {
+ taskGroupID: Scalars['UUID'];
+ name: Scalars['String'];
+ position: Scalars['Float'];
+ assigned?: Maybe>;
+};
+
+export type NewTaskGroup = {
projectID: Scalars['UUID'];
+ name: Scalars['String'];
+ position: Scalars['Float'];
};
-export type FindTask = {
+export type NewTaskGroupLocation = {
+ taskGroupID: Scalars['UUID'];
+ position: Scalars['Float'];
+};
+
+export type NewTaskLocation = {
taskID: Scalars['UUID'];
+ taskGroupID: Scalars['UUID'];
+ position: Scalars['Float'];
};
-export type FindTeam = {
- teamID: Scalars['UUID'];
+export type NewTeam = {
+ name: Scalars['String'];
+ organizationID: Scalars['UUID'];
};
-export enum EntityType {
- Task = 'TASK'
-}
+export type NewUserAccount = {
+ username: Scalars['String'];
+ email: Scalars['String'];
+ fullName: Scalars['String'];
+ initials: Scalars['String'];
+ password: Scalars['String'];
+ roleCode: Scalars['String'];
+};
-export enum ActorType {
- User = 'USER'
-}
-
-export enum ActionType {
- TaskMemberAdded = 'TASK_MEMBER_ADDED'
-}
+export type Notification = {
+ __typename?: 'Notification';
+ id: Scalars['ID'];
+ entity: NotificationEntity;
+ actionType: ActionType;
+ actor: NotificationActor;
+ read: Scalars['Boolean'];
+ createdAt: Scalars['Time'];
+};
export type NotificationActor = {
__typename?: 'NotificationActor';
@@ -787,49 +808,308 @@ export type NotificationEntity = {
name: Scalars['String'];
};
-export type Notification = {
- __typename?: 'Notification';
+export enum ObjectType {
+ Org = 'ORG',
+ Team = 'TEAM',
+ Project = 'PROJECT',
+ Task = 'TASK',
+ TaskGroup = 'TASK_GROUP',
+ TaskChecklist = 'TASK_CHECKLIST',
+ TaskChecklistItem = 'TASK_CHECKLIST_ITEM'
+}
+
+export type Organization = {
+ __typename?: 'Organization';
+ id: Scalars['ID'];
+ name: Scalars['String'];
+};
+
+export type OwnedList = {
+ __typename?: 'OwnedList';
+ teams: Array;
+ projects: Array;
+};
+
+export type OwnersList = {
+ __typename?: 'OwnersList';
+ projects: Array;
+ teams: Array;
+};
+
+export type ProfileIcon = {
+ __typename?: 'ProfileIcon';
+ url?: Maybe;
+ initials?: Maybe;
+ bgColor?: Maybe;
+};
+
+export type Project = {
+ __typename?: 'Project';
id: Scalars['ID'];
- entity: NotificationEntity;
- actionType: ActionType;
- actor: NotificationActor;
- read: Scalars['Boolean'];
createdAt: Scalars['Time'];
-};
-
-export type NewProject = {
- teamID?: Maybe;
name: Scalars['String'];
+ team?: Maybe;
+ taskGroups: Array;
+ members: Array;
+ invitedMembers: Array;
+ labels: Array;
};
-export type UpdateProjectName = {
- projectID: Scalars['UUID'];
- name: Scalars['String'];
-};
-
-export type DeleteProject = {
- projectID: Scalars['UUID'];
-};
-
-export type DeleteProjectPayload = {
- __typename?: 'DeleteProjectPayload';
- ok: Scalars['Boolean'];
- project: Project;
-};
-
-export type NewProjectLabel = {
- projectID: Scalars['UUID'];
- labelColorID: Scalars['UUID'];
+export type ProjectLabel = {
+ __typename?: 'ProjectLabel';
+ id: Scalars['ID'];
+ createdDate: Scalars['Time'];
+ labelColor: LabelColor;
name?: Maybe;
};
-export type DeleteProjectLabel = {
+export type ProjectRole = {
+ __typename?: 'ProjectRole';
+ projectID: Scalars['UUID'];
+ roleCode: RoleCode;
+};
+
+export type ProjectTaskMapping = {
+ __typename?: 'ProjectTaskMapping';
+ projectID: Scalars['UUID'];
+ taskID: Scalars['UUID'];
+};
+
+export type ProjectsFilter = {
+ teamID?: Maybe;
+};
+
+export type Query = {
+ __typename?: 'Query';
+ findProject: Project;
+ findTask: Task;
+ findTeam: Team;
+ findUser: UserAccount;
+ invitedUsers: Array;
+ labelColors: Array;
+ me: MePayload;
+ myTasks: MyTasksPayload;
+ notifications: Array;
+ organizations: Array;
+ projects: Array;
+ searchMembers: Array;
+ taskGroups: Array;
+ teams: Array;
+ users: Array;
+};
+
+
+export type QueryFindProjectArgs = {
+ input: FindProject;
+};
+
+
+export type QueryFindTaskArgs = {
+ input: FindTask;
+};
+
+
+export type QueryFindTeamArgs = {
+ input: FindTeam;
+};
+
+
+export type QueryFindUserArgs = {
+ input: FindUser;
+};
+
+
+export type QueryMyTasksArgs = {
+ input: MyTasks;
+};
+
+
+export type QueryProjectsArgs = {
+ input?: Maybe;
+};
+
+
+export type QuerySearchMembersArgs = {
+ input: MemberSearchFilter;
+};
+
+export type RefreshToken = {
+ __typename?: 'RefreshToken';
+ id: Scalars['ID'];
+ userId: Scalars['UUID'];
+ expiresAt: Scalars['Time'];
+ createdAt: Scalars['Time'];
+};
+
+export type RemoveTaskLabelInput = {
+ taskID: Scalars['UUID'];
+ taskLabelID: Scalars['UUID'];
+};
+
+export type Role = {
+ __typename?: 'Role';
+ code: Scalars['String'];
+ name: Scalars['String'];
+};
+
+export enum RoleCode {
+ Owner = 'owner',
+ Admin = 'admin',
+ Member = 'member',
+ Observer = 'observer'
+}
+
+export enum RoleLevel {
+ Admin = 'ADMIN',
+ Member = 'MEMBER'
+}
+
+export type SetTaskChecklistItemComplete = {
+ taskChecklistItemID: Scalars['UUID'];
+ complete: Scalars['Boolean'];
+};
+
+export type SetTaskComplete = {
+ taskID: Scalars['UUID'];
+ complete: Scalars['Boolean'];
+};
+
+export enum ShareStatus {
+ Invited = 'INVITED',
+ Joined = 'JOINED'
+}
+
+export type SortTaskGroup = {
+ taskGroupID: Scalars['UUID'];
+ tasks: Array;
+};
+
+export type SortTaskGroupPayload = {
+ __typename?: 'SortTaskGroupPayload';
+ taskGroupID: Scalars['UUID'];
+ tasks: Array;
+};
+
+export type Task = {
+ __typename?: 'Task';
+ id: Scalars['ID'];
+ taskGroup: TaskGroup;
+ createdAt: Scalars['Time'];
+ name: Scalars['String'];
+ position: Scalars['Float'];
+ description?: Maybe;
+ dueDate?: Maybe;
+ hasTime: Scalars['Boolean'];
+ complete: Scalars['Boolean'];
+ completedAt?: Maybe;
+ assigned: Array;
+ labels: Array;
+ checklists: Array;
+ badges: TaskBadges;
+ activity: Array;
+ comments: Array;
+};
+
+export type TaskActivity = {
+ __typename?: 'TaskActivity';
+ id: Scalars['ID'];
+ type: ActivityType;
+ data: Array;
+ causedBy: CausedBy;
+ createdAt: Scalars['Time'];
+};
+
+export type TaskActivityData = {
+ __typename?: 'TaskActivityData';
+ name: Scalars['String'];
+ value: Scalars['String'];
+};
+
+export type TaskBadges = {
+ __typename?: 'TaskBadges';
+ checklist?: Maybe;
+};
+
+export type TaskChecklist = {
+ __typename?: 'TaskChecklist';
+ id: Scalars['ID'];
+ name: Scalars['String'];
+ position: Scalars['Float'];
+ items: Array;
+};
+
+export type TaskChecklistItem = {
+ __typename?: 'TaskChecklistItem';
+ id: Scalars['ID'];
+ name: Scalars['String'];
+ taskChecklistID: Scalars['UUID'];
+ complete: Scalars['Boolean'];
+ position: Scalars['Float'];
+ dueDate: Scalars['Time'];
+};
+
+export type TaskComment = {
+ __typename?: 'TaskComment';
+ id: Scalars['ID'];
+ createdAt: Scalars['Time'];
+ updatedAt?: Maybe;
+ message: Scalars['String'];
+ createdBy: CreatedBy;
+ pinned: Scalars['Boolean'];
+};
+
+export type TaskGroup = {
+ __typename?: 'TaskGroup';
+ id: Scalars['ID'];
+ projectID: Scalars['String'];
+ createdAt: Scalars['Time'];
+ name: Scalars['String'];
+ position: Scalars['Float'];
+ tasks: Array;
+};
+
+export type TaskLabel = {
+ __typename?: 'TaskLabel';
+ id: Scalars['ID'];
+ projectLabel: ProjectLabel;
+ assignedDate: Scalars['Time'];
+};
+
+export type TaskPositionUpdate = {
+ taskID: Scalars['UUID'];
+ position: Scalars['Float'];
+};
+
+export type Team = {
+ __typename?: 'Team';
+ id: Scalars['ID'];
+ createdAt: Scalars['Time'];
+ name: Scalars['String'];
+ members: Array;
+};
+
+export type TeamRole = {
+ __typename?: 'TeamRole';
+ teamID: Scalars['UUID'];
+ roleCode: RoleCode;
+};
+
+
+export type ToggleTaskLabelInput = {
+ taskID: Scalars['UUID'];
projectLabelID: Scalars['UUID'];
};
-export type UpdateProjectLabelName = {
- projectLabelID: Scalars['UUID'];
- name: Scalars['String'];
+export type ToggleTaskLabelPayload = {
+ __typename?: 'ToggleTaskLabelPayload';
+ active: Scalars['Boolean'];
+ task: Task;
+};
+
+
+export type UnassignTaskInput = {
+ taskID: Scalars['UUID'];
+ userID: Scalars['UUID'];
};
export type UpdateProjectLabel = {
@@ -843,44 +1123,9 @@ export type UpdateProjectLabelColor = {
labelColorID: Scalars['UUID'];
};
-export type DeleteInvitedProjectMember = {
- projectID: Scalars['UUID'];
- email: Scalars['String'];
-};
-
-export type DeleteInvitedProjectMemberPayload = {
- __typename?: 'DeleteInvitedProjectMemberPayload';
- invitedMember: InvitedMember;
-};
-
-export type MemberInvite = {
- userID?: Maybe;
- email?: Maybe;
-};
-
-export type InviteProjectMembers = {
- projectID: Scalars['UUID'];
- members: Array;
-};
-
-export type InviteProjectMembersPayload = {
- __typename?: 'InviteProjectMembersPayload';
- ok: Scalars['Boolean'];
- projectID: Scalars['UUID'];
- members: Array;
- invitedMembers: Array;
-};
-
-export type DeleteProjectMember = {
- projectID: Scalars['UUID'];
- userID: Scalars['UUID'];
-};
-
-export type DeleteProjectMemberPayload = {
- __typename?: 'DeleteProjectMemberPayload';
- ok: Scalars['Boolean'];
- member: Member;
- projectID: Scalars['UUID'];
+export type UpdateProjectLabelName = {
+ projectLabelID: Scalars['UUID'];
+ name: Scalars['String'];
};
export type UpdateProjectMemberRole = {
@@ -895,62 +1140,8 @@ export type UpdateProjectMemberRolePayload = {
member: Member;
};
-export type NewTask = {
- taskGroupID: Scalars['UUID'];
- name: Scalars['String'];
- position: Scalars['Float'];
- assigned?: Maybe>;
-};
-
-export type AssignTaskInput = {
- taskID: Scalars['UUID'];
- userID: Scalars['UUID'];
-};
-
-export type UnassignTaskInput = {
- taskID: Scalars['UUID'];
- userID: Scalars['UUID'];
-};
-
-export type UpdateTaskDescriptionInput = {
- taskID: Scalars['UUID'];
- description: Scalars['String'];
-};
-
-export type UpdateTaskLocationPayload = {
- __typename?: 'UpdateTaskLocationPayload';
- previousTaskGroupID: Scalars['UUID'];
- task: Task;
-};
-
-export type UpdateTaskDueDate = {
- taskID: Scalars['UUID'];
- hasTime: Scalars['Boolean'];
- dueDate?: Maybe;
-};
-
-export type SetTaskComplete = {
- taskID: Scalars['UUID'];
- complete: Scalars['Boolean'];
-};
-
-export type NewTaskLocation = {
- taskID: Scalars['UUID'];
- taskGroupID: Scalars['UUID'];
- position: Scalars['Float'];
-};
-
-export type DeleteTaskInput = {
- taskID: Scalars['UUID'];
-};
-
-export type DeleteTaskPayload = {
- __typename?: 'DeleteTaskPayload';
- taskID: Scalars['UUID'];
-};
-
-export type UpdateTaskName = {
- taskID: Scalars['UUID'];
+export type UpdateProjectName = {
+ projectID: Scalars['UUID'];
name: Scalars['String'];
};
@@ -967,6 +1158,11 @@ export type UpdateTaskChecklistItemLocationPayload = {
checklistItem: TaskChecklistItem;
};
+export type UpdateTaskChecklistItemName = {
+ taskChecklistItemID: Scalars['UUID'];
+ name: Scalars['String'];
+};
+
export type UpdateTaskChecklistLocation = {
taskChecklistID: Scalars['UUID'];
position: Scalars['Float'];
@@ -977,64 +1173,11 @@ export type UpdateTaskChecklistLocationPayload = {
checklist: TaskChecklist;
};
-export type CreateTaskChecklist = {
- taskID: Scalars['UUID'];
- name: Scalars['String'];
- position: Scalars['Float'];
-};
-
-export type DeleteTaskChecklistItemPayload = {
- __typename?: 'DeleteTaskChecklistItemPayload';
- ok: Scalars['Boolean'];
- taskChecklistItem: TaskChecklistItem;
-};
-
-export type CreateTaskChecklistItem = {
- taskChecklistID: Scalars['UUID'];
- name: Scalars['String'];
- position: Scalars['Float'];
-};
-
-export type SetTaskChecklistItemComplete = {
- taskChecklistItemID: Scalars['UUID'];
- complete: Scalars['Boolean'];
-};
-
-export type DeleteTaskChecklistItem = {
- taskChecklistItemID: Scalars['UUID'];
-};
-
-export type UpdateTaskChecklistItemName = {
- taskChecklistItemID: Scalars['UUID'];
- name: Scalars['String'];
-};
-
export type UpdateTaskChecklistName = {
taskChecklistID: Scalars['UUID'];
name: Scalars['String'];
};
-export type DeleteTaskChecklist = {
- taskChecklistID: Scalars['UUID'];
-};
-
-export type DeleteTaskChecklistPayload = {
- __typename?: 'DeleteTaskChecklistPayload';
- ok: Scalars['Boolean'];
- taskChecklist: TaskChecklist;
-};
-
-export type CreateTaskComment = {
- taskID: Scalars['UUID'];
- message: Scalars['String'];
-};
-
-export type CreateTaskCommentPayload = {
- __typename?: 'CreateTaskCommentPayload';
- taskID: Scalars['UUID'];
- comment: TaskComment;
-};
-
export type UpdateTaskComment = {
commentID: Scalars['UUID'];
message: Scalars['String'];
@@ -1046,57 +1189,15 @@ export type UpdateTaskCommentPayload = {
comment: TaskComment;
};
-export type DeleteTaskComment = {
- commentID: Scalars['UUID'];
-};
-
-export type DeleteTaskCommentPayload = {
- __typename?: 'DeleteTaskCommentPayload';
+export type UpdateTaskDescriptionInput = {
taskID: Scalars['UUID'];
- commentID: Scalars['UUID'];
+ description: Scalars['String'];
};
-export type DeleteTaskGroupTasks = {
- taskGroupID: Scalars['UUID'];
-};
-
-export type DeleteTaskGroupTasksPayload = {
- __typename?: 'DeleteTaskGroupTasksPayload';
- taskGroupID: Scalars['UUID'];
- tasks: Array;
-};
-
-export type TaskPositionUpdate = {
+export type UpdateTaskDueDate = {
taskID: Scalars['UUID'];
- position: Scalars['Float'];
-};
-
-export type SortTaskGroupPayload = {
- __typename?: 'SortTaskGroupPayload';
- taskGroupID: Scalars['UUID'];
- tasks: Array;
-};
-
-export type SortTaskGroup = {
- taskGroupID: Scalars['UUID'];
- tasks: Array;
-};
-
-export type DuplicateTaskGroup = {
- projectID: Scalars['UUID'];
- taskGroupID: Scalars['UUID'];
- name: Scalars['String'];
- position: Scalars['Float'];
-};
-
-export type DuplicateTaskGroupPayload = {
- __typename?: 'DuplicateTaskGroupPayload';
- taskGroup: TaskGroup;
-};
-
-export type NewTaskGroupLocation = {
- taskGroupID: Scalars['UUID'];
- position: Scalars['Float'];
+ hasTime: Scalars['Boolean'];
+ dueDate?: Maybe;
};
export type UpdateTaskGroupName = {
@@ -1104,82 +1205,15 @@ export type UpdateTaskGroupName = {
name: Scalars['String'];
};
-export type DeleteTaskGroupInput = {
- taskGroupID: Scalars['UUID'];
-};
-
-export type DeleteTaskGroupPayload = {
- __typename?: 'DeleteTaskGroupPayload';
- ok: Scalars['Boolean'];
- affectedRows: Scalars['Int'];
- taskGroup: TaskGroup;
-};
-
-export type NewTaskGroup = {
- projectID: Scalars['UUID'];
- name: Scalars['String'];
- position: Scalars['Float'];
-};
-
-export type AddTaskLabelInput = {
- taskID: Scalars['UUID'];
- projectLabelID: Scalars['UUID'];
-};
-
-export type RemoveTaskLabelInput = {
- taskID: Scalars['UUID'];
- taskLabelID: Scalars['UUID'];
-};
-
-export type ToggleTaskLabelInput = {
- taskID: Scalars['UUID'];
- projectLabelID: Scalars['UUID'];
-};
-
-export type ToggleTaskLabelPayload = {
- __typename?: 'ToggleTaskLabelPayload';
- active: Scalars['Boolean'];
+export type UpdateTaskLocationPayload = {
+ __typename?: 'UpdateTaskLocationPayload';
+ previousTaskGroupID: Scalars['UUID'];
task: Task;
};
-export type NewTeam = {
+export type UpdateTaskName = {
+ taskID: Scalars['UUID'];
name: Scalars['String'];
- organizationID: Scalars['UUID'];
-};
-
-export type DeleteTeam = {
- teamID: Scalars['UUID'];
-};
-
-export type DeleteTeamPayload = {
- __typename?: 'DeleteTeamPayload';
- ok: Scalars['Boolean'];
- team: Team;
- projects: Array;
-};
-
-export type DeleteTeamMember = {
- teamID: Scalars['UUID'];
- userID: Scalars['UUID'];
- newOwnerID?: Maybe;
-};
-
-export type DeleteTeamMemberPayload = {
- __typename?: 'DeleteTeamMemberPayload';
- teamID: Scalars['UUID'];
- userID: Scalars['UUID'];
- affectedProjects: Array;
-};
-
-export type CreateTeamMember = {
- userID: Scalars['UUID'];
- teamID: Scalars['UUID'];
-};
-
-export type CreateTeamMemberPayload = {
- __typename?: 'CreateTeamMemberPayload';
- team: Team;
- teamMember: Member;
};
export type UpdateTeamMemberRole = {
@@ -1195,33 +1229,6 @@ export type UpdateTeamMemberRolePayload = {
member: Member;
};
-export type DeleteInvitedUserAccount = {
- invitedUserID: Scalars['UUID'];
-};
-
-export type DeleteInvitedUserAccountPayload = {
- __typename?: 'DeleteInvitedUserAccountPayload';
- invitedUser: InvitedUserAccount;
-};
-
-export type MemberSearchFilter = {
- searchFilter: Scalars['String'];
- projectID?: Maybe;
-};
-
-export type MemberSearchResult = {
- __typename?: 'MemberSearchResult';
- similarity: Scalars['Int'];
- id: Scalars['String'];
- user?: Maybe;
- status: ShareStatus;
-};
-
-export type UpdateUserInfoPayload = {
- __typename?: 'UpdateUserInfoPayload';
- user: UserAccount;
-};
-
export type UpdateUserInfo = {
name: Scalars['String'];
initials: Scalars['String'];
@@ -1229,6 +1236,11 @@ export type UpdateUserInfo = {
bio: Scalars['String'];
};
+export type UpdateUserInfoPayload = {
+ __typename?: 'UpdateUserInfoPayload';
+ user: UserAccount;
+};
+
export type UpdateUserPassword = {
userID: Scalars['UUID'];
password: Scalars['String'];
@@ -1250,32 +1262,20 @@ export type UpdateUserRolePayload = {
user: UserAccount;
};
-export type NewRefreshToken = {
- userID: Scalars['UUID'];
-};
-export type NewUserAccount = {
- username: Scalars['String'];
+export type UserAccount = {
+ __typename?: 'UserAccount';
+ id: Scalars['ID'];
email: Scalars['String'];
+ createdAt: Scalars['Time'];
fullName: Scalars['String'];
initials: Scalars['String'];
- password: Scalars['String'];
- roleCode: Scalars['String'];
-};
-
-export type LogoutUser = {
- userID: Scalars['UUID'];
-};
-
-export type DeleteUserAccount = {
- userID: Scalars['UUID'];
- newOwnerID?: Maybe;
-};
-
-export type DeleteUserAccountPayload = {
- __typename?: 'DeleteUserAccountPayload';
- ok: Scalars['Boolean'];
- userAccount: UserAccount;
+ bio: Scalars['String'];
+ role: Role;
+ username: Scalars['String'];
+ profileIcon: ProfileIcon;
+ owned: OwnedList;
+ member: MemberList;
};
export type AssignTaskMutationVariables = Exact<{
@@ -1727,7 +1727,7 @@ export type DeleteProjectMemberMutation = (
export type InviteProjectMembersMutationVariables = Exact<{
projectID: Scalars['UUID'];
- members: Array;
+ members: Array | MemberInvite;
}>;
@@ -1780,7 +1780,7 @@ export type CreateTaskMutationVariables = Exact<{
taskGroupID: Scalars['UUID'];
name: Scalars['String'];
position: Scalars['Float'];
- assigned?: Maybe>;
+ assigned?: Maybe | Scalars['UUID']>;
}>;
@@ -2049,7 +2049,7 @@ export type DuplicateTaskGroupMutation = (
);
export type SortTaskGroupMutationVariables = Exact<{
- tasks: Array;
+ tasks: Array | TaskPositionUpdate;
taskGroupID: Scalars['UUID'];
}>;
@@ -2680,7 +2680,7 @@ export const AssignTaskDocument = gql`
}
}
`;
-export type AssignTaskMutationFn = ApolloReactCommon.MutationFunction;
+export type AssignTaskMutationFn = Apollo.MutationFunction;
/**
* __useAssignTaskMutation__
@@ -2700,12 +2700,13 @@ export type AssignTaskMutationFn = ApolloReactCommon.MutationFunction) {
- return ApolloReactHooks.useMutation(AssignTaskDocument, baseOptions);
+export function useAssignTaskMutation(baseOptions?: Apollo.MutationHookOptions) {
+ const options = {...defaultOptions, ...baseOptions}
+ return Apollo.useMutation(AssignTaskDocument, options);
}
export type AssignTaskMutationHookResult = ReturnType;
-export type AssignTaskMutationResult = ApolloReactCommon.MutationResult;
-export type AssignTaskMutationOptions = ApolloReactCommon.BaseMutationOptions;
+export type AssignTaskMutationResult = Apollo.MutationResult;
+export type AssignTaskMutationOptions = Apollo.BaseMutationOptions;
export const ClearProfileAvatarDocument = gql`
mutation clearProfileAvatar {
clearProfileAvatar {
@@ -2719,7 +2720,7 @@ export const ClearProfileAvatarDocument = gql`
}
}
`;
-export type ClearProfileAvatarMutationFn = ApolloReactCommon.MutationFunction;
+export type ClearProfileAvatarMutationFn = Apollo.MutationFunction;
/**
* __useClearProfileAvatarMutation__
@@ -2737,12 +2738,13 @@ export type ClearProfileAvatarMutationFn = ApolloReactCommon.MutationFunction) {
- return ApolloReactHooks.useMutation(ClearProfileAvatarDocument, baseOptions);
+export function useClearProfileAvatarMutation(baseOptions?: Apollo.MutationHookOptions) {
+ const options = {...defaultOptions, ...baseOptions}
+ return Apollo.useMutation(ClearProfileAvatarDocument, options);
}
export type ClearProfileAvatarMutationHookResult = ReturnType;
-export type ClearProfileAvatarMutationResult = ApolloReactCommon.MutationResult;
-export type ClearProfileAvatarMutationOptions = ApolloReactCommon.BaseMutationOptions;
+export type ClearProfileAvatarMutationResult = Apollo.MutationResult;
+export type ClearProfileAvatarMutationOptions = Apollo.BaseMutationOptions;
export const CreateProjectDocument = gql`
mutation createProject($teamID: UUID, $name: String!) {
createProject(input: {teamID: $teamID, name: $name}) {
@@ -2755,7 +2757,7 @@ export const CreateProjectDocument = gql`
}
}
`;
-export type CreateProjectMutationFn = ApolloReactCommon.MutationFunction;
+export type CreateProjectMutationFn = Apollo.MutationFunction;
/**
* __useCreateProjectMutation__
@@ -2775,12 +2777,13 @@ export type CreateProjectMutationFn = ApolloReactCommon.MutationFunction) {
- return ApolloReactHooks.useMutation(CreateProjectDocument, baseOptions);
+export function useCreateProjectMutation(baseOptions?: Apollo.MutationHookOptions) {
+ const options = {...defaultOptions, ...baseOptions}
+ return Apollo.useMutation(CreateProjectDocument, options);
}
export type CreateProjectMutationHookResult = ReturnType;
-export type CreateProjectMutationResult = ApolloReactCommon.MutationResult;
-export type CreateProjectMutationOptions = ApolloReactCommon.BaseMutationOptions;
+export type CreateProjectMutationResult = Apollo.MutationResult;
+export type CreateProjectMutationOptions = Apollo.BaseMutationOptions;
export const CreateProjectLabelDocument = gql`
mutation createProjectLabel($projectID: UUID!, $labelColorID: UUID!, $name: String!) {
createProjectLabel(
@@ -2798,7 +2801,7 @@ export const CreateProjectLabelDocument = gql`
}
}
`;
-export type CreateProjectLabelMutationFn = ApolloReactCommon.MutationFunction;
+export type CreateProjectLabelMutationFn = Apollo.MutationFunction;
/**
* __useCreateProjectLabelMutation__
@@ -2819,12 +2822,13 @@ export type CreateProjectLabelMutationFn = ApolloReactCommon.MutationFunction) {
- return ApolloReactHooks.useMutation(CreateProjectLabelDocument, baseOptions);
+export function useCreateProjectLabelMutation(baseOptions?: Apollo.MutationHookOptions) {
+ const options = {...defaultOptions, ...baseOptions}
+ return Apollo.useMutation(CreateProjectLabelDocument, options);
}
export type CreateProjectLabelMutationHookResult = ReturnType;
-export type CreateProjectLabelMutationResult = ApolloReactCommon.MutationResult;
-export type CreateProjectLabelMutationOptions = ApolloReactCommon.BaseMutationOptions;
+export type CreateProjectLabelMutationResult = Apollo.MutationResult;
+export type CreateProjectLabelMutationOptions = Apollo.BaseMutationOptions;
export const CreateTaskGroupDocument = gql`
mutation createTaskGroup($projectID: UUID!, $name: String!, $position: Float!) {
createTaskGroup(
@@ -2836,7 +2840,7 @@ export const CreateTaskGroupDocument = gql`
}
}
`;
-export type CreateTaskGroupMutationFn = ApolloReactCommon.MutationFunction;
+export type CreateTaskGroupMutationFn = Apollo.MutationFunction;
/**
* __useCreateTaskGroupMutation__
@@ -2857,12 +2861,13 @@ export type CreateTaskGroupMutationFn = ApolloReactCommon.MutationFunction) {
- return ApolloReactHooks.useMutation(CreateTaskGroupDocument, baseOptions);
+export function useCreateTaskGroupMutation(baseOptions?: Apollo.MutationHookOptions) {
+ const options = {...defaultOptions, ...baseOptions}
+ return Apollo.useMutation(CreateTaskGroupDocument, options);
}
export type CreateTaskGroupMutationHookResult = ReturnType;
-export type CreateTaskGroupMutationResult = ApolloReactCommon.MutationResult;
-export type CreateTaskGroupMutationOptions = ApolloReactCommon.BaseMutationOptions;
+export type CreateTaskGroupMutationResult = Apollo.MutationResult;
+export type CreateTaskGroupMutationOptions = Apollo.BaseMutationOptions;
export const DeleteProjectLabelDocument = gql`
mutation deleteProjectLabel($projectLabelID: UUID!) {
deleteProjectLabel(input: {projectLabelID: $projectLabelID}) {
@@ -2870,7 +2875,7 @@ export const DeleteProjectLabelDocument = gql`
}
}
`;
-export type DeleteProjectLabelMutationFn = ApolloReactCommon.MutationFunction;
+export type DeleteProjectLabelMutationFn = Apollo.MutationFunction;
/**
* __useDeleteProjectLabelMutation__
@@ -2889,12 +2894,13 @@ export type DeleteProjectLabelMutationFn = ApolloReactCommon.MutationFunction) {
- return ApolloReactHooks.useMutation(DeleteProjectLabelDocument, baseOptions);
+export function useDeleteProjectLabelMutation(baseOptions?: Apollo.MutationHookOptions) {
+ const options = {...defaultOptions, ...baseOptions}
+ return Apollo.useMutation(DeleteProjectLabelDocument, options);
}
export type DeleteProjectLabelMutationHookResult = ReturnType;
-export type DeleteProjectLabelMutationResult = ApolloReactCommon.MutationResult;
-export type DeleteProjectLabelMutationOptions = ApolloReactCommon.BaseMutationOptions;
+export type DeleteProjectLabelMutationResult = Apollo.MutationResult;
+export type DeleteProjectLabelMutationOptions = Apollo.BaseMutationOptions;
export const DeleteTaskDocument = gql`
mutation deleteTask($taskID: UUID!) {
deleteTask(input: {taskID: $taskID}) {
@@ -2902,7 +2908,7 @@ export const DeleteTaskDocument = gql`
}
}
`;
-export type DeleteTaskMutationFn = ApolloReactCommon.MutationFunction;
+export type DeleteTaskMutationFn = Apollo.MutationFunction;
/**
* __useDeleteTaskMutation__
@@ -2921,12 +2927,13 @@ export type DeleteTaskMutationFn = ApolloReactCommon.MutationFunction) {
- return ApolloReactHooks.useMutation