avada-components-seoon 1.0.28 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CrossAppBanner/BannerCard.d.ts +12 -0
- package/dist/components/CrossAppBanner/BannerCard.d.ts.map +1 -0
- package/dist/components/CrossAppBanner/BannerCard.js +14 -0
- package/dist/components/CrossAppBanner/BannerCard.js.map +1 -0
- package/dist/components/CrossAppBanner/BannerLoadingSkeleton.d.ts +3 -0
- package/dist/components/CrossAppBanner/BannerLoadingSkeleton.d.ts.map +1 -0
- package/dist/components/CrossAppBanner/BannerLoadingSkeleton.js +6 -0
- package/dist/components/CrossAppBanner/BannerLoadingSkeleton.js.map +1 -0
- package/dist/components/CrossAppBanner/helpers.d.ts +22 -0
- package/dist/components/CrossAppBanner/helpers.d.ts.map +1 -0
- package/dist/components/CrossAppBanner/helpers.js +37 -0
- package/dist/components/CrossAppBanner/helpers.js.map +1 -0
- package/dist/components/CrossAppBanner/index.d.ts.map +1 -1
- package/dist/components/CrossAppBanner/index.js +5 -37
- package/dist/components/CrossAppBanner/index.js.map +1 -1
- package/dist/hooks/useFetchBannerData.d.ts +2 -2
- package/dist/hooks/useFetchBannerData.d.ts.map +1 -1
- package/dist/hooks/useFetchBannerData.js +21 -34
- package/dist/hooks/useFetchBannerData.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AppBannerItem } from '../../hooks/useFetchBannerData';
|
|
3
|
+
import { AppIdKeys } from './types';
|
|
4
|
+
export interface BannerCardProps {
|
|
5
|
+
app: AppBannerItem;
|
|
6
|
+
appId: AppIdKeys;
|
|
7
|
+
isOutsideApp?: boolean;
|
|
8
|
+
onDismiss: (appId: AppIdKeys) => void;
|
|
9
|
+
onInstallClick?: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const BannerCard: React.FC<BannerCardProps>;
|
|
12
|
+
//# sourceMappingURL=BannerCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerCard.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqChD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AppProvider, Button, LegacyCard, Text, Thumbnail } from '@shopify/polaris';
|
|
3
|
+
import { XIcon } from '@shopify/polaris-icons';
|
|
4
|
+
import { v4 as uuidV4 } from 'uuid';
|
|
5
|
+
import { getUTMParams } from '../../helpers/getProxyEndPoint';
|
|
6
|
+
export const BannerCard = ({ app, appId, isOutsideApp = false, onDismiss, onInstallClick, }) => {
|
|
7
|
+
const handleInstallClick = () => {
|
|
8
|
+
const url = isOutsideApp ? `${app.url}&utm_source=${getUTMParams(window.location.origin)}` : app.url;
|
|
9
|
+
window.open(`${url}&search_id=${uuidV4()}`);
|
|
10
|
+
onInstallClick?.();
|
|
11
|
+
};
|
|
12
|
+
return (_jsx(AppProvider, { i18n: {}, children: _jsx(LegacyCard, { sectioned: true, children: _jsxs("div", { className: "AC-CrossAppBanner", children: [_jsx("div", { className: "AC-CrossAppBanner__Thumbnail", children: _jsx(Thumbnail, { size: "small", source: app.image, alt: "" }) }), _jsxs("div", { className: "AC-CrossAppBanner__Content", children: [_jsx(Text, { variant: "headingMd", as: "strong", children: app.title }), _jsx("br", {}), _jsx("div", { dangerouslySetInnerHTML: { __html: app.description } })] }), _jsx("div", { className: "AC-CrossAppBanner__Install", children: _jsx(Button, { onClick: handleInstallClick, children: app.actionLabel }) }), _jsx("div", { className: "AC-CrossAppBanner__Close", children: _jsx(Button, { icon: XIcon, variant: "tertiary", onClick: () => onDismiss(appId) }) })] }) }) }));
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=BannerCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerCard.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAa,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAY9D,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EACpD,GAAG,EACH,KAAK,EACL,YAAY,GAAG,KAAK,EACpB,SAAS,EACT,cAAc,GACf,EAAE,EAAE;IACH,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,eAAe,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACrG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,cAAc,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,cAAc,EAAE,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,YACnB,KAAC,UAAU,IAAC,SAAS,kBACnB,eAAK,SAAS,EAAC,mBAAmB,aAChC,cAAK,SAAS,EAAC,8BAA8B,YAC3C,KAAC,SAAS,IAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAC,EAAE,GAAG,GAChD,EACN,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,EAAE,EAAC,QAAQ,YAClC,GAAG,CAAC,KAAK,GACL,EACP,cAAM,EACN,cAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,GAAI,IACzD,EACN,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,MAAM,IAAC,OAAO,EAAE,kBAAkB,YAAG,GAAG,CAAC,WAAW,GAAU,GAC3D,EACN,cAAK,SAAS,EAAC,0BAA0B,YACvC,KAAC,MAAM,IAAC,IAAI,EAAE,KAA4B,EAAE,OAAO,EAAC,UAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAI,GAC9F,IACF,GACK,GACD,CACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerLoadingSkeleton.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerLoadingSkeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAuBzC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AppProvider, LegacyCard, SkeletonBodyText, BlockStack, SkeletonDisplayText } from '@shopify/polaris';
|
|
3
|
+
export const BannerLoadingSkeleton = () => {
|
|
4
|
+
return (_jsx(AppProvider, { i18n: {}, children: _jsx(LegacyCard, { sectioned: true, children: _jsxs("div", { className: "AC-CrossAppBanner", style: { padding: '4px 0px' }, children: [_jsx("div", { className: "AC-CrossAppBanner__Thumbnail", children: _jsx("div", { style: { width: '40px', height: '40px', background: '#f4f6f8', borderRadius: '8px' } }) }), _jsx("div", { className: "AC-CrossAppBanner__Content", children: _jsxs(BlockStack, { gap: "400", children: [_jsx("div", { style: { width: '160px' }, children: _jsx(SkeletonBodyText, { lines: 1 }) }), _jsx(SkeletonBodyText, { lines: 2 })] }) }), _jsx("div", { className: "AC-CrossAppBanner__Install", children: _jsx(SkeletonDisplayText, { size: "small" }) })] }) }) }));
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=BannerLoadingSkeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BannerLoadingSkeleton.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/BannerLoadingSkeleton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE9G,MAAM,CAAC,MAAM,qBAAqB,GAAa,GAAG,EAAE;IAClD,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,YACnB,KAAC,UAAU,IAAC,SAAS,kBACnB,eAAK,SAAS,EAAC,mBAAmB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,aAC9D,cAAK,SAAS,EAAC,8BAA8B,YAC3C,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAI,GACzF,EACN,cAAK,SAAS,EAAC,4BAA4B,YACzC,MAAC,UAAU,IAAC,GAAG,EAAC,KAAK,aACnB,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAC5B,KAAC,gBAAgB,IAAC,KAAK,EAAE,CAAC,GAAI,GAC1B,EACN,KAAC,gBAAgB,IAAC,KAAK,EAAE,CAAC,GAAI,IACnB,GACT,EACN,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,mBAAmB,IAAC,IAAI,EAAC,OAAO,GAAG,GAChC,IACF,GACK,GACD,CACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AppIdKeys, AppIdValues, CheckInstalledResponse } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Create initial dismissed state for all app IDs
|
|
4
|
+
*/
|
|
5
|
+
export declare const createInitialDismissedState: () => Record<AppIdKeys, boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Create initial installed state for all app ID values
|
|
8
|
+
*/
|
|
9
|
+
export declare const createInitialInstalledState: () => Record<AppIdValues, boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Get current page path from window location
|
|
12
|
+
*/
|
|
13
|
+
export declare const getCurrentPagePath: () => string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate storage key for dismissed banner
|
|
16
|
+
*/
|
|
17
|
+
export declare const getStorageKey: (appId: AppIdKeys) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Check if app is installed based on the response data
|
|
20
|
+
*/
|
|
21
|
+
export declare const checkIfAppInstalled: (currentAppId: AppIdKeys, data: CheckInstalledResponse) => boolean;
|
|
22
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAwB,MAAM,SAAS,CAAC;AAE/F;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAEvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,MAAM,CAAC,WAAW,EAAE,OAAO,CAKzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAGrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,KAAG,MAIhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,cAAc,SAAS,EAAE,MAAM,sBAAsB,KAAG,OAG3F,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getAppIdByOrigin } from '../../helpers/getProxyEndPoint';
|
|
2
|
+
import { APP_IDS, APP_ID_KEYS } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Create initial dismissed state for all app IDs
|
|
5
|
+
*/
|
|
6
|
+
export const createInitialDismissedState = () => {
|
|
7
|
+
return Object.fromEntries(APP_ID_KEYS.map(key => [key, false]));
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Create initial installed state for all app ID values
|
|
11
|
+
*/
|
|
12
|
+
export const createInitialInstalledState = () => {
|
|
13
|
+
return Object.fromEntries(Object.values(APP_IDS).map(value => [value, false]));
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Get current page path from window location
|
|
17
|
+
*/
|
|
18
|
+
export const getCurrentPagePath = () => {
|
|
19
|
+
const pathMatch = window.location.href.match(/https?:\/\/[^/]+(\/[^?]+)/);
|
|
20
|
+
return pathMatch ? pathMatch[1] : '';
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Generate storage key for dismissed banner
|
|
24
|
+
*/
|
|
25
|
+
export const getStorageKey = (appId) => {
|
|
26
|
+
const pagePath = getCurrentPagePath();
|
|
27
|
+
const appOriginId = getAppIdByOrigin(window.location.origin);
|
|
28
|
+
return `cross-app-banner-dismissed-${appOriginId}-${pagePath}-${appId}`;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Check if app is installed based on the response data
|
|
32
|
+
*/
|
|
33
|
+
export const checkIfAppInstalled = (currentAppId, data) => {
|
|
34
|
+
const isSeoOrBlogApp = currentAppId === 'avada-seo-suite' || currentAppId === 'seoon-blog';
|
|
35
|
+
return isSeoOrBlogApp ? data.userType === 'user' : !!data.isInstalled;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAkD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/F;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAA+B,EAAE;IAC1E,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAA+B,CAAC;AAChG,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAiC,EAAE;IAC5E,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAG5E,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC1E,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAgB,EAAU,EAAE;IACxD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,8BAA8B,WAAW,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;AAC1E,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAuB,EAAE,IAA4B,EAAW,EAAE;IACpG,MAAM,cAAc,GAAG,YAAY,KAAK,iBAAiB,IAAI,YAAY,KAAK,YAAY,CAAC;IAC3F,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AACxE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,EACL,mBAAmB,EAGnB,uBAAuB,EAIxB,MAAM,SAAS,CAAC;AASjB,OAAO,cAAc,CAAC;AAEtB,eAAO,MAAM,cAAc,EAAE,uBAoH5B,CAAC;;AAEF,wBAA0C"}
|
|
@@ -1,45 +1,13 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React, { useEffect, useState } from 'react';
|
|
3
|
-
import { AppProvider, Button, LegacyCard, Text, Thumbnail, SkeletonBodyText, BlockStack, SkeletonDisplayText, } from '@shopify/polaris';
|
|
4
|
-
import { XIcon } from '@shopify/polaris-icons';
|
|
5
|
-
import { v4 as uuidV4 } from 'uuid';
|
|
6
|
-
import { getAppIdByOrigin, getUTMParams, } from '../../helpers/getProxyEndPoint';
|
|
7
3
|
import { isEmpty } from '../../helpers/isEmpty';
|
|
8
4
|
import useFetchBannerData from '../../hooks/useFetchBannerData';
|
|
5
|
+
import { useCheckAppInstalled } from '../../hooks/useCheckAppInstalled';
|
|
9
6
|
import { APP_IDS, APP_ID_KEYS, APP_ID_KEYS_OUT_SIDE_SEO, } from './types';
|
|
7
|
+
import { createInitialDismissedState, createInitialInstalledState, getStorageKey, checkIfAppInstalled, } from './helpers';
|
|
8
|
+
import { BannerLoadingSkeleton } from './BannerLoadingSkeleton';
|
|
9
|
+
import { BannerCard } from './BannerCard';
|
|
10
10
|
import './index.scss';
|
|
11
|
-
import { useCheckAppInstalled } from '../../hooks/useCheckAppInstalled';
|
|
12
|
-
// Helper functions
|
|
13
|
-
const createInitialDismissedState = () => {
|
|
14
|
-
return Object.fromEntries(APP_ID_KEYS.map(key => [key, false]));
|
|
15
|
-
};
|
|
16
|
-
const createInitialInstalledState = () => {
|
|
17
|
-
return Object.fromEntries(Object.values(APP_IDS).map(value => [value, false]));
|
|
18
|
-
};
|
|
19
|
-
const getCurrentPagePath = () => {
|
|
20
|
-
const pathMatch = window.location.href.match(/https?:\/\/[^/]+(\/[^?]+)/);
|
|
21
|
-
return pathMatch ? pathMatch[1] : '';
|
|
22
|
-
};
|
|
23
|
-
const getStorageKey = (appId) => {
|
|
24
|
-
const pagePath = getCurrentPagePath();
|
|
25
|
-
const appOriginId = getAppIdByOrigin(window.location.origin);
|
|
26
|
-
return `cross-app-banner-dismissed-${appOriginId}-${pagePath}-${appId}`;
|
|
27
|
-
};
|
|
28
|
-
const checkIfAppInstalled = (currentAppId, data) => {
|
|
29
|
-
const isSeoOrBlogApp = currentAppId === 'avada-seo-suite' || currentAppId === 'seoon-blog';
|
|
30
|
-
return isSeoOrBlogApp ? data.userType === 'user' : !!data.isInstalled;
|
|
31
|
-
};
|
|
32
|
-
const BannerLoadingSkeleton = () => {
|
|
33
|
-
return (_jsx(AppProvider, { i18n: {}, children: _jsx(LegacyCard, { sectioned: true, children: _jsxs("div", { className: "AC-CrossAppBanner", style: { padding: '4px 0px' }, children: [_jsx("div", { className: "AC-CrossAppBanner__Thumbnail", children: _jsx("div", { style: { width: '40px', height: '40px', background: '#f4f6f8', borderRadius: '8px' } }) }), _jsx("div", { className: "AC-CrossAppBanner__Content", children: _jsxs(BlockStack, { gap: "400", children: [_jsx("div", { style: { width: '160px' }, children: _jsx(SkeletonBodyText, { lines: 1 }) }), _jsx(SkeletonBodyText, { lines: 2 })] }) }), _jsx("div", { className: "AC-CrossAppBanner__Install", children: _jsx(SkeletonDisplayText, { size: "small" }) })] }) }) }));
|
|
34
|
-
};
|
|
35
|
-
const BannerCard = ({ app, appId, isOutsideApp = false, onDismiss, onInstallClick, }) => {
|
|
36
|
-
const handleInstallClick = () => {
|
|
37
|
-
const url = isOutsideApp ? `${app.url}&utm_source=${getUTMParams(window.location.origin)}` : app.url;
|
|
38
|
-
window.open(`${url}&search_id=${uuidV4()}`);
|
|
39
|
-
onInstallClick?.();
|
|
40
|
-
};
|
|
41
|
-
return (_jsx(AppProvider, { i18n: {}, children: _jsx(LegacyCard, { sectioned: true, children: _jsxs("div", { className: "AC-CrossAppBanner", children: [_jsx("div", { className: "AC-CrossAppBanner__Thumbnail", children: _jsx(Thumbnail, { size: "small", source: app.image, alt: "" }) }), _jsxs("div", { className: "AC-CrossAppBanner__Content", children: [_jsx(Text, { variant: "headingMd", as: "strong", children: app.title }), _jsx("br", {}), app.description] }), _jsx("div", { className: "AC-CrossAppBanner__Install", children: _jsx(Button, { onClick: handleInstallClick, children: app.actionLabel }) }), _jsx("div", { className: "AC-CrossAppBanner__Close", children: _jsx(Button, { icon: XIcon, variant: "tertiary", onClick: () => onDismiss(appId) }) })] }) }) }));
|
|
42
|
-
};
|
|
43
11
|
export const CrossAppBanner = ({ shopDomain, clickInstallCallback, appIds = APP_ID_KEYS, urlJson = '', }) => {
|
|
44
12
|
const { bannerData, isLoadingBannerData } = useFetchBannerData({ url: urlJson });
|
|
45
13
|
const [isBannerDismissed, setIsBannerDismissed] = useState(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/CrossAppBanner/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,8 @@ interface UseFetchBannerDataOptions {
|
|
|
17
17
|
interface UseFetchBannerDataReturn {
|
|
18
18
|
bannerData: BannerSeoAppData;
|
|
19
19
|
isLoadingBannerData: boolean;
|
|
20
|
-
fetchError:
|
|
21
|
-
refetchBannerData: () => Promise<
|
|
20
|
+
fetchError: unknown;
|
|
21
|
+
refetchBannerData: () => Promise<BannerSeoAppData | undefined>;
|
|
22
22
|
}
|
|
23
23
|
export default function useFetchBannerData({ url, initLoad, }?: UseFetchBannerDataOptions): UseFetchBannerDataReturn;
|
|
24
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchBannerData.d.ts","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"useFetchBannerData.d.ts","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,wBAAwB;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;CAChE;AAID,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,GAAQ,EACR,QAAe,GAChB,GAAE,yBAA8B,GAAG,wBAAwB,CA6B3D"}
|
|
@@ -1,41 +1,28 @@
|
|
|
1
|
-
import
|
|
1
|
+
import useSWR from 'swr';
|
|
2
|
+
const TEN_MINUTES = 600000;
|
|
2
3
|
export default function useFetchBannerData({ url = '', initLoad = true, } = {}) {
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const [fetchError, setFetchError] = useState(null);
|
|
9
|
-
const fetchBannerData = async () => {
|
|
10
|
-
setIsLoadingBannerData(true);
|
|
11
|
-
setFetchError(null);
|
|
12
|
-
try {
|
|
13
|
-
const response = await fetch(url);
|
|
14
|
-
if (!response.ok) {
|
|
15
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
16
|
-
}
|
|
17
|
-
const responseData = await response.json();
|
|
18
|
-
setBannerData(responseData);
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
const error = err instanceof Error ? err : new Error('Unknown error occurred');
|
|
22
|
-
setFetchError(error);
|
|
23
|
-
console.error('Error fetching banner SEO app data:', error);
|
|
24
|
-
}
|
|
25
|
-
finally {
|
|
26
|
-
setIsLoadingBannerData(false);
|
|
4
|
+
const swrKey = initLoad && url ? url : null;
|
|
5
|
+
const fetcher = async (fetchUrl) => {
|
|
6
|
+
const response = await fetch(fetchUrl);
|
|
7
|
+
if (!response.ok) {
|
|
8
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
27
9
|
}
|
|
10
|
+
const responseData = await response.json();
|
|
11
|
+
return responseData;
|
|
28
12
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
13
|
+
const { data, isLoading, error, mutate } = useSWR(swrKey, fetcher, {
|
|
14
|
+
revalidateOnFocus: false,
|
|
15
|
+
revalidateOnReconnect: false,
|
|
16
|
+
revalidateIfStale: false,
|
|
17
|
+
shouldRetryOnError: false,
|
|
18
|
+
dedupingInterval: TEN_MINUTES,
|
|
19
|
+
focusThrottleInterval: TEN_MINUTES,
|
|
20
|
+
});
|
|
34
21
|
return {
|
|
35
|
-
bannerData,
|
|
36
|
-
isLoadingBannerData,
|
|
37
|
-
fetchError,
|
|
38
|
-
refetchBannerData:
|
|
22
|
+
bannerData: data ?? { appSeoon: [], appOutSide: [] },
|
|
23
|
+
isLoadingBannerData: isLoading,
|
|
24
|
+
fetchError: error,
|
|
25
|
+
refetchBannerData: () => mutate(),
|
|
39
26
|
};
|
|
40
27
|
}
|
|
41
28
|
//# sourceMappingURL=useFetchBannerData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchBannerData.js","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useFetchBannerData.js","sourceRoot":"","sources":["../../src/hooks/useFetchBannerData.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,KAAK,CAAC;AA4BzB,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,GAAG,GAAG,EAAE,EACR,QAAQ,GAAG,IAAI,MACc,EAAE;IAC/B,MAAM,MAAM,GAAG,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5C,MAAM,OAAO,GAAG,KAAK,EAAE,QAAgB,EAA6B,EAAE;QACpE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,YAAY,GAAqB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAmB,MAAM,EAAE,OAAO,EAAE;QACnF,iBAAiB,EAAE,KAAK;QACxB,qBAAqB,EAAE,KAAK;QAC5B,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,WAAW;QAC7B,qBAAqB,EAAE,WAAW;KACnC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACpD,mBAAmB,EAAE,SAAS;QAC9B,UAAU,EAAE,KAAK;QACjB,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;KAClC,CAAC;AACJ,CAAC"}
|