Array fallback fixes (#1219)

* Array fallback fixes

* Update snapshots & changelog
This commit is contained in:
Jakub Majorek 2021-07-07 16:09:35 +02:00 committed by GitHub
parent 3f378087a4
commit b3c5d73136
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 97 additions and 97 deletions

View file

@ -60,6 +60,7 @@ All notable, unreleased changes to this project will be documented in this file.
- Fix duplicated labels in column picker - #1197 by @orzechdev - Fix duplicated labels in column picker - #1197 by @orzechdev
- Fix forbidden null sending as attribute value - #1201 by @orzechdev - Fix forbidden null sending as attribute value - #1201 by @orzechdev
- Fix missing call for update metadata mutation - #1207 by @orzechdev - Fix missing call for update metadata mutation - #1207 by @orzechdev
- Fix order links on home page - #1219 by @jwm0
# 2.11.1 # 2.11.1

View file

@ -154,7 +154,7 @@ export const mergeChoicesWithValues = (
| PageDetails_page_attributes | PageDetails_page_attributes
| SelectedVariantAttributeFragment | SelectedVariantAttributeFragment
) => { ) => {
const choices = mapEdgesToItems(attribute.attribute.choices); const choices = mapEdgesToItems(attribute.attribute.choices) || [];
const valuesToConcat = attribute.values.filter( const valuesToConcat = attribute.values.filter(
value => !choices.some(choice => choice.id === value.id) value => !choices.some(choice => choice.id === value.id)
); );

View file

@ -2,7 +2,7 @@ import { Button, Typography } from "@material-ui/core";
import AppHeader from "@saleor/components/AppHeader"; import AppHeader from "@saleor/components/AppHeader";
import Container from "@saleor/components/Container"; import Container from "@saleor/components/Container";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { renderCollection } from "@saleor/misc"; import { getStringOrPlaceholder, renderCollection } from "@saleor/misc";
import { makeStyles } from "@saleor/theme"; import { makeStyles } from "@saleor/theme";
import React from "react"; import React from "react";
import { defineMessages, useIntl } from "react-intl"; import { defineMessages, useIntl } from "react-intl";
@ -86,7 +86,9 @@ const CustomerAddressListPage: React.FC<CustomerAddressListPageProps> = props =>
const intl = useIntl(); const intl = useIntl();
const isEmpty = customer?.addresses?.length === 0; const isEmpty = customer?.addresses?.length === 0;
const fullName = [customer?.firstName, customer?.lastName].join(" ") || "..."; const fullName = getStringOrPlaceholder(
customer && [customer.firstName, customer.lastName].join(" ")
);
return ( return (
<Container> <Container>

View file

@ -5,6 +5,7 @@ import { WindowTitle } from "@saleor/components/WindowTitle";
import useNavigator from "@saleor/hooks/useNavigator"; import useNavigator from "@saleor/hooks/useNavigator";
import useNotifier from "@saleor/hooks/useNotifier"; import useNotifier from "@saleor/hooks/useNotifier";
import { commonMessages } from "@saleor/intl"; import { commonMessages } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import createMetadataUpdateHandler from "@saleor/utils/handlers/metadataUpdateHandler"; import createMetadataUpdateHandler from "@saleor/utils/handlers/metadataUpdateHandler";
import { import {
useMetadataUpdate, useMetadataUpdate,
@ -13,7 +14,6 @@ import {
import React from "react"; import React from "react";
import { FormattedMessage, useIntl } from "react-intl"; import { FormattedMessage, useIntl } from "react-intl";
import { maybe } from "../../misc";
import { orderListUrl, orderUrl } from "../../orders/urls"; import { orderListUrl, orderUrl } from "../../orders/urls";
import CustomerDetailsPage, { import CustomerDetailsPage, {
CustomerDetailsPageFormData CustomerDetailsPageFormData
@ -114,11 +114,9 @@ export const CustomerDetailsView: React.FC<CustomerDetailsViewProps> = ({
return ( return (
<> <>
<WindowTitle <WindowTitle title={user?.email} />
title={maybe(() => customerDetails.data.user.email)}
/>
<CustomerDetailsPage <CustomerDetailsPage
customer={maybe(() => customerDetails.data.user)} customer={user}
disabled={ disabled={
customerDetails.loading || customerDetails.loading ||
updateCustomerOpts.loading || updateCustomerOpts.loading ||
@ -144,9 +142,7 @@ export const CustomerDetailsView: React.FC<CustomerDetailsViewProps> = ({
onViewAllOrdersClick={() => onViewAllOrdersClick={() =>
navigate( navigate(
orderListUrl({ orderListUrl({
customer: maybe( customer: user?.email
() => customerDetails.data.user.email
)
}) })
) )
} }
@ -169,10 +165,7 @@ export const CustomerDetailsView: React.FC<CustomerDetailsViewProps> = ({
values={{ values={{
email: ( email: (
<strong> <strong>
{maybe( {getStringOrPlaceholder(user?.email)}
() => customerDetails.data.user.email,
"..."
)}
</strong> </strong>
) )
}} }}

View file

@ -59,14 +59,10 @@ export function getFilterOpts(
}, },
status: { status: {
active: !!maybe(() => params.status), active: !!maybe(() => params.status),
value: maybe( value: dedupeFilter(
() => params.status?.map(status =>
dedupeFilter( findValueInEnum(status, DiscountStatusEnum)
params.status.map(status => ) || []
findValueInEnum(status, DiscountStatusEnum)
)
),
[]
) )
} }
}; };

View file

@ -41,12 +41,9 @@ export function getFilterOpts(
}, },
saleType: { saleType: {
active: !!maybe(() => params.type), active: !!maybe(() => params.type),
value: maybe( value: dedupeFilter(
() => params.type?.map(type => findValueInEnum(type, VoucherDiscountType)) ||
dedupeFilter( []
params.type.map(type => findValueInEnum(type, VoucherDiscountType))
),
[]
) )
}, },
started: { started: {
@ -64,14 +61,10 @@ export function getFilterOpts(
}, },
status: { status: {
active: !!maybe(() => params.status), active: !!maybe(() => params.status),
value: maybe( value: dedupeFilter(
() => params.status?.map(status =>
dedupeFilter( findValueInEnum(status, DiscountStatusEnum)
params.status.map(status => ) || []
findValueInEnum(status, DiscountStatusEnum)
)
),
[]
) )
}, },
timesUsed: { timesUsed: {

View file

@ -40,21 +40,24 @@ const HomeSection = () => {
onOrdersToCaptureClick={() => onOrdersToCaptureClick={() =>
navigate( navigate(
orderListUrl({ orderListUrl({
status: [OrderStatusFilter.READY_TO_CAPTURE] status: [OrderStatusFilter.READY_TO_CAPTURE],
channel: [channel?.id]
}) })
) )
} }
onOrdersToFulfillClick={() => onOrdersToFulfillClick={() =>
navigate( navigate(
orderListUrl({ orderListUrl({
status: [OrderStatusFilter.READY_TO_FULFILL] status: [OrderStatusFilter.READY_TO_FULFILL],
channel: [channel?.id]
}) })
) )
} }
onProductsOutOfStockClick={() => onProductsOutOfStockClick={() =>
navigate( navigate(
productListUrl({ productListUrl({
stockStatus: StockAvailability.OUT_OF_STOCK stockStatus: StockAvailability.OUT_OF_STOCK,
channel: channel?.slug
}) })
) )
} }

View file

@ -9,7 +9,7 @@ import usePaginator, {
createPaginationState createPaginationState
} from "@saleor/hooks/usePaginator"; } from "@saleor/hooks/usePaginator";
import { buttonMessages, commonMessages } from "@saleor/intl"; import { buttonMessages, commonMessages } from "@saleor/intl";
import { maybe } from "@saleor/misc"; import { getStringOrPlaceholder, maybe } from "@saleor/misc";
import { getById } from "@saleor/orders/components/OrderReturnPage/utils"; import { getById } from "@saleor/orders/components/OrderReturnPage/utils";
import { ListViews } from "@saleor/types"; import { ListViews } from "@saleor/types";
import createSortHandler from "@saleor/utils/handlers/sortHandler"; import createSortHandler from "@saleor/utils/handlers/sortHandler";
@ -209,10 +209,11 @@ const MenuList: React.FC<MenuListProps> = ({ params }) => {
defaultMessage="Are you sure you want to delete {menuName}?" defaultMessage="Are you sure you want to delete {menuName}?"
id="menuListDeleteMenuContent" id="menuListDeleteMenuContent"
values={{ values={{
menuName: menuName: getStringOrPlaceholder(
mapEdgesToItems(data?.menus)?.find( mapEdgesToItems(data?.menus)?.find(
getById(params.id) getById(params.id)
)?.name || "..." )?.name
)
}} }}
/> />
</DialogContentText> </DialogContentText>

View file

@ -6,7 +6,6 @@ import {
BulkAction, BulkAction,
Dialog, Dialog,
Filters, Filters,
FiltersAsDictWithMultipleValues,
FiltersWithMultipleValues, FiltersWithMultipleValues,
Pagination, Pagination,
SingleAction, SingleAction,
@ -27,16 +26,12 @@ export enum OrderListUrlFiltersEnum {
query = "query" query = "query"
} }
export enum OrderListUrlFiltersWithMultipleValues { export enum OrderListUrlFiltersWithMultipleValues {
status = "status" status = "status",
}
export enum OrderListUrlFiltersDictWithMultipleValues {
channel = "channel" channel = "channel"
} }
export type OrderListUrlFilters = Filters<OrderListUrlFiltersEnum> & export type OrderListUrlFilters = Filters<OrderListUrlFiltersEnum> &
FiltersWithMultipleValues<OrderListUrlFiltersWithMultipleValues> & FiltersWithMultipleValues<OrderListUrlFiltersWithMultipleValues>;
FiltersAsDictWithMultipleValues<OrderListUrlFiltersDictWithMultipleValues>;
export type OrderListUrlDialog = "cancel" | CreateOrderDialog | TabActionDialog; export type OrderListUrlDialog = "cancel" | CreateOrderDialog | TabActionDialog;
export enum OrderListUrlSortField { export enum OrderListUrlSortField {
number = "number", number = "number",

View file

@ -71,7 +71,7 @@ export const OrderList: React.FC<OrderListProps> = ({ params }) => {
onCompleted: handleCreateOrderCreateSuccess onCompleted: handleCreateOrderCreateSuccess
}); });
const { channel, availableChannels } = useAppChannel(); const { channel, availableChannels } = useAppChannel(false);
const limitOpts = useShopLimitsQuery({ const limitOpts = useShopLimitsQuery({
variables: { variables: {
orders: true orders: true

View file

@ -22,7 +22,6 @@ import {
} from "../../../utils/filters"; } from "../../../utils/filters";
import { import {
OrderListUrlFilters, OrderListUrlFilters,
OrderListUrlFiltersDictWithMultipleValues,
OrderListUrlFiltersEnum, OrderListUrlFiltersEnum,
OrderListUrlFiltersWithMultipleValues, OrderListUrlFiltersWithMultipleValues,
OrderListUrlQueryParams OrderListUrlQueryParams
@ -57,9 +56,9 @@ export function getFilterOpts(
status: { status: {
active: params?.status !== undefined, active: params?.status !== undefined,
value: dedupeFilter( value: dedupeFilter(
params?.status?.map(status => params.status?.map(status =>
findValueInEnum(status, OrderStatusFilter) findValueInEnum(status, OrderStatusFilter)
) ) || []
) )
} }
}; };
@ -103,7 +102,7 @@ export function getFilterQueryParam(
case OrderFilterKeys.channel: case OrderFilterKeys.channel:
return getMultipleValueQueryParam( return getMultipleValueQueryParam(
filter, filter,
OrderListUrlFiltersDictWithMultipleValues.channel OrderListUrlFiltersWithMultipleValues.channel
); );
case OrderFilterKeys.customer: case OrderFilterKeys.customer:

View file

@ -36,7 +36,7 @@ export function getAttributeInputFromPageType(
entityType: attribute.entityType, entityType: attribute.entityType,
inputType: attribute.inputType, inputType: attribute.inputType,
isRequired: attribute.valueRequired, isRequired: attribute.valueRequired,
values: mapEdgesToItems(attribute.choices) values: mapEdgesToItems(attribute.choices) || []
}, },
id: attribute.id, id: attribute.id,
label: attribute.name, label: attribute.name,

View file

@ -87,9 +87,8 @@ export const PageCreate: React.FC<PageCreateProps> = ({ params }) => {
skip: !selectedPageTypeId skip: !selectedPageTypeId
}); });
const attributeValues = mapEdgesToItems( const attributeValues =
searchAttributeValuesOpts?.data?.attribute.choices mapEdgesToItems(searchAttributeValuesOpts?.data?.attribute.choices) || [];
);
const [uploadFile, uploadFileOpts] = useFileUploadMutation({}); const [uploadFile, uploadFileOpts] = useFileUploadMutation({});
@ -192,7 +191,9 @@ export const PageCreate: React.FC<PageCreateProps> = ({ params }) => {
saveButtonBarState={pageCreateOpts.status} saveButtonBarState={pageCreateOpts.status}
page={null} page={null}
attributeValues={attributeValues} attributeValues={attributeValues}
pageTypes={mapEdgesToItems(searchPageTypesOpts?.data?.search)} pageTypes={
mapEdgesToItems(searchPageTypesOpts?.data?.search) || []
}
onBack={() => navigate(pageListUrl())} onBack={() => navigate(pageListUrl())}
onRemove={() => undefined} onRemove={() => undefined}
onSubmit={handleSubmit} onSubmit={handleSubmit}
@ -202,10 +203,12 @@ export const PageCreate: React.FC<PageCreateProps> = ({ params }) => {
params.action === "assign-attribute-value" && params.id params.action === "assign-attribute-value" && params.id
} }
onAssignReferencesClick={handleAssignAttributeReferenceClick} onAssignReferencesClick={handleAssignAttributeReferenceClick}
referencePages={mapEdgesToItems(searchPagesOpts?.data?.search)} referencePages={
referenceProducts={mapEdgesToItems( mapEdgesToItems(searchPagesOpts?.data?.search) || []
searchProductsOpts?.data?.search }
)} referenceProducts={
mapEdgesToItems(searchProductsOpts?.data?.search) || []
}
fetchReferencePages={searchPages} fetchReferencePages={searchPages}
fetchMoreReferencePages={fetchMoreReferencePages} fetchMoreReferencePages={fetchMoreReferencePages}
fetchReferenceProducts={searchProducts} fetchReferenceProducts={searchProducts}

View file

@ -179,9 +179,8 @@ export const PageDetails: React.FC<PageDetailsProps> = ({ id, params }) => {
result: searchAttributeValuesOpts result: searchAttributeValuesOpts
} = createAttributeValueSearchHandler(DEFAULT_INITIAL_SEARCH_DATA); } = createAttributeValueSearchHandler(DEFAULT_INITIAL_SEARCH_DATA);
const attributeValues = mapEdgesToItems( const attributeValues =
searchAttributeValuesOpts?.data?.attribute.choices mapEdgesToItems(searchAttributeValuesOpts?.data?.attribute.choices) || [];
);
const fetchMoreReferencePages = { const fetchMoreReferencePages = {
hasMore: searchPagesOpts.data?.search?.pageInfo?.hasNextPage, hasMore: searchPagesOpts.data?.search?.pageInfo?.hasNextPage,
@ -213,7 +212,7 @@ export const PageDetails: React.FC<PageDetailsProps> = ({ id, params }) => {
errors={pageUpdateOpts.data?.pageUpdate.errors || []} errors={pageUpdateOpts.data?.pageUpdate.errors || []}
saveButtonBarState={pageUpdateOpts.status} saveButtonBarState={pageUpdateOpts.status}
page={pageDetails.data?.page} page={pageDetails.data?.page}
attributeValues={attributeValues || []} attributeValues={attributeValues}
onBack={() => navigate(pageListUrl())} onBack={() => navigate(pageListUrl())}
onRemove={() => onRemove={() =>
navigate( navigate(

View file

@ -54,7 +54,7 @@ export function getFilterOpts(
loading, loading,
onFetchMore, onFetchMore,
onSearchChange, onSearchChange,
value: maybe(() => dedupeFilter(params.channels), []) value: dedupeFilter(params.channels || [])
}, },
type: { type: {
active: !!params.type, active: !!params.type,
@ -63,7 +63,8 @@ export function getFilterOpts(
status: { status: {
active: !!params.channels?.length && params.active !== undefined, active: !!params.channels?.length && params.active !== undefined,
value: value:
!!dedupeFilter(params.channels)?.length && params.active !== undefined !!dedupeFilter(params.channels || [])?.length &&
params.active !== undefined
} }
}; };
} }

View file

@ -74,7 +74,7 @@ export function getAttributeInputFromProductType(
entityType: attribute.entityType, entityType: attribute.entityType,
inputType: attribute.inputType, inputType: attribute.inputType,
isRequired: attribute.valueRequired, isRequired: attribute.valueRequired,
values: mapEdgesToItems(attribute.choices), values: mapEdgesToItems(attribute.choices) || [],
unit: attribute.unit unit: attribute.unit
}, },
id: attribute.id, id: attribute.id,
@ -92,7 +92,7 @@ export function getAttributeInputFromAttributes(
entityType: attribute.entityType, entityType: attribute.entityType,
inputType: attribute.inputType, inputType: attribute.inputType,
isRequired: attribute.valueRequired, isRequired: attribute.valueRequired,
values: mapEdgesToItems(attribute.choices), values: mapEdgesToItems(attribute.choices) || [],
unit: attribute.unit, unit: attribute.unit,
variantAttributeScope variantAttributeScope
}, },

View file

@ -128,7 +128,8 @@ export const ProductCreateView: React.FC<ProductCreateProps> = ({ params }) => {
skip: !selectedProductTypeId skip: !selectedProductTypeId
}); });
const productTypes = mapEdgesToItems(searchProductTypesOpts?.data?.search); const productTypes =
mapEdgesToItems(searchProductTypesOpts?.data?.search) || [];
const { availableChannels } = useAppChannel(false); const { availableChannels } = useAppChannel(false);
const allChannels: ChannelData[] = createSortedChannelsData( const allChannels: ChannelData[] = createSortedChannelsData(
@ -335,8 +336,10 @@ export const ProductCreateView: React.FC<ProductCreateProps> = ({ params }) => {
params.action === "assign-attribute-value" && params.id params.action === "assign-attribute-value" && params.id
} }
onAssignReferencesClick={handleAssignAttributeReferenceClick} onAssignReferencesClick={handleAssignAttributeReferenceClick}
referencePages={mapEdgesToItems(searchPagesOpts?.data?.search)} referencePages={mapEdgesToItems(searchPagesOpts?.data?.search) || []}
referenceProducts={mapEdgesToItems(searchProductsOpts?.data?.search)} referenceProducts={
mapEdgesToItems(searchProductsOpts?.data?.search) || []
}
fetchReferencePages={searchPages} fetchReferencePages={searchPages}
fetchMoreReferencePages={fetchMoreReferencePages} fetchMoreReferencePages={fetchMoreReferencePages}
fetchReferenceProducts={searchProducts} fetchReferenceProducts={searchProducts}

View file

@ -87,10 +87,7 @@ export function getFilterOpts(
name: attr.name, name: attr.name,
slug: attr.slug, slug: attr.slug,
inputType: attr.inputType, inputType: attr.inputType,
value: value: dedupeFilter(params.attributes?.[attr.slug] || [])
!!params.attributes && params.attributes[attr.slug]
? dedupeFilter(params.attributes[attr.slug])
: []
})), })),
attributeChoices: { attributeChoices: {
active: true, active: true,
@ -132,7 +129,7 @@ export function getFilterOpts(
loading: categories.search.result.loading, loading: categories.search.result.loading,
onFetchMore: categories.search.loadMore, onFetchMore: categories.search.loadMore,
onSearchChange: categories.search.search, onSearchChange: categories.search.search,
value: maybe(() => dedupeFilter(params.categories), []) value: dedupeFilter(params.categories || [])
}, },
channel: { channel: {
active: params?.channel !== undefined, active: params?.channel !== undefined,
@ -162,7 +159,7 @@ export function getFilterOpts(
loading: collections.search.result.loading, loading: collections.search.result.loading,
onFetchMore: collections.search.loadMore, onFetchMore: collections.search.loadMore,
onSearchChange: collections.search.search, onSearchChange: collections.search.search,
value: maybe(() => dedupeFilter(params.collections), []) value: dedupeFilter(params.collections || [])
}, },
price: { price: {
active: maybe( active: maybe(
@ -198,7 +195,7 @@ export function getFilterOpts(
loading: productTypes.search.result.loading, loading: productTypes.search.result.loading,
onFetchMore: productTypes.search.loadMore, onFetchMore: productTypes.search.loadMore,
onSearchChange: productTypes.search.search, onSearchChange: productTypes.search.search,
value: maybe(() => dedupeFilter(params.productTypes), []) value: dedupeFilter(params.productTypes || [])
}, },
stockStatus: { stockStatus: {
active: maybe(() => params.stockStatus !== undefined, false), active: maybe(() => params.stockStatus !== undefined, false),

View file

@ -593,8 +593,10 @@ export const ProductUpdate: React.FC<ProductUpdateProps> = ({ id, params }) => {
params.action === "assign-attribute-value" && params.id params.action === "assign-attribute-value" && params.id
} }
onAssignReferencesClick={handleAssignAttributeReferenceClick} onAssignReferencesClick={handleAssignAttributeReferenceClick}
referencePages={mapEdgesToItems(searchPagesOpts?.data?.search)} referencePages={mapEdgesToItems(searchPagesOpts?.data?.search) || []}
referenceProducts={mapEdgesToItems(searchProductsOpts?.data?.search)} referenceProducts={
mapEdgesToItems(searchProductsOpts?.data?.search) || []
}
fetchReferencePages={searchPages} fetchReferencePages={searchPages}
fetchMoreReferencePages={fetchMoreReferencePages} fetchMoreReferencePages={fetchMoreReferencePages}
fetchReferenceProducts={searchProducts} fetchReferenceProducts={searchProducts}

View file

@ -363,8 +363,10 @@ export const ProductVariant: React.FC<ProductUpdateProps> = ({
params.action === "assign-attribute-value" && params.id params.action === "assign-attribute-value" && params.id
} }
onAssignReferencesClick={handleAssignAttributeReferenceClick} onAssignReferencesClick={handleAssignAttributeReferenceClick}
referencePages={mapEdgesToItems(searchPagesOpts?.data?.search)} referencePages={mapEdgesToItems(searchPagesOpts?.data?.search) || []}
referenceProducts={mapEdgesToItems(searchProductsOpts?.data?.search)} referenceProducts={
mapEdgesToItems(searchProductsOpts?.data?.search) || []
}
fetchReferencePages={searchPages} fetchReferencePages={searchPages}
fetchMoreReferencePages={fetchMoreReferencePages} fetchMoreReferencePages={fetchMoreReferencePages}
fetchReferenceProducts={searchProducts} fetchReferenceProducts={searchProducts}

View file

@ -230,8 +230,10 @@ export const ProductVariant: React.FC<ProductVariantCreateProps> = ({
params.action === "assign-attribute-value" && params.id params.action === "assign-attribute-value" && params.id
} }
onAssignReferencesClick={handleAssignAttributeReferenceClick} onAssignReferencesClick={handleAssignAttributeReferenceClick}
referencePages={mapEdgesToItems(searchPagesOpts?.data?.search)} referencePages={mapEdgesToItems(searchPagesOpts?.data?.search) || []}
referenceProducts={mapEdgesToItems(searchProductsOpts?.data?.search)} referenceProducts={
mapEdgesToItems(searchProductsOpts?.data?.search) || []
}
fetchReferencePages={searchPages} fetchReferencePages={searchPages}
fetchMoreReferencePages={fetchMoreReferencePages} fetchMoreReferencePages={fetchMoreReferencePages}
fetchReferenceProducts={searchProducts} fetchReferenceProducts={searchProducts}

View file

@ -72324,7 +72324,7 @@ exports[`Storyshots Views / Customers / Address Book loading 1`] = `
<div <div
class="MuiTypography-root-id PageHeader-title-id MuiTypography-h5-id" class="MuiTypography-root-id PageHeader-title-id MuiTypography-h5-id"
> >
's Address Book ...'s Address Book
</div> </div>
<div <div
class="ExtendedPageHeader-action-id" class="ExtendedPageHeader-action-id"

View file

@ -5,6 +5,7 @@ import LanguageSwitch from "@saleor/components/LanguageSwitch";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { CategoryTranslationFragment } from "@saleor/fragments/types/CategoryTranslationFragment"; import { CategoryTranslationFragment } from "@saleor/fragments/types/CategoryTranslationFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { import {
TranslationInputFieldName, TranslationInputFieldName,
TranslationsEntitiesPageProps TranslationsEntitiesPageProps
@ -47,7 +48,7 @@ const TranslationsCategoriesPage: React.FC<TranslationsCategoriesPageProps> = ({
'Translation Category "{categoryName}" - {languageCode}' 'Translation Category "{categoryName}" - {languageCode}'
}, },
{ {
categoryName: data?.category?.name || "...", categoryName: getStringOrPlaceholder(data?.category?.name),
languageCode languageCode
} }
)} )}

View file

@ -5,6 +5,7 @@ import LanguageSwitch from "@saleor/components/LanguageSwitch";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { CollectionTranslationFragment } from "@saleor/fragments/types/CollectionTranslationFragment"; import { CollectionTranslationFragment } from "@saleor/fragments/types/CollectionTranslationFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { import {
TranslationInputFieldName, TranslationInputFieldName,
TranslationsEntitiesPageProps TranslationsEntitiesPageProps
@ -48,7 +49,7 @@ const TranslationsCollectionsPage: React.FC<TranslationsCollectionsPageProps> =
description: "header" description: "header"
}, },
{ {
collectionName: data?.collection?.name || "...", collectionName: getStringOrPlaceholder(data?.collection?.name),
languageCode languageCode
} }
)} )}

View file

@ -5,6 +5,7 @@ import LanguageSwitch from "@saleor/components/LanguageSwitch";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { PageTranslationFragment } from "@saleor/fragments/types/PageTranslationFragment"; import { PageTranslationFragment } from "@saleor/fragments/types/PageTranslationFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { import {
PageTranslationInputFieldName, PageTranslationInputFieldName,
TranslationsEntitiesPageProps TranslationsEntitiesPageProps
@ -48,7 +49,7 @@ const TranslationsPagesPage: React.FC<TranslationsPagesPageProps> = ({
}, },
{ {
languageCode, languageCode,
pageName: data?.page?.title || "..." pageName: getStringOrPlaceholder(data?.page?.title)
} }
)} )}
> >

View file

@ -6,6 +6,7 @@ import PageHeader from "@saleor/components/PageHeader";
import { ListSettingsUpdate } from "@saleor/components/TablePagination"; import { ListSettingsUpdate } from "@saleor/components/TablePagination";
import { AttributeTranslationDetailsFragment } from "@saleor/fragments/types/AttributeTranslationDetailsFragment"; import { AttributeTranslationDetailsFragment } from "@saleor/fragments/types/AttributeTranslationDetailsFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { TranslationsEntitiesPageProps } from "@saleor/translations/types"; import { TranslationsEntitiesPageProps } from "@saleor/translations/types";
import { ListSettings } from "@saleor/types"; import { ListSettings } from "@saleor/types";
import React from "react"; import React from "react";
@ -76,7 +77,7 @@ const TranslationsProductTypesPage: React.FC<TranslationsProductTypesPageProps>
description: "header" description: "header"
}, },
{ {
attribute: data?.attribute?.name || "...", attribute: getStringOrPlaceholder(data?.attribute?.name),
languageCode languageCode
} }
)} )}

View file

@ -5,6 +5,7 @@ import LanguageSwitch from "@saleor/components/LanguageSwitch";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { ProductTranslationFragment } from "@saleor/fragments/types/ProductTranslationFragment"; import { ProductTranslationFragment } from "@saleor/fragments/types/ProductTranslationFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { import {
TranslationInputFieldName, TranslationInputFieldName,
TranslationsEntitiesPageProps TranslationsEntitiesPageProps
@ -49,7 +50,7 @@ const TranslationsProductsPage: React.FC<TranslationsProductsPageProps> = ({
}, },
{ {
languageCode, languageCode,
productName: data?.product?.name || "..." productName: getStringOrPlaceholder(data?.product?.name)
} }
)} )}
> >

View file

@ -4,6 +4,7 @@ import LanguageSwitch from "@saleor/components/LanguageSwitch";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { SaleTranslationFragment } from "@saleor/fragments/types/SaleTranslationFragment"; import { SaleTranslationFragment } from "@saleor/fragments/types/SaleTranslationFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { TranslationsEntitiesPageProps } from "@saleor/translations/types"; import { TranslationsEntitiesPageProps } from "@saleor/translations/types";
import React from "react"; import React from "react";
import { useIntl } from "react-intl"; import { useIntl } from "react-intl";
@ -48,7 +49,7 @@ const TranslationsSalesPage: React.FC<TranslationsSalesPageProps> = ({
}, },
{ {
languageCode, languageCode,
saleName: data?.sale?.name || "..." saleName: getStringOrPlaceholder(data?.sale?.name)
} }
)} )}
> >

View file

@ -4,6 +4,7 @@ import LanguageSwitch from "@saleor/components/LanguageSwitch";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { ShippingMethodTranslationFragment } from "@saleor/fragments/types/ShippingMethodTranslationFragment"; import { ShippingMethodTranslationFragment } from "@saleor/fragments/types/ShippingMethodTranslationFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { import {
TranslationInputFieldName, TranslationInputFieldName,
TranslationsEntitiesPageProps TranslationsEntitiesPageProps
@ -48,7 +49,7 @@ const TranslationsShippingMethodPage: React.FC<TranslationsShippingMethodPagePro
}, },
{ {
languageCode, languageCode,
shippingMethodName: data?.name || "..." shippingMethodName: getStringOrPlaceholder(data?.name)
} }
)} )}
> >

View file

@ -4,6 +4,7 @@ import LanguageSwitch from "@saleor/components/LanguageSwitch";
import PageHeader from "@saleor/components/PageHeader"; import PageHeader from "@saleor/components/PageHeader";
import { VoucherTranslationFragment } from "@saleor/fragments/types/VoucherTranslationFragment"; import { VoucherTranslationFragment } from "@saleor/fragments/types/VoucherTranslationFragment";
import { commonMessages, sectionNames } from "@saleor/intl"; import { commonMessages, sectionNames } from "@saleor/intl";
import { getStringOrPlaceholder } from "@saleor/misc";
import { TranslationsEntitiesPageProps } from "@saleor/translations/types"; import { TranslationsEntitiesPageProps } from "@saleor/translations/types";
import React from "react"; import React from "react";
import { useIntl } from "react-intl"; import { useIntl } from "react-intl";
@ -49,7 +50,7 @@ const TranslationsVouchersPage: React.FC<TranslationsVouchersPageProps> = ({
}, },
{ {
languageCode, languageCode,
voucherName: data?.voucher?.name || "..." voucherName: getStringOrPlaceholder(data?.voucher?.name)
} }
)} )}
> >