Handle Appstore app empty manifest URL (#3177)
This commit is contained in:
parent
d4d9b1b91c
commit
82071f4b88
6 changed files with 188 additions and 26 deletions
|
@ -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",
|
||||||
|
|
|
@ -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
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
Loading…
Reference in a new issue