Skip to content

Commit

Permalink
[2984] Handle succesPayload messages in Deck
Browse files Browse the repository at this point in the history
Bug: #2984
Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
Signed-off-by: Florian ROUËNÉ <florian.rouene@obeosoft.com>
  • Loading branch information
florianbarbin authored and frouene committed Jan 25, 2024
1 parent e67a4bc commit d948996
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 25 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Expand Up @@ -16,6 +16,7 @@

=== Bug fixes

- https://github.com/eclipse-sirius/sirius-web/issues/2984[#2984] [deck] Handle successPayload messages in Deck representation.

=== New Features

Expand Down
1 change: 1 addition & 0 deletions packages/core/frontend/sirius-components-core/src/index.ts
Expand Up @@ -18,6 +18,7 @@ export * from './contexts/ServerContext.types';
export * from './contexts/ToastContext';
export * from './contexts/ToastContext.types';
export * from './dataTransferTypes';
export * from './graphql/GQLTypes.types';
export * from './icon/IconOverlay';
export * from './materialui';
export * from './modals/share-representation/ShareRepresentationModal';
Expand Down
Expand Up @@ -20,7 +20,7 @@ import {
} from '@eclipse-sirius/sirius-components-core';
import Typography from '@material-ui/core/Typography';
import { makeStyles } from '@material-ui/core/styles';
import { useCallback, useEffect, useState } from 'react';
import { useEffect, useState } from 'react';
import { Deck } from '../Deck';
import { Card, CardMetadata } from '../Deck.types';
import { convertToTrelloDeckData } from '../utils/deckGQLConverter';
Expand All @@ -37,12 +37,16 @@ import {
GQLCreateCardData,
GQLCreateCardVariables,
GQLCreateDeckCardInput,
GQLCreateDeckCardPayload,
GQLDeleteCardData,
GQLDeleteCardVariables,
GQLDeleteDeckCardInput,
GQLDeleteDeckCardPayload,
GQLEditCardData,
GQLEditCardVariables,
GQLEditDeckCardInput,
GQLEditDeckCardPayload,
GQLSuccessPayload,
} from './deckMutation.types';

import { createCardMutation, deleteCardMutation, editCardMutation } from './deckMutation';
Expand All @@ -59,6 +63,9 @@ const isDeckRefreshedEventPayload = (payload: GQLDeckEventPayload): payload is G
const isErrorPayload = (payload: GQLDeckEventPayload): payload is GQLErrorPayload =>
payload.__typename === 'ErrorPayload';
const isStandardErrorPayload = (field): field is GQLErrorPayload => field.__typename === 'ErrorPayload';
const isSuccessPayload = (
payload: GQLDeleteDeckCardPayload | GQLEditDeckCardPayload | GQLCreateDeckCardPayload
): payload is GQLSuccessPayload => payload.__typename === 'SuccessPayload';

export const DeckRepresentation = ({ editingContextId, representationId }: RepresentationComponentProps) => {
const classes = useDeckRepresentationStyles();
Expand Down Expand Up @@ -137,39 +144,40 @@ export const DeckRepresentation = ({ editingContextId, representationId }: Repre
});
}
}, [selection]);
const handleError = useCallback(
(loading: boolean, data, error: ApolloError | undefined) => {
if (!loading) {
if (error) {
addErrorMessage(error.message);
}
if (data) {
const keys = Object.keys(data);
if (keys.length > 0) {
const firstKey = keys[0];
if (firstKey) {
const firstField = data[firstKey];
if (isStandardErrorPayload(firstField)) {
const { messages } = firstField;
addMessages(messages);
}
const handleError = (
loading: boolean,
data: GQLEditCardData | GQLDeleteCardData | GQLCreateCardData | null | undefined,
error: ApolloError | undefined
) => {
if (!loading) {
if (error) {
addErrorMessage(error.message);
}
if (data) {
const keys = Object.keys(data);
if (keys.length > 0) {
const firstKey = keys[0];
if (firstKey) {
const firstField = data[firstKey];
if (isStandardErrorPayload(firstField) || isSuccessPayload(firstField)) {
const { messages } = firstField;
addMessages(messages);
}
}
}
}
},
[addErrorMessage, addMessages]
);
}
};

useEffect(() => {
handleError(deleteDeckCardLoading, deleteDeckCardData, deleteDeckCardError);
}, [deleteDeckCardLoading, deleteDeckCardData, deleteDeckCardError, handleError]);
}, [deleteDeckCardLoading, deleteDeckCardData, deleteDeckCardError]);
useEffect(() => {
handleError(editCardLoading, editCardData, editCardError);
}, [editCardLoading, editCardData, editCardError, handleError]);
}, [editCardLoading, editCardData, editCardError]);
useEffect(() => {
handleError(createCardLoading, createCardData, createCardError);
}, [createCardLoading, createCardData, createCardError, handleError]);
}, [createCardLoading, createCardData, createCardError]);

