Handle Appstore app empty manifest URL (#3177)

This commit is contained in:
Lukasz Ostrowski 2023-02-21 12:50:37 +01:00 committed by GitHub
parent d4d9b1b91c
commit 82071f4b88
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 188 additions and 26 deletions

View file

@ -91,6 +91,9 @@
"PermissionGroupUpdated", "PermissionGroupUpdated",
"ProductCreated", "ProductCreated",
"ProductDeleted", "ProductDeleted",
"ProductMediaCreated",
"ProductMediaDeleted",
"ProductMediaUpdated",
"ProductMetadataUpdated", "ProductMetadataUpdated",
"ProductUpdated", "ProductUpdated",
"ProductVariantBackInStock", "ProductVariantBackInStock",
@ -115,6 +118,7 @@
"StaffCreated", "StaffCreated",
"StaffDeleted", "StaffDeleted",
"StaffUpdated", "StaffUpdated",
"ThumbnailCreated",
"TransactionActionRequest", "TransactionActionRequest",
"TransactionItemMetadataUpdated", "TransactionItemMetadataUpdated",
"TranslationCreated", "TranslationCreated",
@ -244,6 +248,7 @@
"PageType", "PageType",
"Payment", "Payment",
"Product", "Product",
"ProductMedia",
"ProductType", "ProductType",
"ProductVariant", "ProductVariant",
"Sale", "Sale",

View file

@ -733,7 +733,7 @@ export type CategoryUpdatedFieldPolicy = {
recipient?: FieldPolicy<any> | FieldReadFunction<any>, recipient?: FieldPolicy<any> | FieldReadFunction<any>,
category?: FieldPolicy<any> | FieldReadFunction<any> category?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ChannelKeySpecifier = ('id' | 'slug' | 'name' | 'isActive' | 'currencyCode' | 'hasOrders' | 'defaultCountry' | 'warehouses' | 'countries' | 'availableShippingMethodsPerCountry' | 'stockSettings' | ChannelKeySpecifier)[]; export type ChannelKeySpecifier = ('id' | 'slug' | 'name' | 'isActive' | 'currencyCode' | 'hasOrders' | 'defaultCountry' | 'warehouses' | 'countries' | 'availableShippingMethodsPerCountry' | 'stockSettings' | 'orderSettings' | ChannelKeySpecifier)[];
export type ChannelFieldPolicy = { export type ChannelFieldPolicy = {
id?: FieldPolicy<any> | FieldReadFunction<any>, id?: FieldPolicy<any> | FieldReadFunction<any>,
slug?: FieldPolicy<any> | FieldReadFunction<any>, slug?: FieldPolicy<any> | FieldReadFunction<any>,
@ -745,7 +745,8 @@ export type ChannelFieldPolicy = {
warehouses?: FieldPolicy<any> | FieldReadFunction<any>, warehouses?: FieldPolicy<any> | FieldReadFunction<any>,
countries?: FieldPolicy<any> | FieldReadFunction<any>, countries?: FieldPolicy<any> | FieldReadFunction<any>,
availableShippingMethodsPerCountry?: FieldPolicy<any> | FieldReadFunction<any>, availableShippingMethodsPerCountry?: FieldPolicy<any> | FieldReadFunction<any>,
stockSettings?: FieldPolicy<any> | FieldReadFunction<any> stockSettings?: FieldPolicy<any> | FieldReadFunction<any>,
orderSettings?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ChannelActivateKeySpecifier = ('channel' | 'channelErrors' | 'errors' | ChannelActivateKeySpecifier)[]; export type ChannelActivateKeySpecifier = ('channel' | 'channelErrors' | 'errors' | ChannelActivateKeySpecifier)[];
export type ChannelActivateFieldPolicy = { export type ChannelActivateFieldPolicy = {
@ -3675,14 +3676,21 @@ export type ProductImageFieldPolicy = {
sortOrder?: FieldPolicy<any> | FieldReadFunction<any>, sortOrder?: FieldPolicy<any> | FieldReadFunction<any>,
url?: FieldPolicy<any> | FieldReadFunction<any> url?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ProductMediaKeySpecifier = ('id' | 'sortOrder' | 'alt' | 'type' | 'oembedData' | 'url' | ProductMediaKeySpecifier)[]; export type ProductMediaKeySpecifier = ('id' | 'privateMetadata' | 'privateMetafield' | 'privateMetafields' | 'metadata' | 'metafield' | 'metafields' | 'sortOrder' | 'alt' | 'type' | 'oembedData' | 'url' | 'productId' | ProductMediaKeySpecifier)[];
export type ProductMediaFieldPolicy = { export type ProductMediaFieldPolicy = {
id?: FieldPolicy<any> | FieldReadFunction<any>, id?: FieldPolicy<any> | FieldReadFunction<any>,
privateMetadata?: FieldPolicy<any> | FieldReadFunction<any>,
privateMetafield?: FieldPolicy<any> | FieldReadFunction<any>,
privateMetafields?: FieldPolicy<any> | FieldReadFunction<any>,
metadata?: FieldPolicy<any> | FieldReadFunction<any>,
metafield?: FieldPolicy<any> | FieldReadFunction<any>,
metafields?: FieldPolicy<any> | FieldReadFunction<any>,
sortOrder?: FieldPolicy<any> | FieldReadFunction<any>, sortOrder?: FieldPolicy<any> | FieldReadFunction<any>,
alt?: FieldPolicy<any> | FieldReadFunction<any>, alt?: FieldPolicy<any> | FieldReadFunction<any>,
type?: FieldPolicy<any> | FieldReadFunction<any>, type?: FieldPolicy<any> | FieldReadFunction<any>,
oembedData?: FieldPolicy<any> | FieldReadFunction<any>, oembedData?: FieldPolicy<any> | FieldReadFunction<any>,
url?: FieldPolicy<any> | FieldReadFunction<any> url?: FieldPolicy<any> | FieldReadFunction<any>,
productId?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ProductMediaBulkDeleteKeySpecifier = ('count' | 'productErrors' | 'errors' | ProductMediaBulkDeleteKeySpecifier)[]; export type ProductMediaBulkDeleteKeySpecifier = ('count' | 'productErrors' | 'errors' | ProductMediaBulkDeleteKeySpecifier)[];
export type ProductMediaBulkDeleteFieldPolicy = { export type ProductMediaBulkDeleteFieldPolicy = {
@ -3697,6 +3705,14 @@ export type ProductMediaCreateFieldPolicy = {
productErrors?: FieldPolicy<any> | FieldReadFunction<any>, productErrors?: FieldPolicy<any> | FieldReadFunction<any>,
errors?: FieldPolicy<any> | FieldReadFunction<any> errors?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ProductMediaCreatedKeySpecifier = ('issuedAt' | 'version' | 'issuingPrincipal' | 'recipient' | 'productMedia' | ProductMediaCreatedKeySpecifier)[];
export type ProductMediaCreatedFieldPolicy = {
issuedAt?: FieldPolicy<any> | FieldReadFunction<any>,
version?: FieldPolicy<any> | FieldReadFunction<any>,
issuingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>,
recipient?: FieldPolicy<any> | FieldReadFunction<any>,
productMedia?: FieldPolicy<any> | FieldReadFunction<any>
};
export type ProductMediaDeleteKeySpecifier = ('product' | 'media' | 'productErrors' | 'errors' | ProductMediaDeleteKeySpecifier)[]; export type ProductMediaDeleteKeySpecifier = ('product' | 'media' | 'productErrors' | 'errors' | ProductMediaDeleteKeySpecifier)[];
export type ProductMediaDeleteFieldPolicy = { export type ProductMediaDeleteFieldPolicy = {
product?: FieldPolicy<any> | FieldReadFunction<any>, product?: FieldPolicy<any> | FieldReadFunction<any>,
@ -3704,6 +3720,14 @@ export type ProductMediaDeleteFieldPolicy = {
productErrors?: FieldPolicy<any> | FieldReadFunction<any>, productErrors?: FieldPolicy<any> | FieldReadFunction<any>,
errors?: FieldPolicy<any> | FieldReadFunction<any> errors?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ProductMediaDeletedKeySpecifier = ('issuedAt' | 'version' | 'issuingPrincipal' | 'recipient' | 'productMedia' | ProductMediaDeletedKeySpecifier)[];
export type ProductMediaDeletedFieldPolicy = {
issuedAt?: FieldPolicy<any> | FieldReadFunction<any>,
version?: FieldPolicy<any> | FieldReadFunction<any>,
issuingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>,
recipient?: FieldPolicy<any> | FieldReadFunction<any>,
productMedia?: FieldPolicy<any> | FieldReadFunction<any>
};
export type ProductMediaReorderKeySpecifier = ('product' | 'media' | 'productErrors' | 'errors' | ProductMediaReorderKeySpecifier)[]; export type ProductMediaReorderKeySpecifier = ('product' | 'media' | 'productErrors' | 'errors' | ProductMediaReorderKeySpecifier)[];
export type ProductMediaReorderFieldPolicy = { export type ProductMediaReorderFieldPolicy = {
product?: FieldPolicy<any> | FieldReadFunction<any>, product?: FieldPolicy<any> | FieldReadFunction<any>,
@ -3718,6 +3742,14 @@ export type ProductMediaUpdateFieldPolicy = {
productErrors?: FieldPolicy<any> | FieldReadFunction<any>, productErrors?: FieldPolicy<any> | FieldReadFunction<any>,
errors?: FieldPolicy<any> | FieldReadFunction<any> errors?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ProductMediaUpdatedKeySpecifier = ('issuedAt' | 'version' | 'issuingPrincipal' | 'recipient' | 'productMedia' | ProductMediaUpdatedKeySpecifier)[];
export type ProductMediaUpdatedFieldPolicy = {
issuedAt?: FieldPolicy<any> | FieldReadFunction<any>,
version?: FieldPolicy<any> | FieldReadFunction<any>,
issuingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>,
recipient?: FieldPolicy<any> | FieldReadFunction<any>,
productMedia?: FieldPolicy<any> | FieldReadFunction<any>
};
export type ProductMetadataUpdatedKeySpecifier = ('issuedAt' | 'version' | 'issuingPrincipal' | 'recipient' | 'product' | 'category' | ProductMetadataUpdatedKeySpecifier)[]; export type ProductMetadataUpdatedKeySpecifier = ('issuedAt' | 'version' | 'issuingPrincipal' | 'recipient' | 'product' | 'category' | ProductMetadataUpdatedKeySpecifier)[];
export type ProductMetadataUpdatedFieldPolicy = { export type ProductMetadataUpdatedFieldPolicy = {
issuedAt?: FieldPolicy<any> | FieldReadFunction<any>, issuedAt?: FieldPolicy<any> | FieldReadFunction<any>,
@ -4998,6 +5030,17 @@ export type TaxedMoneyRangeFieldPolicy = {
start?: FieldPolicy<any> | FieldReadFunction<any>, start?: FieldPolicy<any> | FieldReadFunction<any>,
stop?: FieldPolicy<any> | FieldReadFunction<any> stop?: FieldPolicy<any> | FieldReadFunction<any>
}; };
export type ThumbnailCreatedKeySpecifier = ('issuedAt' | 'version' | 'issuingPrincipal' | 'recipient' | 'id' | 'url' | 'objectId' | 'mediaUrl' | ThumbnailCreatedKeySpecifier)[];
export type ThumbnailCreatedFieldPolicy = {
issuedAt?: FieldPolicy<any> | FieldReadFunction<any>,
version?: FieldPolicy<any> | FieldReadFunction<any>,
issuingPrincipal?: FieldPolicy<any> | FieldReadFunction<any>,
recipient?: FieldPolicy<any> | FieldReadFunction<any>,
id?: FieldPolicy<any> | FieldReadFunction<any>,
url?: FieldPolicy<any> | FieldReadFunction<any>,
objectId?: FieldPolicy<any> | FieldReadFunction<any>,
mediaUrl?: FieldPolicy<any> | FieldReadFunction<any>
};
export type TimePeriodKeySpecifier = ('amount' | 'type' | TimePeriodKeySpecifier)[]; export type TimePeriodKeySpecifier = ('amount' | 'type' | TimePeriodKeySpecifier)[];
export type TimePeriodFieldPolicy = { export type TimePeriodFieldPolicy = {
amount?: FieldPolicy<any> | FieldReadFunction<any>, amount?: FieldPolicy<any> | FieldReadFunction<any>,
@ -7331,10 +7374,18 @@ export type StrictTypedTypePolicies = {
keyFields?: false | ProductMediaCreateKeySpecifier | (() => undefined | ProductMediaCreateKeySpecifier), keyFields?: false | ProductMediaCreateKeySpecifier | (() => undefined | ProductMediaCreateKeySpecifier),
fields?: ProductMediaCreateFieldPolicy, fields?: ProductMediaCreateFieldPolicy,
}, },
ProductMediaCreated?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | ProductMediaCreatedKeySpecifier | (() => undefined | ProductMediaCreatedKeySpecifier),
fields?: ProductMediaCreatedFieldPolicy,
},
ProductMediaDelete?: Omit<TypePolicy, "fields" | "keyFields"> & { ProductMediaDelete?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | ProductMediaDeleteKeySpecifier | (() => undefined | ProductMediaDeleteKeySpecifier), keyFields?: false | ProductMediaDeleteKeySpecifier | (() => undefined | ProductMediaDeleteKeySpecifier),
fields?: ProductMediaDeleteFieldPolicy, fields?: ProductMediaDeleteFieldPolicy,
}, },
ProductMediaDeleted?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | ProductMediaDeletedKeySpecifier | (() => undefined | ProductMediaDeletedKeySpecifier),
fields?: ProductMediaDeletedFieldPolicy,
},
ProductMediaReorder?: Omit<TypePolicy, "fields" | "keyFields"> & { ProductMediaReorder?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | ProductMediaReorderKeySpecifier | (() => undefined | ProductMediaReorderKeySpecifier), keyFields?: false | ProductMediaReorderKeySpecifier | (() => undefined | ProductMediaReorderKeySpecifier),
fields?: ProductMediaReorderFieldPolicy, fields?: ProductMediaReorderFieldPolicy,
@ -7343,6 +7394,10 @@ export type StrictTypedTypePolicies = {
keyFields?: false | ProductMediaUpdateKeySpecifier | (() => undefined | ProductMediaUpdateKeySpecifier), keyFields?: false | ProductMediaUpdateKeySpecifier | (() => undefined | ProductMediaUpdateKeySpecifier),
fields?: ProductMediaUpdateFieldPolicy, fields?: ProductMediaUpdateFieldPolicy,
}, },
ProductMediaUpdated?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | ProductMediaUpdatedKeySpecifier | (() => undefined | ProductMediaUpdatedKeySpecifier),
fields?: ProductMediaUpdatedFieldPolicy,
},
ProductMetadataUpdated?: Omit<TypePolicy, "fields" | "keyFields"> & { ProductMetadataUpdated?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | ProductMetadataUpdatedKeySpecifier | (() => undefined | ProductMetadataUpdatedKeySpecifier), keyFields?: false | ProductMetadataUpdatedKeySpecifier | (() => undefined | ProductMetadataUpdatedKeySpecifier),
fields?: ProductMetadataUpdatedFieldPolicy, fields?: ProductMetadataUpdatedFieldPolicy,
@ -7971,6 +8026,10 @@ export type StrictTypedTypePolicies = {
keyFields?: false | TaxedMoneyRangeKeySpecifier | (() => undefined | TaxedMoneyRangeKeySpecifier), keyFields?: false | TaxedMoneyRangeKeySpecifier | (() => undefined | TaxedMoneyRangeKeySpecifier),
fields?: TaxedMoneyRangeFieldPolicy, fields?: TaxedMoneyRangeFieldPolicy,
}, },
ThumbnailCreated?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | ThumbnailCreatedKeySpecifier | (() => undefined | ThumbnailCreatedKeySpecifier),
fields?: ThumbnailCreatedFieldPolicy,
},
TimePeriod?: Omit<TypePolicy, "fields" | "keyFields"> & { TimePeriod?: Omit<TypePolicy, "fields" | "keyFields"> & {
keyFields?: false | TimePeriodKeySpecifier | (() => undefined | TimePeriodKeySpecifier), keyFields?: false | TimePeriodKeySpecifier | (() => undefined | TimePeriodKeySpecifier),
fields?: TimePeriodFieldPolicy, fields?: TimePeriodFieldPolicy,

File diff suppressed because one or more lines are too long

View file

@ -28,7 +28,7 @@ export namespace GetV2SaleorAppsResponse {
repositoryUrl: string; repositoryUrl: string;
supportUrl: string; supportUrl: string;
privacyUrl: string; privacyUrl: string;
manifestUrl: string; manifestUrl: string | null;
githubForkUrl?: string; githubForkUrl?: string;
}; };

View file

@ -248,7 +248,7 @@ describe("App utils app details", () => {
appName: releasedApp.name.en, appName: releasedApp.name.en,
status: JobStatusEnum.PENDING, status: JobStatusEnum.PENDING,
message: "Test message", message: "Test message",
manifestUrl: releasedApp.manifestUrl, manifestUrl: releasedApp.manifestUrl as string,
}; };
const appInstallationList: AppInstallationFragment[] = [ const appInstallationList: AppInstallationFragment[] = [
releasedAppInstallation, releasedAppInstallation,

View file

@ -108,7 +108,10 @@ export const getAppDetails = ({
}: GetAppDetailsOpts) => { }: GetAppDetailsOpts) => {
const isAppComingSoon = !("manifestUrl" in app); const isAppComingSoon = !("manifestUrl" in app);
const isAppInstallable = "manifestUrl" in app && !!navigateToAppInstallPage; const isAppInstallable =
"manifestUrl" in app &&
app.manifestUrl !== null &&
!!navigateToAppInstallPage;
const isAppForkableOnGithub = const isAppForkableOnGithub =
"githubForkUrl" in app && !!navigateToGithubForkPage; "githubForkUrl" in app && !!navigateToGithubForkPage;
const installationPending = const installationPending =