@sudobility/heavymath_ui 0.0.3
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/dealer/DealerNFTList.d.ts +6 -0
- package/dist/components/dealer/DealerNFTList.d.ts.map +1 -0
- package/dist/components/dealer/DealerNFTList.js +46 -0
- package/dist/components/dealer/DealerNFTList.js.map +1 -0
- package/dist/components/dealer/DealerNFTSelector.d.ts +8 -0
- package/dist/components/dealer/DealerNFTSelector.d.ts.map +1 -0
- package/dist/components/dealer/DealerNFTSelector.js +10 -0
- package/dist/components/dealer/DealerNFTSelector.js.map +1 -0
- package/dist/components/dealer/UpcomingGamesWidget.d.ts +8 -0
- package/dist/components/dealer/UpcomingGamesWidget.d.ts.map +1 -0
- package/dist/components/dealer/UpcomingGamesWidget.js +68 -0
- package/dist/components/dealer/UpcomingGamesWidget.js.map +1 -0
- package/dist/components/icons/index.d.ts +2 -0
- package/dist/components/icons/index.d.ts.map +1 -0
- package/dist/components/icons/index.js +2 -0
- package/dist/components/icons/index.js.map +1 -0
- package/dist/components/market/GameMarketsSection.d.ts +16 -0
- package/dist/components/market/GameMarketsSection.d.ts.map +1 -0
- package/dist/components/market/GameMarketsSection.js +18 -0
- package/dist/components/market/GameMarketsSection.js.map +1 -0
- package/dist/components/market/InlineCreateMarketForm.d.ts +17 -0
- package/dist/components/market/InlineCreateMarketForm.d.ts.map +1 -0
- package/dist/components/market/InlineCreateMarketForm.js +274 -0
- package/dist/components/market/InlineCreateMarketForm.js.map +1 -0
- package/dist/components/market/LeagueMarketsSection.d.ts +16 -0
- package/dist/components/market/LeagueMarketsSection.d.ts.map +1 -0
- package/dist/components/market/LeagueMarketsSection.js +15 -0
- package/dist/components/market/LeagueMarketsSection.js.map +1 -0
- package/dist/components/market/MarketCard.d.ts +8 -0
- package/dist/components/market/MarketCard.d.ts.map +1 -0
- package/dist/components/market/MarketCard.js +30 -0
- package/dist/components/market/MarketCard.js.map +1 -0
- package/dist/components/market/MarketList.d.ts +9 -0
- package/dist/components/market/MarketList.d.ts.map +1 -0
- package/dist/components/market/MarketList.js +17 -0
- package/dist/components/market/MarketList.js.map +1 -0
- package/dist/components/market/MarketStatusBadge.d.ts +8 -0
- package/dist/components/market/MarketStatusBadge.d.ts.map +1 -0
- package/dist/components/market/MarketStatusBadge.js +31 -0
- package/dist/components/market/MarketStatusBadge.js.map +1 -0
- package/dist/components/market/PredictionSlider.d.ts +11 -0
- package/dist/components/market/PredictionSlider.d.ts.map +1 -0
- package/dist/components/market/PredictionSlider.js +55 -0
- package/dist/components/market/PredictionSlider.js.map +1 -0
- package/dist/components/market/SportPredictionCard.d.ts +15 -0
- package/dist/components/market/SportPredictionCard.d.ts.map +1 -0
- package/dist/components/market/SportPredictionCard.js +92 -0
- package/dist/components/market/SportPredictionCard.js.map +1 -0
- package/dist/components/market/TeamMarketsSection.d.ts +17 -0
- package/dist/components/market/TeamMarketsSection.d.ts.map +1 -0
- package/dist/components/market/TeamMarketsSection.js +8 -0
- package/dist/components/market/TeamMarketsSection.js.map +1 -0
- package/dist/components/market/TeamTournamentMarketForm.d.ts +19 -0
- package/dist/components/market/TeamTournamentMarketForm.d.ts.map +1 -0
- package/dist/components/market/TeamTournamentMarketForm.js +92 -0
- package/dist/components/market/TeamTournamentMarketForm.js.map +1 -0
- package/dist/components/market/TournamentMarketForm.d.ts +19 -0
- package/dist/components/market/TournamentMarketForm.d.ts.map +1 -0
- package/dist/components/market/TournamentMarketForm.js +86 -0
- package/dist/components/market/TournamentMarketForm.js.map +1 -0
- package/dist/components/market/index.d.ts +12 -0
- package/dist/components/market/index.d.ts.map +1 -0
- package/dist/components/market/index.js +12 -0
- package/dist/components/market/index.js.map +1 -0
- package/dist/components/sports/SeasonSelector.d.ts +10 -0
- package/dist/components/sports/SeasonSelector.d.ts.map +1 -0
- package/dist/components/sports/SeasonSelector.js +13 -0
- package/dist/components/sports/SeasonSelector.js.map +1 -0
- package/dist/components/ui/AnimatedCollapse.d.ts +9 -0
- package/dist/components/ui/AnimatedCollapse.d.ts.map +1 -0
- package/dist/components/ui/AnimatedCollapse.js +8 -0
- package/dist/components/ui/AnimatedCollapse.js.map +1 -0
- package/dist/components/ui/FavoriteStar.d.ts +13 -0
- package/dist/components/ui/FavoriteStar.d.ts.map +1 -0
- package/dist/components/ui/FavoriteStar.js +47 -0
- package/dist/components/ui/FavoriteStar.js.map +1 -0
- package/dist/components/wallet/ConnectedWalletMenu.d.ts +16 -0
- package/dist/components/wallet/ConnectedWalletMenu.d.ts.map +1 -0
- package/dist/components/wallet/ConnectedWalletMenu.js +131 -0
- package/dist/components/wallet/ConnectedWalletMenu.js.map +1 -0
- package/dist/components/wallet/DealerRoute.d.ts +6 -0
- package/dist/components/wallet/DealerRoute.d.ts.map +1 -0
- package/dist/components/wallet/DealerRoute.js +20 -0
- package/dist/components/wallet/DealerRoute.js.map +1 -0
- package/dist/components/wallet/ProtectedRoute.d.ts +8 -0
- package/dist/components/wallet/ProtectedRoute.d.ts.map +1 -0
- package/dist/components/wallet/ProtectedRoute.js +17 -0
- package/dist/components/wallet/ProtectedRoute.js.map +1 -0
- package/dist/components/wallet/WalletConnectionModal.d.ts +7 -0
- package/dist/components/wallet/WalletConnectionModal.d.ts.map +1 -0
- package/dist/components/wallet/WalletConnectionModal.js +334 -0
- package/dist/components/wallet/WalletConnectionModal.js.map +1 -0
- package/dist/config/app.d.ts +24 -0
- package/dist/config/app.d.ts.map +1 -0
- package/dist/config/app.js +18 -0
- package/dist/config/app.js.map +1 -0
- package/dist/config/chains.d.ts +1070 -0
- package/dist/config/chains.d.ts.map +1 -0
- package/dist/config/chains.js +28 -0
- package/dist/config/chains.js.map +1 -0
- package/dist/config/contracts.d.ts +15 -0
- package/dist/config/contracts.d.ts.map +1 -0
- package/dist/config/contracts.js +62 -0
- package/dist/config/contracts.js.map +1 -0
- package/dist/config/sportCodes.d.ts +58 -0
- package/dist/config/sportCodes.d.ts.map +1 -0
- package/dist/config/sportCodes.js +78 -0
- package/dist/config/sportCodes.js.map +1 -0
- package/dist/context/IndexerContext.d.ts +34 -0
- package/dist/context/IndexerContext.d.ts.map +1 -0
- package/dist/context/IndexerContext.js +40 -0
- package/dist/context/IndexerContext.js.map +1 -0
- package/dist/context/WalletAuthContext.d.ts +26 -0
- package/dist/context/WalletAuthContext.d.ts.map +1 -0
- package/dist/context/WalletAuthContext.js +148 -0
- package/dist/context/WalletAuthContext.js.map +1 -0
- package/dist/hooks/index.d.ts +13 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useContractWithToast.d.ts +1348 -0
- package/dist/hooks/useContractWithToast.d.ts.map +1 -0
- package/dist/hooks/useContractWithToast.js +395 -0
- package/dist/hooks/useContractWithToast.js.map +1 -0
- package/dist/hooks/useDealerNFT.d.ts +71 -0
- package/dist/hooks/useDealerNFT.d.ts.map +1 -0
- package/dist/hooks/useDealerNFT.js +127 -0
- package/dist/hooks/useDealerNFT.js.map +1 -0
- package/dist/hooks/useDealerPermission.d.ts +11 -0
- package/dist/hooks/useDealerPermission.d.ts.map +1 -0
- package/dist/hooks/useDealerPermission.js +48 -0
- package/dist/hooks/useDealerPermission.js.map +1 -0
- package/dist/hooks/useFilteredSportsData.d.ts +20 -0
- package/dist/hooks/useFilteredSportsData.d.ts.map +1 -0
- package/dist/hooks/useFilteredSportsData.js +52 -0
- package/dist/hooks/useFilteredSportsData.js.map +1 -0
- package/dist/hooks/useGameMarkets.d.ts +23 -0
- package/dist/hooks/useGameMarkets.d.ts.map +1 -0
- package/dist/hooks/useGameMarkets.js +50 -0
- package/dist/hooks/useGameMarkets.js.map +1 -0
- package/dist/hooks/useLeagueMarkets.d.ts +11 -0
- package/dist/hooks/useLeagueMarkets.d.ts.map +1 -0
- package/dist/hooks/useLeagueMarkets.js +38 -0
- package/dist/hooks/useLeagueMarkets.js.map +1 -0
- package/dist/hooks/useMarketContract.d.ts +219 -0
- package/dist/hooks/useMarketContract.d.ts.map +1 -0
- package/dist/hooks/useMarketContract.js +790 -0
- package/dist/hooks/useMarketContract.js.map +1 -0
- package/dist/hooks/useToastActions.d.ts +13 -0
- package/dist/hooks/useToastActions.d.ts.map +1 -0
- package/dist/hooks/useToastActions.js +40 -0
- package/dist/hooks/useToastActions.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/evmClient.d.ts +299 -0
- package/dist/lib/evmClient.d.ts.map +1 -0
- package/dist/lib/evmClient.js +691 -0
- package/dist/lib/evmClient.js.map +1 -0
- package/dist/types/auth.d.ts +44 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +17 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/dealer.d.ts +59 -0
- package/dist/types/dealer.d.ts.map +1 -0
- package/dist/types/dealer.js +31 -0
- package/dist/types/dealer.js.map +1 -0
- package/dist/types/market.d.ts +79 -0
- package/dist/types/market.d.ts.map +1 -0
- package/dist/types/market.js +47 -0
- package/dist/types/market.js.map +1 -0
- package/dist/utils/conditionData.d.ts +8 -0
- package/dist/utils/conditionData.d.ts.map +1 -0
- package/dist/utils/conditionData.js +7 -0
- package/dist/utils/conditionData.js.map +1 -0
- package/dist/utils/datetime.d.ts +3 -0
- package/dist/utils/datetime.d.ts.map +1 -0
- package/dist/utils/datetime.js +13 -0
- package/dist/utils/datetime.js.map +1 -0
- package/dist/utils/format.d.ts +79 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +144 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/marketDisplay.d.ts +28 -0
- package/dist/utils/marketDisplay.d.ts.map +1 -0
- package/dist/utils/marketDisplay.js +45 -0
- package/dist/utils/marketDisplay.js.map +1 -0
- package/dist/utils/marketId.d.ts +8 -0
- package/dist/utils/marketId.d.ts.map +1 -0
- package/dist/utils/marketId.js +12 -0
- package/dist/utils/marketId.js.map +1 -0
- package/dist/utils/oracleId.d.ts +33 -0
- package/dist/utils/oracleId.d.ts.map +1 -0
- package/dist/utils/oracleId.js +62 -0
- package/dist/utils/oracleId.js.map +1 -0
- package/dist/utils/sportsSeason.d.ts +10 -0
- package/dist/utils/sportsSeason.d.ts.map +1 -0
- package/dist/utils/sportsSeason.js +39 -0
- package/dist/utils/sportsSeason.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DealerNFTList.d.ts","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTList.tsx"],"names":[],"mappings":"AAgBA,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CA8D7D"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { useReadContracts, useChainId } from 'wagmi';
|
|
5
|
+
import { getContractAddress } from '../../config/contracts';
|
|
6
|
+
import { ui } from '@sudobility/design';
|
|
7
|
+
const HAS_PERMISSIONS_ABI = [
|
|
8
|
+
{
|
|
9
|
+
name: 'hasPermissions',
|
|
10
|
+
type: 'function',
|
|
11
|
+
stateMutability: 'view',
|
|
12
|
+
inputs: [{ name: 'tokenId', type: 'uint256' }],
|
|
13
|
+
outputs: [{ name: '', type: 'bool' }],
|
|
14
|
+
},
|
|
15
|
+
];
|
|
16
|
+
export function DealerNFTList({ tokenIds }) {
|
|
17
|
+
const { t } = useTranslation('dealer');
|
|
18
|
+
const chainId = useChainId();
|
|
19
|
+
const dealerNFTAddress = getContractAddress(chainId, 'dealerNFT');
|
|
20
|
+
const permissionContracts = useMemo(() => {
|
|
21
|
+
if (!dealerNFTAddress || tokenIds.length === 0)
|
|
22
|
+
return [];
|
|
23
|
+
return tokenIds.map(tokenId => ({
|
|
24
|
+
address: dealerNFTAddress,
|
|
25
|
+
abi: HAS_PERMISSIONS_ABI,
|
|
26
|
+
functionName: 'hasPermissions',
|
|
27
|
+
args: [tokenId],
|
|
28
|
+
}));
|
|
29
|
+
}, [dealerNFTAddress, tokenIds]);
|
|
30
|
+
const { data: permissionResults } = useReadContracts({
|
|
31
|
+
contracts: permissionContracts,
|
|
32
|
+
query: {
|
|
33
|
+
enabled: permissionContracts.length > 0,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
return (_jsxs("div", { children: [_jsx("h2", { className: `${ui.text.h3} mb-4`, children: t('dashboard.nfts.title', 'Your Dealer NFTs') }), _jsx("div", { className: 'grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3', children: tokenIds.map((tokenId, index) => {
|
|
37
|
+
const hasPermissions = permissionResults?.[index]?.status === 'success' &&
|
|
38
|
+
permissionResults[index].result === true;
|
|
39
|
+
return (_jsxs("div", { className: 'p-4 rounded-lg border border-border bg-card flex flex-col items-center gap-2', children: [_jsx("p", { className: `${ui.text.h4} text-center`, children: t('dashboard.nfts.tokenId', { id: tokenId.toString() }) }), permissionResults ? (_jsx("span", { className: `inline-block text-xs font-medium px-2 py-0.5 rounded-full ${hasPermissions
|
|
40
|
+
? 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400'
|
|
41
|
+
: 'bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-400'}`, children: hasPermissions
|
|
42
|
+
? t('dashboard.nfts.hasPermissions', 'Active')
|
|
43
|
+
: t('dashboard.nfts.noPermissions', 'No Permissions') })) : (_jsx("span", { className: 'inline-block h-4 w-16 bg-muted rounded animate-pulse' }))] }, tokenId.toString()));
|
|
44
|
+
}) })] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=DealerNFTList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DealerNFTList.js","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface DealerNFTSelectorProps {
|
|
2
|
+
tokenIds: bigint[];
|
|
3
|
+
selectedTokenId: bigint | undefined;
|
|
4
|
+
onSelect: (tokenId: bigint) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function DealerNFTSelector({ tokenIds, selectedTokenId, onSelect, }: DealerNFTSelectorProps): import("react/jsx-runtime").JSX.Element | null;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=DealerNFTSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DealerNFTSelector.d.ts","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTSelector.tsx"],"names":[],"mappings":"AASA,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAe,EACf,QAAQ,GACT,EAAE,sBAAsB,kDA6BxB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from '@sudobility/components';
|
|
4
|
+
export function DealerNFTSelector({ tokenIds, selectedTokenId, onSelect, }) {
|
|
5
|
+
const { t } = useTranslation('common');
|
|
6
|
+
if (tokenIds.length <= 1)
|
|
7
|
+
return null;
|
|
8
|
+
return (_jsxs("div", { className: 'md:w-44', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('dealer.selectNFT', 'Dealer NFT') }), _jsxs(Select, { value: selectedTokenId !== undefined ? String(selectedTokenId) : undefined, onValueChange: val => onSelect(BigInt(val)), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: tokenIds.map(id => (_jsx(SelectItem, { value: String(id), children: t('dealer.tokenLabel', 'Token #{{id}}', { id: String(id) }) }, String(id)))) })] })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=DealerNFTSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DealerNFTSelector.js","sourceRoot":"","sources":["../../../src/components/dealer/DealerNFTSelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,wBAAwB,CAAC;AAQhC,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,eAAe,EACf,QAAQ,GACe;IACvB,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,CACL,eAAK,SAAS,EAAC,SAAS,aACtB,gBAAO,SAAS,EAAC,gCAAgC,YAC9C,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,GAC9B,EACR,MAAC,MAAM,IACL,KAAK,EACH,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,EAErE,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,aAE3C,KAAC,aAAa,cACZ,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAClB,KAAC,UAAU,IAAkB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,YAC3C,CAAC,CAAC,mBAAmB,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAD7C,MAAM,CAAC,EAAE,CAAC,CAEd,CACd,CAAC,GACY,IACT,IACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IndexerClient } from '@heavymath/indexer_client';
|
|
2
|
+
interface UpcomingGamesWidgetProps {
|
|
3
|
+
indexerClient: IndexerClient;
|
|
4
|
+
dealerAddress: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function UpcomingGamesWidget({ indexerClient, dealerAddress, }: UpcomingGamesWidgetProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=UpcomingGamesWidget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpcomingGamesWidget.d.ts","sourceRoot":"","sources":["../../../src/components/dealer/UpcomingGamesWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAuC/D,UAAU,wBAAwB;IAChC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AA4CD,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,aAAa,GACd,EAAE,wBAAwB,2CAwD1B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Link, useParams } from 'react-router-dom';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { useQuery } from '@tanstack/react-query';
|
|
5
|
+
import { isValidSportsOracleId, decodeOracleId } from '../../utils/oracleId';
|
|
6
|
+
import { SPORT_CODES } from '../../config/sportCodes';
|
|
7
|
+
import { CATEGORIES } from '../../types/market';
|
|
8
|
+
import { SoccerBallIcon, BasketballIcon, FootballIcon, BaseballIcon, HockeyIcon, RugbyIcon, RacingIcon, MmaIcon, HandballIcon, VolleyballIcon, } from '../../components/icons';
|
|
9
|
+
const SPORT_ICONS = {
|
|
10
|
+
1: SoccerBallIcon,
|
|
11
|
+
2: BasketballIcon,
|
|
12
|
+
3: FootballIcon,
|
|
13
|
+
4: BaseballIcon,
|
|
14
|
+
5: HockeyIcon,
|
|
15
|
+
6: RugbyIcon,
|
|
16
|
+
7: RacingIcon,
|
|
17
|
+
8: MmaIcon,
|
|
18
|
+
9: HandballIcon,
|
|
19
|
+
10: VolleyballIcon,
|
|
20
|
+
};
|
|
21
|
+
function useMarketCountsBySport(indexerClient, dealerAddress) {
|
|
22
|
+
return useQuery({
|
|
23
|
+
queryKey: ['dealerMarketCountsBySport', dealerAddress],
|
|
24
|
+
queryFn: async () => {
|
|
25
|
+
const response = await indexerClient.getMarkets({
|
|
26
|
+
dealer: dealerAddress,
|
|
27
|
+
category: CATEGORIES.SPORTS,
|
|
28
|
+
limit: 500,
|
|
29
|
+
});
|
|
30
|
+
const markets = response.data ?? [];
|
|
31
|
+
const counts = new Map();
|
|
32
|
+
for (const market of markets) {
|
|
33
|
+
if (!market.oracleId)
|
|
34
|
+
continue;
|
|
35
|
+
try {
|
|
36
|
+
const hex = market.oracleId;
|
|
37
|
+
if (!isValidSportsOracleId(hex))
|
|
38
|
+
continue;
|
|
39
|
+
const { sportCode } = decodeOracleId(hex);
|
|
40
|
+
counts.set(sportCode, (counts.get(sportCode) ?? 0) + 1);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Skip invalid oracleIds
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const result = [];
|
|
47
|
+
for (const [slug, code] of Object.entries(SPORT_CODES)) {
|
|
48
|
+
const count = counts.get(code) ?? 0;
|
|
49
|
+
if (count > 0) {
|
|
50
|
+
result.push({ sportCode: code, slug, count });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
result.sort((a, b) => b.count - a.count);
|
|
54
|
+
return result;
|
|
55
|
+
},
|
|
56
|
+
staleTime: 5 * 60 * 1000,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export function UpcomingGamesWidget({ indexerClient, dealerAddress, }) {
|
|
60
|
+
const { lang } = useParams();
|
|
61
|
+
const { t } = useTranslation('common');
|
|
62
|
+
const { data: sportCounts, isLoading } = useMarketCountsBySport(indexerClient, dealerAddress);
|
|
63
|
+
return (_jsxs("div", { className: 'p-6 rounded-lg border border-border bg-card', children: [_jsx("h3", { className: 'font-semibold mb-4', children: t('dealer.marketsBySport', 'Markets by Sport') }), isLoading ? (_jsx("div", { className: 'space-y-2', children: [1, 2, 3].map(i => (_jsx("div", { className: 'animate-pulse h-8 bg-muted rounded' }, i))) })) : !sportCounts || sportCounts.length === 0 ? (_jsxs("div", { className: 'text-sm text-muted-foreground text-center py-4', children: [_jsx("p", { children: t('dealer.noSportsMarkets', 'No sports markets yet') }), _jsx(Link, { to: `/${lang || 'en'}/sports`, className: 'text-primary hover:underline mt-2 inline-block', children: t('dealer.browseSports', 'Browse sports to create markets') })] })) : (_jsx("div", { className: 'space-y-2', children: sportCounts.map(({ sportCode, slug, count }) => {
|
|
64
|
+
const Icon = SPORT_ICONS[sportCode];
|
|
65
|
+
return (_jsxs(Link, { to: `/${lang || 'en'}/sports/${slug}`, className: 'flex items-center justify-between p-2 rounded-lg hover:bg-muted/50 transition-colors', children: [_jsxs("div", { className: 'flex items-center gap-2', children: [_jsx(Icon, { className: 'w-5 h-5 text-muted-foreground' }), _jsx("span", { className: 'text-sm font-medium', children: t(`nav.${slug}`, slug) })] }), _jsxs("span", { className: 'text-sm text-muted-foreground', children: [count, " ", count === 1 ? 'market' : 'markets'] })] }, sportCode));
|
|
66
|
+
}) }))] }));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=UpcomingGamesWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpcomingGamesWidget.js","sourceRoot":"","sources":["../../../src/components/dealer/UpcomingGamesWidget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { MdSportsSoccer as SoccerBallIcon, MdSportsBasketball as BasketballIcon, MdSportsFootball as FootballIcon, MdSportsBaseball as BaseballIcon, MdSportsHockey as HockeyIcon, MdSportsRugby as RugbyIcon, MdSportsMotorsports as RacingIcon, MdSportsMma as MmaIcon, MdSportsHandball as HandballIcon, MdSportsVolleyball as VolleyballIcon, } from 'react-icons/md';
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,cAAc,EAChC,kBAAkB,IAAI,cAAc,EACpC,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,cAAc,IAAI,UAAU,EAC5B,aAAa,IAAI,SAAS,EAC1B,mBAAmB,IAAI,UAAU,EACjC,WAAW,IAAI,OAAO,EACtB,gBAAgB,IAAI,YAAY,EAChC,kBAAkB,IAAI,cAAc,GACrC,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { MdSportsSoccer as SoccerBallIcon, MdSportsBasketball as BasketballIcon, MdSportsFootball as FootballIcon, MdSportsBaseball as BaseballIcon, MdSportsHockey as HockeyIcon, MdSportsRugby as RugbyIcon, MdSportsMotorsports as RacingIcon, MdSportsMma as MmaIcon, MdSportsHandball as HandballIcon, MdSportsVolleyball as VolleyballIcon, } from 'react-icons/md';
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,cAAc,EAChC,kBAAkB,IAAI,cAAc,EACpC,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,cAAc,IAAI,UAAU,EAC5B,aAAa,IAAI,SAAS,EAC1B,mBAAmB,IAAI,UAAU,EACjC,WAAW,IAAI,OAAO,EACtB,gBAAgB,IAAI,YAAY,EAChC,kBAAkB,IAAI,cAAc,GACrC,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SportCode } from '../../config/sportCodes';
|
|
2
|
+
interface GameMarketsSectionProps {
|
|
3
|
+
sportCode: SportCode;
|
|
4
|
+
gameId: number;
|
|
5
|
+
homeTeamName: string;
|
|
6
|
+
awayTeamName: string;
|
|
7
|
+
homeTeamId?: number;
|
|
8
|
+
awayTeamId?: number;
|
|
9
|
+
gameDate: Date;
|
|
10
|
+
leagueName?: string;
|
|
11
|
+
variant?: 'team-sport' | 'individual-sport' | 'race';
|
|
12
|
+
gameStarted?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function GameMarketsSection({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant, gameStarted, }: GameMarketsSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=GameMarketsSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GameMarketsSection.d.ts","sourceRoot":"","sources":["../../../src/components/market/GameMarketsSection.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,UAAU,uBAAuB;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,GAAG,kBAAkB,GAAG,MAAM,CAAC;IACrD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAsB,EACtB,WAAmB,GACpB,EAAE,uBAAuB,2CA+EzB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { useIndexer } from '../../context/IndexerContext';
|
|
5
|
+
import { useGameMarkets } from '../../hooks/useGameMarkets';
|
|
6
|
+
import { MarketCard } from './MarketCard';
|
|
7
|
+
import { InlineCreateMarketForm } from './InlineCreateMarketForm';
|
|
8
|
+
import { variants } from '@sudobility/design';
|
|
9
|
+
export function GameMarketsSection({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant = 'team-sport', gameStarted = false, }) {
|
|
10
|
+
const { t } = useTranslation('common');
|
|
11
|
+
const { indexerClient } = useIndexer();
|
|
12
|
+
const { data: markets, isLoading } = useGameMarkets(indexerClient, sportCode, gameId);
|
|
13
|
+
const [isPolling, setIsPolling] = useState(false);
|
|
14
|
+
const hasMarkets = markets && markets.length > 0;
|
|
15
|
+
const noMarketsText = t('markets.noMarketsForGame', 'No prediction markets for this game yet.');
|
|
16
|
+
return (_jsxs("div", { children: [_jsxs("div", { className: 'flex flex-col sm:flex-row sm:items-center sm:gap-3 mb-4', children: [_jsx("h2", { className: 'text-lg font-semibold', children: t('markets.predictionMarkets', 'Prediction Markets') }), !isLoading && !hasMarkets && !isPolling && (_jsx("span", { className: 'text-sm text-muted-foreground', children: noMarketsText }))] }), isLoading ? (_jsx("div", { className: 'space-y-3', children: Array.from({ length: 2 }).map((_, i) => (_jsx("div", { className: `${variants.loading.skeleton.base()} rounded-lg h-24` }, i))) })) : hasMarkets ? (_jsx("div", { className: 'space-y-3 mb-4', children: markets.map(market => (_jsx(MarketCard, { market: market, showCategory: false }, market.id))) })) : isPolling ? (_jsxs("div", { className: 'flex items-center gap-2 text-sm text-muted-foreground', children: [_jsxs("svg", { className: 'w-4 h-4 animate-spin', viewBox: '0 0 24 24', fill: 'none', children: [_jsx("circle", { className: 'opacity-25', cx: '12', cy: '12', r: '10', stroke: 'currentColor', strokeWidth: '4' }), _jsx("path", { className: 'opacity-75', fill: 'currentColor', d: 'M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z' })] }), t('markets.updatingMarkets', 'Updating prediction markets...')] })) : null, _jsx(InlineCreateMarketForm, { sportCode: sportCode, gameId: gameId, homeTeamName: homeTeamName, awayTeamName: awayTeamName, homeTeamId: homeTeamId, awayTeamId: awayTeamId, gameDate: gameDate, leagueName: leagueName, variant: variant, onPollingChange: setIsPolling, gameStarted: gameStarted })] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=GameMarketsSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GameMarketsSection.js","sourceRoot":"","sources":["../../../src/components/market/GameMarketsSection.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SportCode } from '../../config/sportCodes';
|
|
2
|
+
interface InlineCreateMarketFormProps {
|
|
3
|
+
sportCode: SportCode;
|
|
4
|
+
gameId: number;
|
|
5
|
+
homeTeamName: string;
|
|
6
|
+
awayTeamName: string;
|
|
7
|
+
homeTeamId?: number;
|
|
8
|
+
awayTeamId?: number;
|
|
9
|
+
gameDate: Date;
|
|
10
|
+
leagueName?: string;
|
|
11
|
+
variant?: 'team-sport' | 'individual-sport' | 'race';
|
|
12
|
+
onPollingChange?: (polling: boolean) => void;
|
|
13
|
+
gameStarted?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function InlineCreateMarketForm({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant, onPollingChange, gameStarted, }: InlineCreateMarketFormProps): import("react/jsx-runtime").JSX.Element | null;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=InlineCreateMarketForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineCreateMarketForm.d.ts","sourceRoot":"","sources":["../../../src/components/market/InlineCreateMarketForm.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKzD,UAAU,2BAA2B;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,GAAG,kBAAkB,GAAG,MAAM,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAsB,EACtB,eAAe,EACf,WAAmB,GACpB,EAAE,2BAA2B,kDAiiB7B"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useEffect } from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { useQueryClient } from '@tanstack/react-query';
|
|
5
|
+
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from '@sudobility/components';
|
|
6
|
+
import { AnimatedCollapse } from '../../components/ui/AnimatedCollapse';
|
|
7
|
+
import { DealerNFTSelector } from '../../components/dealer/DealerNFTSelector';
|
|
8
|
+
import { useAuth } from '../../context/WalletAuthContext';
|
|
9
|
+
import { useIndexer } from '../../context/IndexerContext';
|
|
10
|
+
import { useCreateMarketWithToast } from '../../hooks';
|
|
11
|
+
import { useDealerPermission } from '../../hooks/useDealerPermission';
|
|
12
|
+
import { encodeOracleId } from '../../utils/oracleId';
|
|
13
|
+
import { ConditionType, encodeConditionData, formatConditionDescription, } from '../../utils/conditionData';
|
|
14
|
+
import { ui } from '@sudobility/design';
|
|
15
|
+
import { getNow, toChainDate } from '../../utils/datetime';
|
|
16
|
+
import { CATEGORIES } from '../../types/market';
|
|
17
|
+
const OUTCOME_LABEL_KEYS = {
|
|
18
|
+
win: 'inlineCreateMarket.wins',
|
|
19
|
+
win_or_draw: 'inlineCreateMarket.winsOrDraws',
|
|
20
|
+
draw_or_lose: 'inlineCreateMarket.drawsOrLoses',
|
|
21
|
+
};
|
|
22
|
+
export function InlineCreateMarketForm({ sportCode, gameId, homeTeamName, awayTeamName, homeTeamId, awayTeamId, gameDate, leagueName, variant = 'team-sport', onPollingChange, gameStarted = false, }) {
|
|
23
|
+
const { t } = useTranslation('common');
|
|
24
|
+
const queryClient = useQueryClient();
|
|
25
|
+
const { isDealer, dealerTokenIds } = useAuth();
|
|
26
|
+
const { indexerClient } = useIndexer();
|
|
27
|
+
const createMarket = useCreateMarketWithToast();
|
|
28
|
+
const [selectedTokenId, setSelectedTokenId] = useState(dealerTokenIds?.[0]);
|
|
29
|
+
// Sync when dealerTokenIds loads asynchronously after mount
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (selectedTokenId === undefined &&
|
|
32
|
+
dealerTokenIds &&
|
|
33
|
+
dealerTokenIds.length > 0) {
|
|
34
|
+
}
|
|
35
|
+
}, [dealerTokenIds, selectedTokenId]);
|
|
36
|
+
const { hasPermission, isLoading: isPermissionLoading } = useDealerPermission(sportCode, selectedTokenId);
|
|
37
|
+
const [isExpanded, setIsExpanded] = useState(false);
|
|
38
|
+
const [deadline, setDeadline] = useState(() => {
|
|
39
|
+
const d = new Date(gameDate);
|
|
40
|
+
return d.toISOString().slice(0, 16); // datetime-local format
|
|
41
|
+
});
|
|
42
|
+
// Condition type state
|
|
43
|
+
const [marketType, setMarketType] = useState('winloss');
|
|
44
|
+
const [positiveTeamSide, setPositiveTeamSide] = useState('home');
|
|
45
|
+
const [winLossOutcome, setWinLossOutcome] = useState('win');
|
|
46
|
+
const [scoreType, setScoreType] = useState('0');
|
|
47
|
+
const scoreSide = positiveTeamSide === 'home' ? '0' : '1';
|
|
48
|
+
const [scoreOperator, setScoreOperator] = useState('0');
|
|
49
|
+
const [scoreExpectation, setScoreExpectation] = useState('0');
|
|
50
|
+
const now = getNow();
|
|
51
|
+
// User-editable title/description, auto-populated from form state
|
|
52
|
+
const [title, setTitle] = useState('');
|
|
53
|
+
const [description, setDescription] = useState('');
|
|
54
|
+
const [titleTouched, setTitleTouched] = useState(false);
|
|
55
|
+
const [descriptionTouched, setDescriptionTouched] = useState(false);
|
|
56
|
+
// Derive auto title and description from current form state
|
|
57
|
+
const teamName = positiveTeamSide === 'home' ? homeTeamName : awayTeamName;
|
|
58
|
+
const otherTeamName = positiveTeamSide === 'home' ? awayTeamName : homeTeamName;
|
|
59
|
+
const shortDateStr = gameDate.toLocaleDateString(undefined, {
|
|
60
|
+
month: 'short',
|
|
61
|
+
day: 'numeric',
|
|
62
|
+
year: 'numeric',
|
|
63
|
+
});
|
|
64
|
+
const dateStr = gameDate.toLocaleDateString(undefined, {
|
|
65
|
+
year: 'numeric',
|
|
66
|
+
month: 'long',
|
|
67
|
+
day: 'numeric',
|
|
68
|
+
});
|
|
69
|
+
const leagueStr = leagueName ? ` - ${leagueName}` : '';
|
|
70
|
+
const autoTitle = (() => {
|
|
71
|
+
if (variant === 'race')
|
|
72
|
+
return t('inlineCreateMarket.titleOnDate', {
|
|
73
|
+
team: homeTeamName,
|
|
74
|
+
date: shortDateStr,
|
|
75
|
+
});
|
|
76
|
+
if (marketType === 'winloss') {
|
|
77
|
+
const outcome = t(OUTCOME_LABEL_KEYS[winLossOutcome]);
|
|
78
|
+
return t('inlineCreateMarket.titleWinloss', {
|
|
79
|
+
team: teamName,
|
|
80
|
+
outcome,
|
|
81
|
+
other: otherTeamName,
|
|
82
|
+
date: shortDateStr,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
const side = scoreSide === '0' ? homeTeamName : awayTeamName;
|
|
86
|
+
const otherSide = scoreSide === '0' ? awayTeamName : homeTeamName;
|
|
87
|
+
const val = scoreExpectation || '0';
|
|
88
|
+
const isRelative = scoreType === '1';
|
|
89
|
+
const op = Number(scoreOperator);
|
|
90
|
+
const phraseKeys = isRelative
|
|
91
|
+
? [
|
|
92
|
+
'inlineCreateMarket.winsByAtLeast',
|
|
93
|
+
'inlineCreateMarket.winsByMoreThan',
|
|
94
|
+
'inlineCreateMarket.winsByExactly',
|
|
95
|
+
'inlineCreateMarket.winsByFewerThan',
|
|
96
|
+
'inlineCreateMarket.winsByAtMost',
|
|
97
|
+
'inlineCreateMarket.doesNotWinBy',
|
|
98
|
+
]
|
|
99
|
+
: [
|
|
100
|
+
'inlineCreateMarket.scoresAtLeast',
|
|
101
|
+
'inlineCreateMarket.scoresMoreThan',
|
|
102
|
+
'inlineCreateMarket.scoresExactly',
|
|
103
|
+
'inlineCreateMarket.scoresFewerThan',
|
|
104
|
+
'inlineCreateMarket.scoresAtMost',
|
|
105
|
+
'inlineCreateMarket.doesNotScore',
|
|
106
|
+
];
|
|
107
|
+
const phrase = t(phraseKeys[op] ?? phraseKeys[0], { val });
|
|
108
|
+
return t('inlineCreateMarket.titleScore', {
|
|
109
|
+
team: side,
|
|
110
|
+
phrase,
|
|
111
|
+
other: otherSide,
|
|
112
|
+
date: shortDateStr,
|
|
113
|
+
});
|
|
114
|
+
})();
|
|
115
|
+
const autoDescription = (() => {
|
|
116
|
+
if (variant === 'race')
|
|
117
|
+
return t('inlineCreateMarket.descriptionSingle', {
|
|
118
|
+
team: homeTeamName,
|
|
119
|
+
league: leagueStr,
|
|
120
|
+
date: dateStr,
|
|
121
|
+
});
|
|
122
|
+
return t('inlineCreateMarket.descriptionVs', {
|
|
123
|
+
home: homeTeamName,
|
|
124
|
+
away: awayTeamName,
|
|
125
|
+
league: leagueStr,
|
|
126
|
+
date: dateStr,
|
|
127
|
+
});
|
|
128
|
+
})();
|
|
129
|
+
const effectiveTitle = titleTouched && title ? title : autoTitle;
|
|
130
|
+
const effectiveDescription = descriptionTouched && description ? description : autoDescription;
|
|
131
|
+
// Poll indexer after market creation until a new market appears
|
|
132
|
+
const pollRef = useRef(null);
|
|
133
|
+
const pollCountRef = useRef(0);
|
|
134
|
+
const prevMarketCountRef = useRef(0);
|
|
135
|
+
const prevMarketIdsRef = useRef(new Set());
|
|
136
|
+
// Pending oracle config to save when the new market is found
|
|
137
|
+
const pendingOracleConfigRef = useRef(null);
|
|
138
|
+
const startPolling = () => {
|
|
139
|
+
stopPolling();
|
|
140
|
+
pollCountRef.current = 0;
|
|
141
|
+
onPollingChange?.(true);
|
|
142
|
+
// Snapshot current market IDs before polling
|
|
143
|
+
const cached = queryClient.getQueryData([
|
|
144
|
+
'gameMarkets',
|
|
145
|
+
sportCode,
|
|
146
|
+
gameId,
|
|
147
|
+
]);
|
|
148
|
+
const cachedArr = Array.isArray(cached) ? cached : [];
|
|
149
|
+
prevMarketCountRef.current = cachedArr.length;
|
|
150
|
+
prevMarketIdsRef.current = new Set(cachedArr.map(m => m.id));
|
|
151
|
+
pollRef.current = setInterval(async () => {
|
|
152
|
+
pollCountRef.current += 1;
|
|
153
|
+
await queryClient.invalidateQueries({
|
|
154
|
+
queryKey: ['gameMarkets', sportCode, gameId],
|
|
155
|
+
});
|
|
156
|
+
const updated = queryClient.getQueryData([
|
|
157
|
+
'gameMarkets',
|
|
158
|
+
sportCode,
|
|
159
|
+
gameId,
|
|
160
|
+
]);
|
|
161
|
+
const updatedArr = Array.isArray(updated) ? updated : [];
|
|
162
|
+
const newCount = updatedArr.length;
|
|
163
|
+
if (newCount > prevMarketCountRef.current) {
|
|
164
|
+
// Find the new market ID and save oracle config if needed
|
|
165
|
+
const newMarket = updatedArr.find(m => !prevMarketIdsRef.current.has(m.id));
|
|
166
|
+
if (newMarket && pendingOracleConfigRef.current && indexerClient) {
|
|
167
|
+
try {
|
|
168
|
+
await indexerClient.setMarketOracleConfig(newMarket.id, pendingOracleConfigRef.current);
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
console.error('Failed to save oracle config:', e);
|
|
172
|
+
}
|
|
173
|
+
pendingOracleConfigRef.current = null;
|
|
174
|
+
}
|
|
175
|
+
stopPolling();
|
|
176
|
+
}
|
|
177
|
+
else if (pollCountRef.current >= 20) {
|
|
178
|
+
pendingOracleConfigRef.current = null;
|
|
179
|
+
stopPolling();
|
|
180
|
+
}
|
|
181
|
+
}, 3000);
|
|
182
|
+
};
|
|
183
|
+
const stopPolling = () => {
|
|
184
|
+
if (pollRef.current) {
|
|
185
|
+
clearInterval(pollRef.current);
|
|
186
|
+
pollRef.current = null;
|
|
187
|
+
onPollingChange?.(false);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
useEffect(() => stopPolling, []);
|
|
191
|
+
if (!isDealer || gameStarted)
|
|
192
|
+
return null;
|
|
193
|
+
const tokenId = selectedTokenId;
|
|
194
|
+
if (tokenId === undefined)
|
|
195
|
+
return null;
|
|
196
|
+
const deadlineDate = new Date(deadline);
|
|
197
|
+
const minDeadlineMs = 24 * 60 * 60 * 1000; // 24 hours
|
|
198
|
+
const isDeadlineValid = deadlineDate.getTime() - now.getTime() >= minDeadlineMs;
|
|
199
|
+
const canSubmit = isDeadlineValid && !createMarket.isPending;
|
|
200
|
+
const handleSubmit = async () => {
|
|
201
|
+
if (!canSubmit)
|
|
202
|
+
return;
|
|
203
|
+
const oracleId = encodeOracleId(sportCode, gameId);
|
|
204
|
+
const chainDeadline = toChainDate(deadlineDate);
|
|
205
|
+
const deadlineBigInt = BigInt(Math.floor(chainDeadline.getTime() / 1000));
|
|
206
|
+
// Build conditionData based on market type
|
|
207
|
+
let conditionData;
|
|
208
|
+
const selectedTeamId = positiveTeamSide === 'home' ? homeTeamId : awayTeamId;
|
|
209
|
+
if (marketType === 'winloss' && selectedTeamId) {
|
|
210
|
+
conditionData = encodeConditionData({
|
|
211
|
+
type: ConditionType.WinLoss,
|
|
212
|
+
positiveTeamId: selectedTeamId,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else if (marketType === 'matchscore') {
|
|
216
|
+
conditionData = encodeConditionData({
|
|
217
|
+
type: ConditionType.MatchScore,
|
|
218
|
+
scoreType: Number(scoreType),
|
|
219
|
+
team: Number(scoreSide),
|
|
220
|
+
operator: Number(scoreOperator),
|
|
221
|
+
expectation: Number(scoreExpectation),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
await createMarket.mutateAsync({
|
|
225
|
+
tokenId: BigInt(tokenId),
|
|
226
|
+
category: BigInt(CATEGORIES.SPORTS),
|
|
227
|
+
subCategory: BigInt(sportCode),
|
|
228
|
+
deadline: deadlineBigInt,
|
|
229
|
+
description: `${effectiveTitle}\n${effectiveDescription}`,
|
|
230
|
+
oracleId,
|
|
231
|
+
conditionData,
|
|
232
|
+
});
|
|
233
|
+
// Store oracle config to save once the market appears in the indexer
|
|
234
|
+
pendingOracleConfigRef.current = {
|
|
235
|
+
positiveTeamId: selectedTeamId ? String(selectedTeamId) : '',
|
|
236
|
+
positiveTeamName: teamName,
|
|
237
|
+
negativeTeamName: otherTeamName,
|
|
238
|
+
};
|
|
239
|
+
// Start polling for the new market to appear
|
|
240
|
+
startPolling();
|
|
241
|
+
setIsExpanded(false);
|
|
242
|
+
};
|
|
243
|
+
if (!isPermissionLoading && !hasPermission) {
|
|
244
|
+
return (_jsx("div", { className: 'rounded-lg border border-dashed border-amber-500/40 bg-amber-500/5 p-4', children: _jsx("p", { className: 'text-sm text-amber-700 dark:text-amber-400', children: t('dealer.noPermission') }) }));
|
|
245
|
+
}
|
|
246
|
+
return (_jsxs("div", { className: 'rounded-lg border border-dashed border-primary/40 bg-primary/5', children: [_jsxs("button", { onClick: () => setIsExpanded(!isExpanded), className: 'w-full flex items-center justify-between p-4 text-left', children: [_jsxs("div", { className: 'flex items-center gap-2', children: [_jsx("span", { className: 'text-lg font-semibold text-primary', children: "+" }), _jsx("span", { className: 'font-medium', children: t('markets.createMarket', 'Create Market') })] }), _jsx("svg", { className: `w-5 h-5 text-muted-foreground transition-transform ${isExpanded ? 'rotate-180' : ''}`, fill: 'none', stroke: 'currentColor', viewBox: '0 0 24 24', children: _jsx("path", { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M19 9l-7 7-7-7' }) })] }), _jsx(AnimatedCollapse, { open: isExpanded, children: _jsxs("div", { className: 'px-4 pb-4 space-y-3', children: [_jsxs("div", { className: 'flex flex-col md:flex-row md:items-end gap-3', children: [_jsx(DealerNFTSelector, { tokenIds: dealerTokenIds, selectedTokenId: selectedTokenId, onSelect: setSelectedTokenId }), variant === 'team-sport' && (_jsxs("div", { className: 'md:w-44', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.positiveTeam', 'Team') }), _jsxs(Select, { value: positiveTeamSide, onValueChange: val => setPositiveTeamSide(val), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: 'home', children: homeTeamName }), _jsx(SelectItem, { value: 'away', children: awayTeamName })] })] })] })), _jsxs("div", { className: 'md:w-36', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('market.condition.conditionType', 'Type') }), _jsxs(Select, { value: marketType, onValueChange: val => setMarketType(val), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: 'winloss', children: t('market.condition.winLoss', 'Win/Loss') }), _jsx(SelectItem, { value: 'matchscore', children: t('market.condition.matchScore', 'Match Score') })] })] })] }), marketType === 'winloss' && (_jsxs("div", { className: 'md:w-36', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.outcome', 'Outcome') }), _jsxs(Select, { value: winLossOutcome, onValueChange: val => setWinLossOutcome(val), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: 'win', children: t('market.condition.win', 'Win') }), _jsx(SelectItem, { value: 'win_or_draw', children: t('market.condition.winOrDraw', 'Win or Draw') }), _jsx(SelectItem, { value: 'draw_or_lose', children: t('market.condition.drawOrLose', 'Draw or Lose') })] })] })] })), marketType === 'matchscore' && (_jsxs(_Fragment, { children: [_jsxs("div", { className: 'md:w-28', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.scoreType', 'Score Type') }), _jsxs(Select, { value: scoreType, onValueChange: setScoreType, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: '0', children: t('market.condition.absolute', 'Absolute') }), _jsx(SelectItem, { value: '1', children: t('market.condition.relative', 'Relative') })] })] })] }), _jsxs("div", { className: 'md:w-24', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.operator', 'Operator') }), _jsxs(Select, { value: scoreOperator, onValueChange: setScoreOperator, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: '0', children: '>=' }), _jsx(SelectItem, { value: '1', children: '>' }), _jsx(SelectItem, { value: '2', children: "=" }), _jsx(SelectItem, { value: '3', children: '<' }), _jsx(SelectItem, { value: '4', children: '<=' }), _jsx(SelectItem, { value: '5', children: "!=" })] })] })] }), _jsxs("div", { className: 'md:w-20', children: [_jsx("label", { className: 'block text-xs font-medium mb-1', children: t('market.condition.value', 'Value') }), _jsx("input", { type: 'number', value: scoreExpectation, onChange: e => setScoreExpectation(e.target.value), placeholder: '3', className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` })] })] })), _jsx("div", { className: 'flex-1' }), _jsxs("div", { className: 'md:w-52', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.deadline', 'Deadline') }), _jsx("input", { type: 'datetime-local', value: deadline, onChange: e => setDeadline(e.target.value), className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` }), deadline && !isDeadlineValid && (_jsx("p", { className: 'mt-1 text-xs text-red-500', children: t('markets.deadlineMinimum', 'Deadline must be at least 24 hours from now') }))] })] }), _jsxs("div", { className: 'flex flex-col md:flex-row gap-3', children: [_jsxs("div", { className: 'flex-1 min-w-0', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.title', 'Title') }), _jsx("input", { type: 'text', value: titleTouched ? title : autoTitle, onChange: e => {
|
|
247
|
+
setTitleTouched(true);
|
|
248
|
+
setTitle(e.target.value);
|
|
249
|
+
}, onFocus: () => {
|
|
250
|
+
if (!titleTouched) {
|
|
251
|
+
setTitle(autoTitle);
|
|
252
|
+
setTitleTouched(true);
|
|
253
|
+
}
|
|
254
|
+
}, className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` })] }), _jsxs("div", { className: 'flex-1 min-w-0', children: [_jsx("label", { className: 'block text-sm font-medium mb-1', children: t('markets.description', 'Description') }), _jsx("input", { type: 'text', value: descriptionTouched ? description : autoDescription, onChange: e => {
|
|
255
|
+
setDescriptionTouched(true);
|
|
256
|
+
setDescription(e.target.value);
|
|
257
|
+
}, onFocus: () => {
|
|
258
|
+
if (!descriptionTouched) {
|
|
259
|
+
setDescription(autoDescription);
|
|
260
|
+
setDescriptionTouched(true);
|
|
261
|
+
}
|
|
262
|
+
}, className: `w-full px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 ${ui.background.surface} text-sm` })] })] }), _jsxs("div", { className: 'flex flex-col md:flex-row md:items-center gap-3', children: [_jsx("div", { className: 'flex-1 min-w-0', children: _jsxs("div", { className: `p-2.5 rounded-lg ${ui.background.muted}/50 text-sm`, children: [_jsxs("span", { className: 'text-muted-foreground', children: [t('inlineCreateMarket.condition'), ' '] }), _jsx("span", { className: 'font-medium', children: marketType === 'winloss'
|
|
263
|
+
? `${positiveTeamSide === 'home' ? homeTeamName : awayTeamName} ${t(OUTCOME_LABEL_KEYS[winLossOutcome])}`
|
|
264
|
+
: formatConditionDescription({
|
|
265
|
+
type: ConditionType.MatchScore,
|
|
266
|
+
scoreType: Number(scoreType),
|
|
267
|
+
team: Number(scoreSide),
|
|
268
|
+
operator: Number(scoreOperator),
|
|
269
|
+
expectation: Number(scoreExpectation),
|
|
270
|
+
}, { home: homeTeamName, away: awayTeamName }) })] }) }), _jsx("button", { onClick: handleSubmit, disabled: !canSubmit, className: 'md:w-auto py-2.5 px-6 rounded-lg bg-primary text-primary-foreground font-medium text-sm disabled:opacity-50 disabled:cursor-not-allowed hover:bg-primary/90 transition-colors whitespace-nowrap flex-shrink-0', children: createMarket.isPending
|
|
271
|
+
? t('markets.creating', 'Creating...')
|
|
272
|
+
: t('markets.create', 'Create') })] })] }) })] }));
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=InlineCreateMarketForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineCreateMarketForm.js","sourceRoot":"","sources":["../../../src/components/market/InlineCreateMarketForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SportCode } from '../../config/sportCodes';
|
|
2
|
+
interface TeamOption {
|
|
3
|
+
id: number;
|
|
4
|
+
name: string;
|
|
5
|
+
logo?: string | null;
|
|
6
|
+
}
|
|
7
|
+
interface LeagueMarketsSectionProps {
|
|
8
|
+
sportCode: SportCode;
|
|
9
|
+
leagueId: number;
|
|
10
|
+
season: number;
|
|
11
|
+
leagueName: string;
|
|
12
|
+
teams: TeamOption[];
|
|
13
|
+
}
|
|
14
|
+
export declare function LeagueMarketsSection({ sportCode, leagueId, season, leagueName, teams, }: LeagueMarketsSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=LeagueMarketsSection.d.ts.map
|