@redneckz/wildless-cms-uni-blocks 0.14.1064 → 0.14.1065
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/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +49 -27
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/RatesTable/RatesTable.d.ts +3 -0
- package/bundle/components/RatesTable/RatesTableContent.d.ts +13 -3
- package/bundle/components/RatesTable/RatesTableItem.d.ts +2 -2
- package/bundle/hooks/useRates.d.ts +11 -2
- package/dist/components/RatesTable/RatesTable.d.ts +3 -0
- package/dist/components/RatesTable/RatesTable.js +23 -5
- package/dist/components/RatesTable/RatesTable.js.map +1 -1
- package/dist/components/RatesTable/RatesTableContent.d.ts +13 -3
- package/dist/components/RatesTable/RatesTableItem.d.ts +2 -2
- package/dist/components/RatesTable/RatesTableItem.js.map +1 -1
- package/dist/hooks/useRates.d.ts +11 -2
- package/dist/hooks/useRates.js +28 -20
- package/dist/hooks/useRates.js.map +1 -1
- package/lib/components/RatesTable/RatesTable.d.ts +3 -0
- package/lib/components/RatesTable/RatesTable.fixture.d.ts +1 -1
- package/lib/components/RatesTable/RatesTable.fixture.mobile.d.ts +1 -1
- package/lib/components/RatesTable/RatesTable.js +23 -5
- package/lib/components/RatesTable/RatesTable.js.map +1 -1
- package/lib/components/RatesTable/RatesTableContent.d.ts +13 -3
- package/lib/components/RatesTable/RatesTableItem.d.ts +2 -2
- package/lib/components/RatesTable/RatesTableItem.js.map +1 -1
- package/lib/hooks/useRates.d.ts +11 -2
- package/lib/hooks/useRates.js +28 -20
- package/lib/hooks/useRates.js.map +1 -1
- package/mobile/bundle/bundle.umd.js +49 -27
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/RatesTable/RatesTable.d.ts +3 -0
- package/mobile/bundle/components/RatesTable/RatesTableContent.d.ts +13 -3
- package/mobile/bundle/components/RatesTable/RatesTableItem.d.ts +2 -2
- package/mobile/bundle/hooks/useRates.d.ts +11 -2
- package/mobile/dist/components/RatesTable/RatesTable.d.ts +3 -0
- package/mobile/dist/components/RatesTable/RatesTable.js +23 -5
- package/mobile/dist/components/RatesTable/RatesTable.js.map +1 -1
- package/mobile/dist/components/RatesTable/RatesTableContent.d.ts +13 -3
- package/mobile/dist/components/RatesTable/RatesTableItem.d.ts +2 -2
- package/mobile/dist/components/RatesTable/RatesTableItem.js.map +1 -1
- package/mobile/dist/hooks/useRates.d.ts +11 -2
- package/mobile/dist/hooks/useRates.js +28 -20
- package/mobile/dist/hooks/useRates.js.map +1 -1
- package/mobile/lib/components/RatesTable/RatesTable.d.ts +3 -0
- package/mobile/lib/components/RatesTable/RatesTable.js +23 -5
- package/mobile/lib/components/RatesTable/RatesTable.js.map +1 -1
- package/mobile/lib/components/RatesTable/RatesTableContent.d.ts +13 -3
- package/mobile/lib/components/RatesTable/RatesTableItem.d.ts +2 -2
- package/mobile/lib/components/RatesTable/RatesTableItem.js.map +1 -1
- package/mobile/lib/hooks/useRates.d.ts +11 -2
- package/mobile/lib/hooks/useRates.js +28 -20
- package/mobile/lib/hooks/useRates.js.map +1 -1
- package/mobile/src/components/RatesTable/RatesTable.example.json +5 -3
- package/mobile/src/components/RatesTable/RatesTable.tsx +71 -16
- package/mobile/src/components/RatesTable/RatesTableContent.ts +14 -3
- package/mobile/src/components/RatesTable/RatesTableItem.tsx +2 -1
- package/mobile/src/hooks/useRates.ts +46 -23
- package/package.json +1 -1
- package/src/components/RatesTable/RatesTable.example.json +5 -3
- package/src/components/RatesTable/RatesTable.fixture.mobile.tsx +10 -5
- package/src/components/RatesTable/RatesTable.fixture.tsx +10 -5
- package/src/components/RatesTable/RatesTable.tsx +71 -16
- package/src/components/RatesTable/RatesTableContent.ts +14 -3
- package/src/components/RatesTable/RatesTableItem.tsx +2 -1
- package/src/hooks/useRates.ts +46 -23
|
@@ -2,5 +2,8 @@ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
|
|
|
2
2
|
import { type RatesTableContent } from './RatesTableContent';
|
|
3
3
|
interface RatesTableProps extends RatesTableContent, UniBlockProps {
|
|
4
4
|
}
|
|
5
|
+
export declare type ArchiveRates = {
|
|
6
|
+
isArchive?: boolean;
|
|
7
|
+
};
|
|
5
8
|
export declare const RatesTable: import("@redneckz/uni-jsx").UNIComponent<RatesTableProps, any, any>;
|
|
6
9
|
export {};
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { type HrefProps } from '../../model/LinkProps';
|
|
2
2
|
/**
|
|
3
|
-
* @title
|
|
3
|
+
* @title Тип курсов
|
|
4
|
+
* @default "Курсы для физ.лиц"
|
|
5
|
+
* @enumNames [
|
|
6
|
+
* "Курсы для физ.лиц",
|
|
7
|
+
* "Курсы для держателей карт"
|
|
8
|
+
* ]
|
|
9
|
+
*/
|
|
10
|
+
export declare type RatesType = 'natural' | 'cards';
|
|
11
|
+
/**
|
|
12
|
+
* @title Кросс-курсы
|
|
4
13
|
*/
|
|
5
14
|
export interface RatesTableContent extends HrefProps {
|
|
6
15
|
/** @title Информационное сообщение */
|
|
7
16
|
infoMessage?: string;
|
|
8
17
|
/** @title Заголовок */
|
|
9
18
|
title?: string;
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
ratesType?: RatesType;
|
|
20
|
+
/** @title Сообщение при отсутствии ставок */
|
|
21
|
+
notFoundMessage?: string;
|
|
12
22
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type RateItem } from '../../ui-kit/Rate/Rate';
|
|
2
|
+
import { type ArchiveRates } from './RatesTable';
|
|
2
3
|
import { type RatesTableContent } from './RatesTableContent';
|
|
3
|
-
interface RatesTableItemProps extends RatesTableContent {
|
|
4
|
+
export interface RatesTableItemProps extends RatesTableContent, ArchiveRates {
|
|
4
5
|
maxDate?: string;
|
|
5
6
|
isRatesValid?: boolean;
|
|
6
7
|
list: RateItem[];
|
|
7
8
|
}
|
|
8
9
|
export declare const RatesTableItem: import("@redneckz/uni-jsx").UNIComponent<RatesTableItemProps, any, any>;
|
|
9
|
-
export {};
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import { type RatesType } from '../components/RatesTable/RatesTableContent';
|
|
1
2
|
import { type RateItem } from '../ui-kit/Rate/Rate';
|
|
2
|
-
declare type RateItemList = RateItem[];
|
|
3
|
-
|
|
3
|
+
export declare type RateItemList = RateItem[];
|
|
4
|
+
declare type FetchRatesProps = {
|
|
5
|
+
ratesType?: RatesType;
|
|
6
|
+
date?: Date;
|
|
7
|
+
fetchArchive?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function useRates({ ratesType, fetchArchive }: FetchRatesProps): {
|
|
10
|
+
ratesList: any;
|
|
11
|
+
isLoad: boolean;
|
|
12
|
+
};
|
|
4
13
|
export {};
|
|
@@ -2,5 +2,8 @@ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
|
|
|
2
2
|
import { type RatesTableContent } from './RatesTableContent';
|
|
3
3
|
interface RatesTableProps extends RatesTableContent, UniBlockProps {
|
|
4
4
|
}
|
|
5
|
+
export declare type ArchiveRates = {
|
|
6
|
+
isArchive?: boolean;
|
|
7
|
+
};
|
|
5
8
|
export declare const RatesTable: import("@redneckz/uni-jsx").UNIComponent<RatesTableProps, any, any>;
|
|
6
9
|
export {};
|
|
@@ -2,16 +2,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
2
2
|
exports.RatesTable = void 0;
|
|
3
3
|
const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
|
|
4
4
|
const uni_jsx_1 = require("@redneckz/uni-jsx");
|
|
5
|
+
const hooks_1 = require("@redneckz/uni-jsx/lib/hooks");
|
|
5
6
|
const useRates_1 = require("../../hooks/useRates");
|
|
6
7
|
const BlockWrapper_1 = require("../../ui-kit/BlockWrapper");
|
|
7
8
|
const Heading_1 = require("../../ui-kit/Heading/Heading");
|
|
9
|
+
const Loader_1 = require("../../ui-kit/Loader/Loader");
|
|
10
|
+
const NotFound_1 = require("../../ui-kit/NotFound/NotFound");
|
|
8
11
|
const style_1 = require("../../utils/style");
|
|
9
12
|
const RatesTableItem_1 = require("./RatesTableItem");
|
|
10
|
-
const renderDataPickForm_1 = require("./renderDataPickForm");
|
|
11
13
|
const renderLink_1 = require("./renderLink");
|
|
12
|
-
exports.RatesTable = (0, uni_jsx_1.JSX)(({ href, className = '', infoMessage,
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
|
|
14
|
+
exports.RatesTable = (0, uni_jsx_1.JSX)(({ href, ratesType = 'natural', className = '', infoMessage, notFoundMessage, title, ...rest }) => {
|
|
15
|
+
// const [date, setDate] = useState<Date>();
|
|
16
|
+
const [fetchArchive, setFetchArchive] = (0, hooks_1.useState)(true);
|
|
17
|
+
//const isArchive = ratesType === 'archive';
|
|
18
|
+
const { ratesList, isLoad } = (0, useRates_1.useRates)({
|
|
19
|
+
ratesType,
|
|
20
|
+
fetchArchive,
|
|
21
|
+
});
|
|
22
|
+
(0, hooks_1.useEffect)(() => {
|
|
23
|
+
setFetchArchive(false);
|
|
24
|
+
}, []);
|
|
25
|
+
const isRatesValid = ratesList?.length > 0;
|
|
26
|
+
return ((0, jsx_runtime_1.jsxs)(BlockWrapper_1.BlockWrapper, { className: (0, style_1.style)('p-6xl space-y-xl', className), defaultPadding: "p-0", ...rest, children: [(0, jsx_runtime_1.jsx)(Heading_1.Heading, { className: "mb-xl", children: title }), isLoad ? (renderRatesContent({
|
|
27
|
+
ratesList,
|
|
28
|
+
isArchive: false,
|
|
29
|
+
infoMessage,
|
|
30
|
+
isRatesValid,
|
|
31
|
+
notFoundMessage,
|
|
32
|
+
})) : ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { position: "static" })), href ? (0, renderLink_1.renderLink)(href) : null] }));
|
|
16
33
|
});
|
|
34
|
+
const renderRatesContent = ({ ratesList = [], isArchive = false, infoMessage, isRatesValid, notFoundMessage, }) => ratesList.length > 0 ? (ratesList.map((list, i) => ((0, jsx_runtime_1.jsx)(RatesTableItem_1.RatesTableItem, { list: list, isRatesValid: isRatesValid, isArchive: isArchive, infoMessage: infoMessage }, String(i))))) : ((0, jsx_runtime_1.jsx)(NotFound_1.NotFound, { description: notFoundMessage }));
|
|
17
35
|
//# sourceMappingURL=RatesTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RatesTable.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTable.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"RatesTable.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTable.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,uDAAkE;AAClE,mDAAmE;AACnE,4DAAyD;AACzD,0DAAuD;AACvD,uDAAoD;AACpD,6DAA0D;AAE1D,6CAA0C;AAE1C,qDAAkD;AAClD,6CAA0C;AAa7B,QAAA,UAAU,GAAG,IAAA,aAAG,EAC3B,CAAC,EACC,IAAI,EACJ,SAAS,GAAG,SAAS,EACrB,SAAS,GAAG,EAAE,EACd,WAAW,EACX,eAAe,EACf,KAAK,EACL,GAAG,IAAI,EACR,EAAE,EAAE;IACH,4CAA4C;IAC5C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAU,IAAI,CAAC,CAAC;IAEhE,4CAA4C;IAE5C,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAA,mBAAQ,EAAC;QACrC,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC;IAE3C,OAAO,CACL,wBAAC,2BAAY,IAAC,SAAS,EAAE,IAAA,aAAK,EAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE,cAAc,EAAC,KAAK,KAAK,IAAI,aAC1F,uBAAC,iBAAO,IAAC,SAAS,EAAC,OAAO,YAAE,KAAK,GAAW,EAI3C,MAAM,CAAC,CAAC,CAAC,CACR,kBAAkB,CAAC;gBACjB,SAAS;gBACT,SAAS,EAAE,KAAK;gBAChB,WAAW;gBACX,YAAY;gBACZ,eAAe;aAChB,CAAC,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,eAAM,IAAC,QAAQ,EAAC,QAAQ,GAAG,CAC7B,EACA,IAAI,CAAC,CAAC,CAAC,IAAA,uBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAClB,CAChB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,KAAK,EACjB,WAAW,EACX,YAAY,EACZ,eAAe,GACI,EAAE,EAAE,CACvB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,uBAAC,+BAAc,IACb,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EAEpB,WAAW,EAAE,WAAW,IADnB,MAAM,CAAC,CAAC,CAAC,CAEd,CACH,CAAC,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,mBAAQ,IAAC,WAAW,EAAE,eAAe,GAAI,CAC3C,CAAC"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { type HrefProps } from '../../model/LinkProps';
|
|
2
2
|
/**
|
|
3
|
-
* @title
|
|
3
|
+
* @title Тип курсов
|
|
4
|
+
* @default "Курсы для физ.лиц"
|
|
5
|
+
* @enumNames [
|
|
6
|
+
* "Курсы для физ.лиц",
|
|
7
|
+
* "Курсы для держателей карт"
|
|
8
|
+
* ]
|
|
9
|
+
*/
|
|
10
|
+
export declare type RatesType = 'natural' | 'cards';
|
|
11
|
+
/**
|
|
12
|
+
* @title Кросс-курсы
|
|
4
13
|
*/
|
|
5
14
|
export interface RatesTableContent extends HrefProps {
|
|
6
15
|
/** @title Информационное сообщение */
|
|
7
16
|
infoMessage?: string;
|
|
8
17
|
/** @title Заголовок */
|
|
9
18
|
title?: string;
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
ratesType?: RatesType;
|
|
20
|
+
/** @title Сообщение при отсутствии ставок */
|
|
21
|
+
notFoundMessage?: string;
|
|
12
22
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type RateItem } from '../../ui-kit/Rate/Rate';
|
|
2
|
+
import { type ArchiveRates } from './RatesTable';
|
|
2
3
|
import { type RatesTableContent } from './RatesTableContent';
|
|
3
|
-
interface RatesTableItemProps extends RatesTableContent {
|
|
4
|
+
export interface RatesTableItemProps extends RatesTableContent, ArchiveRates {
|
|
4
5
|
maxDate?: string;
|
|
5
6
|
isRatesValid?: boolean;
|
|
6
7
|
list: RateItem[];
|
|
7
8
|
}
|
|
8
9
|
export declare const RatesTableItem: import("@redneckz/uni-jsx").UNIComponent<RatesTableItemProps, any, any>;
|
|
9
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RatesTableItem.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTableItem.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,gEAA6D;AAC7D,iDAAiF;AACjF,iDAA8C;AAC9C,6CAA0C;
|
|
1
|
+
{"version":3,"file":"RatesTableItem.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTableItem.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,gEAA6D;AAC7D,iDAAiF;AACjF,iDAA8C;AAC9C,6CAA0C;AAG1C,6CAA0C;AAQ7B,QAAA,cAAc,GAAG,IAAA,aAAG,EAC/B,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,YAAY,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IAC9D,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,CACL,iCAAK,SAAS,EAAC,mBAAmB,aAC/B,OAAO,IAAI,IAAA,uBAAU,EAAC,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC1D,iCAAK,SAAS,EAAE,IAAA,aAAK,EAAC,yBAAkB,CAAC,aACvC,uBAAC,WAAI,IAAC,IAAI,EAAC,aAAa,qDAAc,EACtC,uBAAC,WAAI,IAAC,IAAI,EAAC,aAAa,2DAAe,EACvC,uBAAC,WAAI,IAAC,IAAI,EAAC,aAAa,2DAAe,IACnC,EACL,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,uBAAC,WAAI,OAAqB,IAAI,IAAnB,MAAM,CAAC,CAAC,CAAC,CAAc,CAAC,CAC1D,CAAC,CAAC,CAAC,CACF,uBAAC,qBAAS,mJAAoC,CAC/C,EAED,uBAAC,qBAAS,IAAC,KAAK,EAAC,qBAAqB,YAAE,WAAW,GAAa,IAC5D,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import { type RatesType } from '../components/RatesTable/RatesTableContent';
|
|
1
2
|
import { type RateItem } from '../ui-kit/Rate/Rate';
|
|
2
|
-
declare type RateItemList = RateItem[];
|
|
3
|
-
|
|
3
|
+
export declare type RateItemList = RateItem[];
|
|
4
|
+
declare type FetchRatesProps = {
|
|
5
|
+
ratesType?: RatesType;
|
|
6
|
+
date?: Date;
|
|
7
|
+
fetchArchive?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function useRates({ ratesType, fetchArchive }: FetchRatesProps): {
|
|
10
|
+
ratesList: any;
|
|
11
|
+
isLoad: boolean;
|
|
12
|
+
};
|
|
4
13
|
export {};
|
|
@@ -4,39 +4,47 @@ const useAsyncData_1 = require("@redneckz/uni-jsx/lib/hooks/useAsyncData");
|
|
|
4
4
|
const useLocalStore_1 = require("@redneckz/uni-jsx/lib/Store/useLocalStore");
|
|
5
5
|
const apiBaseUrl_1 = require("../api/apiBaseUrl");
|
|
6
6
|
const fetchJSON_1 = require("../utils/fetchJSON");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
7
|
+
const EMPTY_RATES = [];
|
|
8
|
+
const RATES_URL = {
|
|
9
|
+
natural: `${apiBaseUrl_1.API_BASE_URI}/rates`,
|
|
10
|
+
cards: `${apiBaseUrl_1.API_BASE_URI}/ratescards`,
|
|
11
|
+
//archive: `${API_BASE_URI}/historyrates`,
|
|
12
|
+
};
|
|
13
|
+
const RATES_KEY = {
|
|
14
|
+
natural: 'rates',
|
|
15
|
+
cards: 'ratescards',
|
|
16
|
+
//archive: 'historyrates',
|
|
17
|
+
};
|
|
18
|
+
// TODO: для архива прокинуть date
|
|
19
|
+
function useRates({ ratesType = 'natural', fetchArchive = true }) {
|
|
20
|
+
//const url = ratesType === 'archive' ? getArchiveRatesURL(date) : RATES_URL[ratesType];
|
|
21
|
+
const url = RATES_URL[ratesType];
|
|
22
|
+
const rateKey = RATES_KEY[ratesType];
|
|
21
23
|
const ratesStore = (0, useLocalStore_1.useLocalStore)();
|
|
22
24
|
// проверяем, надо ли обновлять значения ставок
|
|
23
|
-
const shouldUpdate = getShouldUpdate(
|
|
25
|
+
const shouldUpdate = getShouldUpdate(rateKey, ratesStore, fetchArchive);
|
|
24
26
|
// костыль, не отправлять запрос на бэк, если уже был запрос менее 15 мин назад
|
|
25
27
|
const { data } = (0, useAsyncData_1.useAsyncData)(shouldUpdate ? url : '', fetchJSON_1.fetchJSONUnsafe);
|
|
26
28
|
// если есть data и значение надо обновить, то обновляем локалсторадж
|
|
27
29
|
if (shouldUpdate && data) {
|
|
28
30
|
const nextUpdate = getTimeAfter15Minutes();
|
|
29
|
-
ratesStore[rateKey] = { rate: data, nextUpdate };
|
|
31
|
+
ratesStore[rateKey] = { rate: data ?? [], nextUpdate };
|
|
30
32
|
}
|
|
31
33
|
// берем данные из локалсторадж
|
|
32
34
|
const rates = ratesStore[rateKey]?.rate;
|
|
35
|
+
const isLoad = Array.isArray(rates);
|
|
33
36
|
// возвращаем данные из локалсторадж или заглушку
|
|
34
|
-
return
|
|
37
|
+
return { ratesList: rates ?? EMPTY_RATES, isLoad };
|
|
35
38
|
}
|
|
36
39
|
exports.useRates = useRates;
|
|
37
40
|
// Отсчитываем 15 минут с текущего момента
|
|
38
41
|
const getTimeAfter15Minutes = () => Date.now() + 15 * 60 * 1000;
|
|
39
|
-
const getShouldUpdate = (
|
|
40
|
-
? !ratesStore?.
|
|
41
|
-
: !ratesStore?.
|
|
42
|
+
const getShouldUpdate = (rateKey, ratesStore, fetchArchive) => rateKey === 'archive'
|
|
43
|
+
? (!ratesStore?.[rateKey] || ratesStore?.[rateKey].nextUpdate <= Date.now()) && fetchArchive
|
|
44
|
+
: !ratesStore?.[rateKey] || ratesStore?.[rateKey].nextUpdate <= Date.now();
|
|
45
|
+
/*const getArchiveRatesURL = (date?: Date) => {
|
|
46
|
+
const formattedDate = date && formatDate(date, true);
|
|
47
|
+
|
|
48
|
+
return formattedDate ? `${RATES_URL['archive']}?date=${formattedDate}` : RATES_URL['archive'];
|
|
49
|
+
};*/
|
|
42
50
|
//# sourceMappingURL=useRates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRates.js","sourceRoot":"","sources":["../../src/hooks/useRates.ts"],"names":[],"mappings":";;AAAA,2EAAwE;AACxE,6EAA0E;AAC1E,kDAAiD;
|
|
1
|
+
{"version":3,"file":"useRates.js","sourceRoot":"","sources":["../../src/hooks/useRates.ts"],"names":[],"mappings":";;AAAA,2EAAwE;AACxE,6EAA0E;AAC1E,kDAAiD;AAGjD,kDAA+E;AAoB/E,MAAM,WAAW,GAAmB,EAAE,CAAC;AAEvC,MAAM,SAAS,GAA8B;IAC3C,OAAO,EAAE,GAAG,yBAAY,QAAQ;IAChC,KAAK,EAAE,GAAG,yBAAY,aAAa;IACnC,0CAA0C;CAC3C,CAAC;AAEF,MAAM,SAAS,GAA8B;IAC3C,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,YAAY;IACnB,0BAA0B;CAC3B,CAAC;AAEF,kCAAkC;AAClC,SAAgB,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,YAAY,GAAG,IAAI,EAAmB;IACtF,wFAAwF;IACxF,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAmB,CAAC;IAEpD,+CAA+C;IAC/C,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,UAA6B,EAAE,YAAY,CAAC,CAAC;IAE3F,+EAA+E;IAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,2BAAY,EAC3B,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EACvB,2BAAsD,CACvD,CAAC;IAEF,qEAAqE;IACrE,IAAI,YAAY,IAAI,IAAI,EAAE;QACxB,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;KACxD;IAED,+BAA+B;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IAExC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpC,iDAAiD;IACjD,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;AACrD,CAAC;AA7BD,4BA6BC;AAED,0CAA0C;AAC1C,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhE,MAAM,eAAe,GAAG,CACtB,OAAe,EACf,UAAkC,EAClC,YAAqB,EACrB,EAAE,CACF,OAAO,KAAK,SAAS;IACnB,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY;IAC5F,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAE/E;;;;IAII"}
|
|
@@ -2,5 +2,8 @@ import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
|
|
|
2
2
|
import { type RatesTableContent } from './RatesTableContent';
|
|
3
3
|
interface RatesTableProps extends RatesTableContent, UniBlockProps {
|
|
4
4
|
}
|
|
5
|
+
export declare type ArchiveRates = {
|
|
6
|
+
isArchive?: boolean;
|
|
7
|
+
};
|
|
5
8
|
export declare const RatesTable: import("@redneckz/uni-jsx").UNIComponent<RatesTableProps, any, any>;
|
|
6
9
|
export {};
|
|
@@ -1,15 +1,33 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
2
|
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
4
|
import { useRates } from '../../hooks/useRates.js';
|
|
4
5
|
import { BlockWrapper } from '../../ui-kit/BlockWrapper.js';
|
|
5
6
|
import { Heading } from '../../ui-kit/Heading/Heading.js';
|
|
7
|
+
import { Loader } from '../../ui-kit/Loader/Loader.js';
|
|
8
|
+
import { NotFound } from '../../ui-kit/NotFound/NotFound.js';
|
|
6
9
|
import { style } from '../../utils/style.js';
|
|
7
10
|
import { RatesTableItem } from './RatesTableItem.js';
|
|
8
|
-
import { renderDataPickForm } from './renderDataPickForm.js';
|
|
9
11
|
import { renderLink } from './renderLink.js';
|
|
10
|
-
export const RatesTable = JSX(({ href, className = '', infoMessage,
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
export const RatesTable = JSX(({ href, ratesType = 'natural', className = '', infoMessage, notFoundMessage, title, ...rest }) => {
|
|
13
|
+
// const [date, setDate] = useState<Date>();
|
|
14
|
+
const [fetchArchive, setFetchArchive] = useState(true);
|
|
15
|
+
//const isArchive = ratesType === 'archive';
|
|
16
|
+
const { ratesList, isLoad } = useRates({
|
|
17
|
+
ratesType,
|
|
18
|
+
fetchArchive,
|
|
19
|
+
});
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
setFetchArchive(false);
|
|
22
|
+
}, []);
|
|
23
|
+
const isRatesValid = ratesList?.length > 0;
|
|
24
|
+
return (_jsxs(BlockWrapper, { className: style('p-6xl space-y-xl', className), defaultPadding: "p-0", ...rest, children: [_jsx(Heading, { className: "mb-xl", children: title }), isLoad ? (renderRatesContent({
|
|
25
|
+
ratesList,
|
|
26
|
+
isArchive: false,
|
|
27
|
+
infoMessage,
|
|
28
|
+
isRatesValid,
|
|
29
|
+
notFoundMessage,
|
|
30
|
+
})) : (_jsx(Loader, { position: "static" })), href ? renderLink(href) : null] }));
|
|
14
31
|
});
|
|
32
|
+
const renderRatesContent = ({ ratesList = [], isArchive = false, infoMessage, isRatesValid, notFoundMessage, }) => ratesList.length > 0 ? (ratesList.map((list, i) => (_jsx(RatesTableItem, { list: list, isRatesValid: isRatesValid, isArchive: isArchive, infoMessage: infoMessage }, String(i))))) : (_jsx(NotFound, { description: notFoundMessage }));
|
|
15
33
|
//# sourceMappingURL=RatesTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RatesTable.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"RatesTable.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa1C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAC3B,CAAC,EACC,IAAI,EACJ,SAAS,GAAG,SAAS,EACrB,SAAS,GAAG,EAAE,EACd,WAAW,EACX,eAAe,EACf,KAAK,EACL,GAAG,IAAI,EACR,EAAE,EAAE;IACH,4CAA4C;IAC5C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,CAAC;IAEhE,4CAA4C;IAE5C,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QACrC,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC;IAE3C,OAAO,CACL,MAAC,YAAY,IAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE,cAAc,EAAC,KAAK,KAAK,IAAI,aAC1F,KAAC,OAAO,IAAC,SAAS,EAAC,OAAO,YAAE,KAAK,GAAW,EAI3C,MAAM,CAAC,CAAC,CAAC,CACR,kBAAkB,CAAC;gBACjB,SAAS;gBACT,SAAS,EAAE,KAAK;gBAChB,WAAW;gBACX,YAAY;gBACZ,eAAe;aAChB,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IAAC,QAAQ,EAAC,QAAQ,GAAG,CAC7B,EACA,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAClB,CAChB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,KAAK,EACjB,WAAW,EACX,YAAY,EACZ,eAAe,GACI,EAAE,EAAE,CACvB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EAEpB,WAAW,EAAE,WAAW,IADnB,MAAM,CAAC,CAAC,CAAC,CAEd,CACH,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IAAC,WAAW,EAAE,eAAe,GAAI,CAC3C,CAAC"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { type HrefProps } from '../../model/LinkProps';
|
|
2
2
|
/**
|
|
3
|
-
* @title
|
|
3
|
+
* @title Тип курсов
|
|
4
|
+
* @default "Курсы для физ.лиц"
|
|
5
|
+
* @enumNames [
|
|
6
|
+
* "Курсы для физ.лиц",
|
|
7
|
+
* "Курсы для держателей карт"
|
|
8
|
+
* ]
|
|
9
|
+
*/
|
|
10
|
+
export declare type RatesType = 'natural' | 'cards';
|
|
11
|
+
/**
|
|
12
|
+
* @title Кросс-курсы
|
|
4
13
|
*/
|
|
5
14
|
export interface RatesTableContent extends HrefProps {
|
|
6
15
|
/** @title Информационное сообщение */
|
|
7
16
|
infoMessage?: string;
|
|
8
17
|
/** @title Заголовок */
|
|
9
18
|
title?: string;
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
ratesType?: RatesType;
|
|
20
|
+
/** @title Сообщение при отсутствии ставок */
|
|
21
|
+
notFoundMessage?: string;
|
|
12
22
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type RateItem } from '../../ui-kit/Rate/Rate';
|
|
2
|
+
import { type ArchiveRates } from './RatesTable';
|
|
2
3
|
import { type RatesTableContent } from './RatesTableContent';
|
|
3
|
-
interface RatesTableItemProps extends RatesTableContent {
|
|
4
|
+
export interface RatesTableItemProps extends RatesTableContent, ArchiveRates {
|
|
4
5
|
maxDate?: string;
|
|
5
6
|
isRatesValid?: boolean;
|
|
6
7
|
list: RateItem[];
|
|
7
8
|
}
|
|
8
9
|
export declare const RatesTableItem: import("@redneckz/uni-jsx").UNIComponent<RatesTableItemProps, any, any>;
|
|
9
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RatesTableItem.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTableItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAiB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"RatesTableItem.js","sourceRoot":"","sources":["../../../src/components/RatesTable/RatesTableItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAiB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAC/B,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,YAAY,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IAC9D,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,CACL,eAAK,SAAS,EAAC,mBAAmB,aAC/B,OAAO,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC1D,eAAK,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,aACvC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,qDAAc,EACtC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,2DAAe,EACvC,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,2DAAe,IACnC,EACL,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAC,IAAI,OAAqB,IAAI,IAAnB,MAAM,CAAC,CAAC,CAAC,CAAc,CAAC,CAC1D,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,mJAAoC,CAC/C,EAED,KAAC,SAAS,IAAC,KAAK,EAAC,qBAAqB,YAAE,WAAW,GAAa,IAC5D,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import { type RatesType } from '../components/RatesTable/RatesTableContent';
|
|
1
2
|
import { type RateItem } from '../ui-kit/Rate/Rate';
|
|
2
|
-
declare type RateItemList = RateItem[];
|
|
3
|
-
|
|
3
|
+
export declare type RateItemList = RateItem[];
|
|
4
|
+
declare type FetchRatesProps = {
|
|
5
|
+
ratesType?: RatesType;
|
|
6
|
+
date?: Date;
|
|
7
|
+
fetchArchive?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function useRates({ ratesType, fetchArchive }: FetchRatesProps): {
|
|
10
|
+
ratesList: any;
|
|
11
|
+
isLoad: boolean;
|
|
12
|
+
};
|
|
4
13
|
export {};
|
|
@@ -2,38 +2,46 @@ import { useAsyncData } from '@redneckz/uni-jsx/lib/hooks/useAsyncData';
|
|
|
2
2
|
import { useLocalStore } from '@redneckz/uni-jsx/lib/Store/useLocalStore';
|
|
3
3
|
import { API_BASE_URI } from '../api/apiBaseUrl.js';
|
|
4
4
|
import { fetchJSONUnsafe } from '../utils/fetchJSON.js';
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
5
|
+
const EMPTY_RATES = [];
|
|
6
|
+
const RATES_URL = {
|
|
7
|
+
natural: `${API_BASE_URI}/rates`,
|
|
8
|
+
cards: `${API_BASE_URI}/ratescards`,
|
|
9
|
+
//archive: `${API_BASE_URI}/historyrates`,
|
|
10
|
+
};
|
|
11
|
+
const RATES_KEY = {
|
|
12
|
+
natural: 'rates',
|
|
13
|
+
cards: 'ratescards',
|
|
14
|
+
//archive: 'historyrates',
|
|
15
|
+
};
|
|
16
|
+
// TODO: для архива прокинуть date
|
|
17
|
+
export function useRates({ ratesType = 'natural', fetchArchive = true }) {
|
|
18
|
+
//const url = ratesType === 'archive' ? getArchiveRatesURL(date) : RATES_URL[ratesType];
|
|
19
|
+
const url = RATES_URL[ratesType];
|
|
20
|
+
const rateKey = RATES_KEY[ratesType];
|
|
19
21
|
const ratesStore = useLocalStore();
|
|
20
22
|
// проверяем, надо ли обновлять значения ставок
|
|
21
|
-
const shouldUpdate = getShouldUpdate(
|
|
23
|
+
const shouldUpdate = getShouldUpdate(rateKey, ratesStore, fetchArchive);
|
|
22
24
|
// костыль, не отправлять запрос на бэк, если уже был запрос менее 15 мин назад
|
|
23
25
|
const { data } = useAsyncData(shouldUpdate ? url : '', fetchJSONUnsafe);
|
|
24
26
|
// если есть data и значение надо обновить, то обновляем локалсторадж
|
|
25
27
|
if (shouldUpdate && data) {
|
|
26
28
|
const nextUpdate = getTimeAfter15Minutes();
|
|
27
|
-
ratesStore[rateKey] = { rate: data, nextUpdate };
|
|
29
|
+
ratesStore[rateKey] = { rate: data ?? [], nextUpdate };
|
|
28
30
|
}
|
|
29
31
|
// берем данные из локалсторадж
|
|
30
32
|
const rates = ratesStore[rateKey]?.rate;
|
|
33
|
+
const isLoad = Array.isArray(rates);
|
|
31
34
|
// возвращаем данные из локалсторадж или заглушку
|
|
32
|
-
return
|
|
35
|
+
return { ratesList: rates ?? EMPTY_RATES, isLoad };
|
|
33
36
|
}
|
|
34
37
|
// Отсчитываем 15 минут с текущего момента
|
|
35
38
|
const getTimeAfter15Minutes = () => Date.now() + 15 * 60 * 1000;
|
|
36
|
-
const getShouldUpdate = (
|
|
37
|
-
? !ratesStore?.
|
|
38
|
-
: !ratesStore?.
|
|
39
|
+
const getShouldUpdate = (rateKey, ratesStore, fetchArchive) => rateKey === 'archive'
|
|
40
|
+
? (!ratesStore?.[rateKey] || ratesStore?.[rateKey].nextUpdate <= Date.now()) && fetchArchive
|
|
41
|
+
: !ratesStore?.[rateKey] || ratesStore?.[rateKey].nextUpdate <= Date.now();
|
|
42
|
+
/*const getArchiveRatesURL = (date?: Date) => {
|
|
43
|
+
const formattedDate = date && formatDate(date, true);
|
|
44
|
+
|
|
45
|
+
return formattedDate ? `${RATES_URL['archive']}?date=${formattedDate}` : RATES_URL['archive'];
|
|
46
|
+
};*/
|
|
39
47
|
//# sourceMappingURL=useRates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRates.js","sourceRoot":"","sources":["../../src/hooks/useRates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"useRates.js","sourceRoot":"","sources":["../../src/hooks/useRates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,eAAe,EAA4B,MAAM,oBAAoB,CAAC;AAoB/E,MAAM,WAAW,GAAmB,EAAE,CAAC;AAEvC,MAAM,SAAS,GAA8B;IAC3C,OAAO,EAAE,GAAG,YAAY,QAAQ;IAChC,KAAK,EAAE,GAAG,YAAY,aAAa;IACnC,0CAA0C;CAC3C,CAAC;AAEF,MAAM,SAAS,GAA8B;IAC3C,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,YAAY;IACnB,0BAA0B;CAC3B,CAAC;AAEF,kCAAkC;AAClC,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,YAAY,GAAG,IAAI,EAAmB;IACtF,wFAAwF;IACxF,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,UAAU,GAAG,aAAa,EAAmB,CAAC;IAEpD,+CAA+C;IAC/C,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,UAA6B,EAAE,YAAY,CAAC,CAAC;IAE3F,+EAA+E;IAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAC3B,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EACvB,eAAsD,CACvD,CAAC;IAEF,qEAAqE;IACrE,IAAI,YAAY,IAAI,IAAI,EAAE;QACxB,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC;KACxD;IAED,+BAA+B;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IAExC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpC,iDAAiD;IACjD,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;AACrD,CAAC;AAED,0CAA0C;AAC1C,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhE,MAAM,eAAe,GAAG,CACtB,OAAe,EACf,UAAkC,EAClC,YAAqB,EACrB,EAAE,CACF,OAAO,KAAK,SAAS;IACnB,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY;IAC5F,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAE/E;;;;IAII"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"content": {
|
|
3
|
-
"infoMessage": "",
|
|
4
|
-
"title": "Курс покупки/продажи
|
|
5
|
-
"href": ""
|
|
3
|
+
"infoMessage": "Информация может содержать неточности, актуальный курс уточняйте в отделении Банка",
|
|
4
|
+
"title": "Курс покупки/продажи",
|
|
5
|
+
"href": "https://www.rshb.ru",
|
|
6
|
+
"ratesType": "natural",
|
|
7
|
+
"notFoundMessage": "Подходящие ставки не найдены"
|
|
6
8
|
}
|
|
7
9
|
}
|
|
@@ -1,38 +1,93 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import {
|
|
2
|
+
import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import { useRates, type RateItemList } from '../../hooks/useRates';
|
|
3
4
|
import { BlockWrapper } from '../../ui-kit/BlockWrapper';
|
|
4
5
|
import { Heading } from '../../ui-kit/Heading/Heading';
|
|
6
|
+
import { Loader } from '../../ui-kit/Loader/Loader';
|
|
7
|
+
import { NotFound } from '../../ui-kit/NotFound/NotFound';
|
|
5
8
|
import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
|
|
6
9
|
import { style } from '../../utils/style';
|
|
7
10
|
import { type RatesTableContent } from './RatesTableContent';
|
|
8
11
|
import { RatesTableItem } from './RatesTableItem';
|
|
9
|
-
import { renderDataPickForm } from './renderDataPickForm';
|
|
10
12
|
import { renderLink } from './renderLink';
|
|
11
13
|
|
|
12
14
|
interface RatesTableProps extends RatesTableContent, UniBlockProps {}
|
|
13
15
|
|
|
16
|
+
interface RenderRatesContent extends RatesTableContent, ArchiveRates {
|
|
17
|
+
isRatesValid?: boolean;
|
|
18
|
+
ratesList?: RateItemList[];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type ArchiveRates = {
|
|
22
|
+
isArchive?: boolean;
|
|
23
|
+
};
|
|
24
|
+
|
|
14
25
|
export const RatesTable = JSX<RatesTableProps>(
|
|
15
|
-
({
|
|
16
|
-
|
|
26
|
+
({
|
|
27
|
+
href,
|
|
28
|
+
ratesType = 'natural',
|
|
29
|
+
className = '',
|
|
30
|
+
infoMessage,
|
|
31
|
+
notFoundMessage,
|
|
32
|
+
title,
|
|
33
|
+
...rest
|
|
34
|
+
}) => {
|
|
35
|
+
// const [date, setDate] = useState<Date>();
|
|
36
|
+
const [fetchArchive, setFetchArchive] = useState<boolean>(true);
|
|
37
|
+
|
|
38
|
+
//const isArchive = ratesType === 'archive';
|
|
39
|
+
|
|
40
|
+
const { ratesList, isLoad } = useRates({
|
|
41
|
+
ratesType,
|
|
42
|
+
fetchArchive,
|
|
43
|
+
});
|
|
17
44
|
|
|
18
|
-
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
setFetchArchive(false);
|
|
47
|
+
}, []);
|
|
48
|
+
|
|
49
|
+
const isRatesValid = ratesList?.length > 0;
|
|
19
50
|
|
|
20
51
|
return (
|
|
21
52
|
<BlockWrapper className={style('p-6xl space-y-xl', className)} defaultPadding="p-0" {...rest}>
|
|
22
53
|
<Heading className="mb-xl">{title}</Heading>
|
|
23
|
-
{isArchive
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
infoMessage
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
54
|
+
{/*{isArchive
|
|
55
|
+
? renderDataPickForm({ value: date, onChange: setDate, handleClick: setFetchArchive })
|
|
56
|
+
: null}*/}
|
|
57
|
+
{isLoad ? (
|
|
58
|
+
renderRatesContent({
|
|
59
|
+
ratesList,
|
|
60
|
+
isArchive: false,
|
|
61
|
+
infoMessage,
|
|
62
|
+
isRatesValid,
|
|
63
|
+
notFoundMessage,
|
|
64
|
+
})
|
|
65
|
+
) : (
|
|
66
|
+
<Loader position="static" />
|
|
67
|
+
)}
|
|
34
68
|
{href ? renderLink(href) : null}
|
|
35
69
|
</BlockWrapper>
|
|
36
70
|
);
|
|
37
71
|
},
|
|
38
72
|
);
|
|
73
|
+
|
|
74
|
+
const renderRatesContent = ({
|
|
75
|
+
ratesList = [],
|
|
76
|
+
isArchive = false,
|
|
77
|
+
infoMessage,
|
|
78
|
+
isRatesValid,
|
|
79
|
+
notFoundMessage,
|
|
80
|
+
}: RenderRatesContent) =>
|
|
81
|
+
ratesList.length > 0 ? (
|
|
82
|
+
ratesList.map((list, i) => (
|
|
83
|
+
<RatesTableItem
|
|
84
|
+
list={list}
|
|
85
|
+
isRatesValid={isRatesValid}
|
|
86
|
+
isArchive={isArchive}
|
|
87
|
+
key={String(i)}
|
|
88
|
+
infoMessage={infoMessage}
|
|
89
|
+
/>
|
|
90
|
+
))
|
|
91
|
+
) : (
|
|
92
|
+
<NotFound description={notFoundMessage} />
|
|
93
|
+
);
|