const handleEditCard = (_laneId: string, card: Card) => {
const input: GQLEditDeckCardInput = {
Expand Down
Expand Up @@ -22,6 +22,12 @@ export const deleteCardMutation = gql`
level
}
}
... on SuccessPayload {
messages {
body
level
}
}
}
}
`;
Expand All @@ -36,6 +42,12 @@ export const editCardMutation = gql`
level
}
}
... on SuccessPayload {
messages {
body
level
}
}
}
}
`;
Expand All @@ -50,6 +62,12 @@ export const createCardMutation = gql`
level
}
}
... on SuccessPayload {
messages {
body
level
}
}
}
}
`;
Expand Up @@ -11,25 +11,31 @@
* Obeo - initial API and implementation
*******************************************************************************/

import { GQLMessage } from '@eclipse-sirius/sirius-components-core';

export interface GQLDeleteCardVariables {
input: GQLDeleteDeckCardInput;
}

export interface GQLDeleteDeckCardInput {
id: string;
editingContextId: string;
representationId: string;
cardId: string;
}

export interface GQLDeleteCardData {
deleteDeckCard: GQLDeleteDeckCardPayload;
}

export interface GQLDeleteDeckCardPayload {
__typename: string;
}

export interface GQLEditCardVariables {
input: GQLEditDeckCardInput;
}

export interface GQLEditDeckCardInput {
id: string;
editingContextId: string;
Expand All @@ -39,16 +45,19 @@ export interface GQLEditDeckCardInput {
newDescription: string;
newLabel: string;
}

export interface GQLEditCardData {
editDeckCard: GQLEditDeckCardPayload;
}

export interface GQLEditDeckCardPayload {
__typename: string;
}

export interface GQLCreateCardVariables {
input: GQLCreateDeckCardInput;
}

export interface GQLCreateDeckCardInput {
id: string;
editingContextId: string;
Expand All @@ -58,9 +67,15 @@ export interface GQLCreateDeckCardInput {
label: string;
description: string;
}

export interface GQLCreateCardData {
createCard: GQLCreateDeckCardPayload;
}

export interface GQLCreateDeckCardPayload {
__typename: string;
}

export interface GQLSuccessPayload extends GQLCreateDeckCardPayload, GQLDeleteDeckCardPayload, GQLEditDeckCardPayload {
messages: GQLMessage[];
}
Expand Up @@ -10,7 +10,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
import { GQLMessage } from '@eclipse-sirius/sirius-components-core/src/graphql/GQLTypes.types';
import { GQLMessage } from '@eclipse-sirius/sirius-components-core';

export interface GQLDeckEventSubscription {
deckEvent: GQLDeckEventPayload;
Expand Down
Expand Up @@ -11,7 +11,7 @@
* Obeo - initial API and implementation
*******************************************************************************/
import { Task } from '@ObeoNetwork/gantt-task-react';
import { GQLMessage } from '@eclipse-sirius/sirius-components-core/src/graphql/GQLTypes.types';
import { GQLMessage } from '@eclipse-sirius/sirius-components-core';

export interface GQLGanttEventSubscription {
ganttEvent: GQLGanttEventPayload;
Expand Down Expand Up @@ -84,6 +84,7 @@ export interface GQLTaskDetail {
progress: number;
computeStartEndDynamically: boolean;
}

export interface GQLTaskStyle {
labelColor: string;
backgroundColor: string;
Expand Down

0 comments on commit d948996

Please sign in to comment.