Compare commits

...

3 Commits

Author SHA1 Message Date
Cursor Agent
e70e39f253 Add storybook-addon-mock to stories for better mocking support
Co-authored-by: florian <florian@gdevelop.io>
2025-08-25 18:44:46 +00:00
Clément Pasteau
cc75db6d09 Fix crash when accessing an owned archived product in the store (#7789)
Do not show in changelog
2025-08-25 17:03:30 +02:00
Florian Rival
48d35a50b5 Fix wrong redirection to AI tab when using initial-dialog=ask-ai in the web-app 2025-08-15 11:06:40 +02:00
16 changed files with 33 additions and 20 deletions

View File

@@ -18,6 +18,5 @@ module.exports = {
},
},
'@storybook/preset-create-react-app',
'storybook-addon-mock',
],
};

View File

@@ -202,7 +202,9 @@ const PrivateAssetPackInformationPage = ({
CreditsPackageStoreContext
);
const [selectedUsageType, setSelectedUsageType] = React.useState<string>(
privateAssetPackListingData.prices[0].usageType
privateAssetPackListingData.prices.length
? privateAssetPackListingData.prices[0].usageType
: ''
);
const [
purchasingPrivateAssetPackListingData,
@@ -235,9 +237,7 @@ const PrivateAssetPackInformationPage = ({
const userAssetPackPurchaseUsageType = React.useMemo(
() =>
getUserProductPurchaseUsageType({
productId: privateAssetPackListingData
? privateAssetPackListingData.id
: null,
productId: privateAssetPackListingData.id,
receivedProducts: [
...(receivedAssetPacks || []),
...(receivedBundles || []),

View File

@@ -170,7 +170,9 @@ const PrivateGameTemplateInformationPage = ({
null
);
const [selectedUsageType, setSelectedUsageType] = React.useState<string>(
privateGameTemplateListingData.prices[0].usageType
privateGameTemplateListingData.prices.length
? privateGameTemplateListingData.prices[0].usageType
: ''
);
const [
purchasingPrivateGameTemplateListingData,
@@ -202,9 +204,7 @@ const PrivateGameTemplateInformationPage = ({
const userGameTemplatePurchaseUsageType = React.useMemo(
() =>
getUserProductPurchaseUsageType({
productId: privateGameTemplateListingData
? privateGameTemplateListingData.id
: null,
productId: privateGameTemplateListingData.id,
receivedProducts: [
...(receivedGameTemplates || []),
...(receivedBundles || []),

View File

@@ -85,6 +85,7 @@ const useOpenInitialDialog = ({
aiRequestId: null,
paneIdentifier: 'center',
});
removeRouteArguments(['initial-dialog']);
break;
default:
break;

View File

@@ -1,5 +1,6 @@
// @flow
import * as React from 'react';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../../PaperDecorator';
import { AssetDetails } from '../../../../AssetStore/AssetDetails';
@@ -15,7 +16,7 @@ import { AssetStoreNavigatorStateProvider } from '../../../../AssetStore/AssetSt
export default {
title: 'AssetStore/AssetStore/AssetDetails',
component: AssetDetails,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
const Wrapper = ({ children }: {| children: React.Node |}) => {

View File

@@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../../PaperDecorator';
import AssetPackInstallDialog from '../../../../AssetStore/AssetPackInstallDialog';
@@ -23,7 +24,7 @@ import { AssetStoreNavigatorStateProvider } from '../../../../AssetStore/AssetSt
export default {
title: 'AssetStore/AssetStore/AssetPackInstallDialog',
component: AssetPackInstallDialog,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
const mockApiDataForPublicAssets = [

View File

@@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../../PaperDecorator';
import FixedHeightFlexContainer from '../../../FixedHeightFlexContainer';
import { AssetStoreStateProvider } from '../../../../AssetStore/AssetStoreContext';
@@ -15,7 +16,7 @@ import { AssetStoreNavigatorStateProvider } from '../../../../AssetStore/AssetSt
export default {
title: 'AssetStore/AssetStore',
component: AssetStore,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
const apiDataServerSideError = {

View File

@@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../../PaperDecorator';
import { testProject } from '../../../GDevelopJsInitializerDecorator';
@@ -20,7 +21,7 @@ import {
export default {
title: 'AssetStore/ExtensionStore/ExtensionInstallDialog',
component: ExtensionInstallDialog,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
const apiDataServerSideError = {

View File

@@ -2,6 +2,7 @@
import * as React from 'react';
import { I18n } from '@lingui/react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../../PaperDecorator';
import { ExtensionStore } from '../../../../AssetStore/ExtensionStore';
@@ -18,7 +19,7 @@ import PreferencesContext, {
export default {
title: 'AssetStore/ExtensionStore',
component: ExtensionStore,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
const apiDataServerSideError = {

View File

@@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../../PaperDecorator';
import ExtensionsSearchDialog from '../../../../AssetStore/ExtensionStore/ExtensionsSearchDialog';
@@ -14,7 +15,7 @@ import { fakeExtensionsRegistry } from '../../../../fixtures/GDevelopServicesTes
export default {
title: 'AssetStore/ExtensionStore/ExtensionSearchDialog',
component: ExtensionsSearchDialog,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
const apiDataServerSideError = {

View File

@@ -1,5 +1,6 @@
// @flow
import * as React from 'react';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../PaperDecorator';
@@ -17,7 +18,7 @@ import { GDevelopGameApi } from '../../Utils/GDevelopServices/ApiConfigs';
export default {
title: 'GameDashboard/GameRegistration',
component: GameRegistration,
decorators: [paperDecorator, GDevelopJsInitializerDecorator],
decorators: [paperDecorator, GDevelopJsInitializerDecorator, withMock],
};
export const NoProjectLoaded = () => (

View File

@@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import { HomePage } from '../../../MainFrame/EditorContainers/HomePage';
import GDevelopJsInitializerDecorator, {
testProject,
@@ -161,7 +162,7 @@ const WrappedHomePage = ({
export default {
title: 'HomePage',
component: WrappedHomePage,
decorators: [GDevelopJsInitializerDecorator, inAppTutorialDecorator],
decorators: [GDevelopJsInitializerDecorator, inAppTutorialDecorator, withMock],
};
export const BuildSectionLoading = () => (

View File

@@ -3,6 +3,7 @@
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import { I18n } from '@lingui/react';
import withMock from 'storybook-addon-mock';
// Keep first as it creates the `global.gd` object:
import { testProject } from '../../GDevelopJsInitializerDecorator';
@@ -20,6 +21,7 @@ import PreferencesContext, {
export default {
title: 'ObjectEditor/NewBehaviorDialog',
component: NewBehaviorDialog,
decorators: [withMock],
};
const apiDataServerSideError = {

View File

@@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../PaperDecorator';
import ProjectGeneratingDialog from '../../../ProjectCreation/ProjectGeneratingDialog';
@@ -12,7 +13,7 @@ import { fakeSilverAuthenticatedUser } from '../../../fixtures/GDevelopServicesT
export default {
title: 'Project Creation/ProjectGeneratingDialog',
component: ProjectGeneratingDialog,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
export const Generating = () => {

View File

@@ -1,6 +1,7 @@
// @flow
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../PaperDecorator';
import { OnlineGameLink } from '../../../ExportAndShare/GenericExporters/OnlineWebExport';
@@ -16,7 +17,7 @@ import { GDevelopGameApi } from '../../../Utils/GDevelopServices/ApiConfigs';
export default {
title: 'Share/OnlineGameLink',
component: OnlineGameLink,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
parameters: {
mockData: [
{

View File

@@ -1,5 +1,6 @@
// @flow
import * as React from 'react';
import withMock from 'storybook-addon-mock';
import paperDecorator from '../../../PaperDecorator';
import InviteHome from '../../../../ExportAndShare/ShareDialog/InviteHome';
@@ -42,7 +43,7 @@ const notOwnedProjectId = 'not-owned-project-id';
export default {
title: 'Share/InviteHome',
component: InviteHome,
decorators: [paperDecorator],
decorators: [paperDecorator, withMock],
};
export const NotLoggedInOrOffline = () => {