Digital delivery SDK reference

Protected digital-order delivery views and download actions.

Import these public values from @upstorr/theme-sdk/v1. Do not import their internal source files.

applyThemeDigitalDeliveryStatus

applyThemeDigitalDeliveryStatus(view: ThemeDigitalDeliveryView, status: ThemeDigitalDeliveryStatus): ThemeDigitalDeliveryView

createThemeDigitalDeliveryProductView

createThemeDigitalDeliveryProductView(view: ThemeDigitalDeliveryView): ThemeDigitalDeliveryProductView

createThemeDigitalDeliveryView

createThemeDigitalDeliveryView(data: unknown): ThemeDigitalDeliveryView

fetchThemeDigitalDeliveryStatus

fetchThemeDigitalDeliveryStatus(input: { entitlementId: string; previousRemaining: number | null; }): Promise<ThemeDigitalDeliveryStatus>

isThemeDigitalDeliveryButtonNativeDisabled

isThemeDigitalDeliveryButtonNativeDisabled(value: unknown): boolean
isThemeDigitalDeliveryDownloadLink(value: unknown): boolean

startThemeDigitalDeliveryDownload

startThemeDigitalDeliveryDownload(input: { entitlementId: string; }): Promise<void>

ThemeDigitalDeliveryAction

type ThemeDigitalDeliveryAction = {
    view: ThemeDigitalDeliveryView;
    busy: boolean;
    button: {
        disabled: boolean;
        nativeDisabled: boolean;
    };
    download: () => Promise<void>;
};

ThemeDigitalDeliveryProductView

type ThemeDigitalDeliveryProductView = {
    id: string;
    title: string;
    description: string | null;
    images: string[];
    thumbnail: string | null;
    fulfillmentKind: 'DIGITAL';
    metadata: {
        digitalDeliveryMediaPlaceholder: true;
    };
};

ThemeDigitalDeliveryStatus

type ThemeDigitalDeliveryStatus = {
    success: boolean;
    changed: boolean;
    remainingDownloads: number | null;
    remainingLabel: string;
    canDownload: boolean;
    buttonLabel: string;
    statusMessage: string;
    claimToken?: string | null;
};

ThemeDigitalDeliveryView

type ThemeDigitalDeliveryView = {
    entitlementId: string;
    productTitle: string;
    productDescription: string | null;
    productImageUrl: string | null;
    productImageUrls: string[];
    filename: string;
    remainingDownloads: number | null;
    remainingLabel: string;
    expiresAt: string | null;
    expiryLabel: string;
    canDownload: boolean;
    title: string;
    buttonLabel: string;
    statusMessage: string;
    error: string | null;
    errorCode: string | null;
    preview: boolean;
};

useThemeDigitalDelivery

useThemeDigitalDelivery(initialView: ThemeDigitalDeliveryView): ThemeDigitalDeliveryAction