From 22ac6d3b86b6e0a793497736cd43341eec1d7bf7 Mon Sep 17 00:00:00 2001 From: Simo Date: Tue, 30 Dec 2025 14:10:05 +0100 Subject: [PATCH 1/6] wip Signed-off-by: Simo --- TODO.md | 34 +++ .../react-query-wrapper/ReactQueryWrapper.tsx | 235 ------------------ components/user/proxy/create/ProxyCreate.tsx | 4 +- .../action/ProxyActionAcceptanceButton.tsx | 18 +- .../utils/credit/ProfileProxyCreditEdit.tsx | 2 - .../utils/time/ProfileProxyEndTimeEdit.tsx | 13 +- .../proxy/create-action/ProxyCreateAction.tsx | 2 - package-lock.json | 168 +++++++------ 8 files changed, 138 insertions(+), 338 deletions(-) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000000..63e75d5717 --- /dev/null +++ b/TODO.md @@ -0,0 +1,34 @@ + 273:9 warning The 'setProfile' function makes the dependencies of useMemo Hook (at line 1257) change on every render. To fix this, wrap the definition of 'setProfile' in its own useCallback() Hook react-hooks/exhaustive-deps + 283:9 warning The 'setWave' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setWave' in its own useCallback() Hook react-hooks/exhaustive-deps + 290:9 warning The 'setWavesOverviewPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setWavesOverviewPage' in its own useCallback() Hook react-hooks/exhaustive-deps + 314:9 warning The 'setWaveDrops' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setWaveDrops' in its own useCallback() Hook react-hooks/exhaustive-deps + 343:9 warning The 'setProfileProxy' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setProfileProxy' in its own useCallback() Hook react-hooks/exhaustive-deps + 350:9 warning The 'onProfileProxyModify' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileProxyModify' in its own useCallback() Hook react-hooks/exhaustive-deps + 352:5 warning 'createdByHandle' is defined but never used. Allowed unused args must match /^_/u unused-imports/no-unused-vars + 353:5 warning 'grantedToHandle' is defined but never used. Allowed unused args must match /^_/u unused-imports/no-unused-vars + 410:9 warning The 'onGroupRemoved' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onGroupRemoved' in its own useCallback() Hook react-hooks/exhaustive-deps + 413:9 warning The 'onGroupChanged' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onGroupChanged' in its own useCallback() Hook react-hooks/exhaustive-deps + 416:9 warning The 'onGroupCreate' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onGroupCreate' in its own useCallback() Hook react-hooks/exhaustive-deps + 538:9 warning The 'onProfileCICModify' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileCICModify' in its own useCallback() Hook react-hooks/exhaustive-deps + 619:9 warning The 'onProfileRepModify' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileRepModify' in its own useCallback() Hook react-hooks/exhaustive-deps + 717:9 warning The 'onProfileEdit' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileEdit' in its own useCallback() Hook react-hooks/exhaustive-deps + 732:9 warning The 'onProfileStatementAdd' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileStatementAdd' in its own useCallback() Hook react-hooks/exhaustive-deps + 737:9 warning The 'onProfileStatementRemove' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileStatementRemove' in its own useCallback() Hook react-hooks/exhaustive-deps + 760:9 warning The 'initProfileRepPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'initProfileRepPage' in its own useCallback() Hook react-hooks/exhaustive-deps + 779:9 warning The 'initProfileIdentityPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'initProfileIdentityPage' in its own useCallback() Hook react-hooks/exhaustive-deps + 795:9 warning The 'initCommunityActivityPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'initCommunityActivityPage' in its own useCallback() Hook react-hooks/exhaustive-deps + 835:25 warning 'isQuoted' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars + 854:25 warning 'isQuoted' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars + 924:23 warning 'isQuoted' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars + 1023:25 warning 'isReplied' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars + 1039:25 warning 'isReplied' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars + 1073:9 warning The 'addOptimisticDrop' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'addOptimisticDrop' in its own useCallback() Hook react-hooks/exhaustive-deps + 1088:9 warning The 'waitAndInvalidateDrops' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'waitAndInvalidateDrops' in its own useCallback() Hook react-hooks/exhaustive-deps + 1093:9 warning The 'onIdentityBulkRate' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onIdentityBulkRate' in its own useCallback() Hook react-hooks/exhaustive-deps + 1153:9 warning The 'invalidateDrops' function makes the dependencies of useMemo Hook (at line 1257) change on every render. To fix this, wrap the definition of 'invalidateDrops' in its own useCallback() Hook react-hooks/exhaustive-deps + 1174:9 warning The 'onWaveCreated' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onWaveCreated' in its own useCallback() Hook react-hooks/exhaustive-deps + 1176:9 warning The 'onWaveFollowChange' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onWaveFollowChange' in its own useCallback() Hook react-hooks/exhaustive-deps + 1188:9 warning The 'onIdentityFollowChange' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onIdentityFollowChange' in its own useCallback() Hook react-hooks/exhaustive-deps + 1200:9 warning The 'invalidateAll' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'invalidateAll' in its own useCallback() Hook react-hooks/exhaustive-deps + 1204:9 warning The 'invalidateNotifications' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'invalidateNotifications' in its own useCallback() Hook react-hooks/exhaustive-deps + 1210:9 warning The 'invalidateIdentityTdhStats' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'invalidateIdentityTdhStats' in its own useCallback() Hook react-hooks/exhaustive-deps \ No newline at end of file diff --git a/components/react-query-wrapper/ReactQueryWrapper.tsx b/components/react-query-wrapper/ReactQueryWrapper.tsx index 9028dde3e5..12c37908ad 100644 --- a/components/react-query-wrapper/ReactQueryWrapper.tsx +++ b/components/react-query-wrapper/ReactQueryWrapper.tsx @@ -8,7 +8,6 @@ import { } from "@/entities/IProfile"; import { RateMatter } from "@/enums"; import { ApiDrop } from "@/generated/models/ApiDrop"; -import { ApiFeedItemType } from "@/generated/models/ApiFeedItemType"; import { ApiProfileProxy } from "@/generated/models/ApiProfileProxy"; import { ApiWave } from "@/generated/models/ApiWave"; import { ApiWaveDropsFeed } from "@/generated/models/ApiWaveDropsFeed"; @@ -18,7 +17,6 @@ import { convertActivityLogParams } from "@/helpers/profile-logs.helpers"; import { Time } from "@/helpers/time"; import { CountlessPage, Page } from "@/helpers/Types"; import { useQueryKeyListener } from "@/hooks/useQueryKeyListener"; -import { TypedFeedItem } from "@/types/feed.types"; import { InfiniteData, useQueryClient } from "@tanstack/react-query"; import Cookies from "js-cookie"; import { createContext, useMemo } from "react"; @@ -135,12 +133,8 @@ type ReactQueryWrapperContextType = { readonly setProfileProxy: (profileProxy: ApiProfileProxy) => void; readonly onProfileProxyModify: ({ profileProxyId, - createdByHandle, - grantedToHandle, }: { readonly profileProxyId: string; - readonly createdByHandle: string; - readonly grantedToHandle: string; }) => void; onProfileCICModify: (params: { readonly targetProfile: ApiIdentity; @@ -349,12 +343,8 @@ export default function ReactQueryWrapper({ const onProfileProxyModify = ({ profileProxyId, - createdByHandle, - grantedToHandle, }: { readonly profileProxyId: string; - readonly createdByHandle: string; - readonly grantedToHandle: string; }): void => { queryClient.invalidateQueries({ queryKey: [QueryKey.PROFILE_PROXY, { id: profileProxyId }], @@ -804,152 +794,6 @@ export default function ReactQueryWrapper({ }); }; - const increaseFeedItemsDropRedropCount = ({ - drop, - }: { - readonly drop: ApiDrop; - }): void => { - queryClient.setQueryData( - [QueryKey.FEED_ITEMS], - ( - oldData: - | { - pages: TypedFeedItem[][]; - } - | undefined - ) => { - if (!oldData?.pages.length) { - return oldData; - } - const pages: TypedFeedItem[][] = JSON.parse( - JSON.stringify(oldData.pages) - ); - const quotedDrops = drop.parts - .map((part) => part.quoted_drop) - .filter((quotedDrop) => !!quotedDrop); - if (quotedDrops.length) { - const modifiedPages = pages.map((items) => { - const modifiedItems = items.map((item) => { - if (item.type === ApiFeedItemType.DropCreated) { - const modifiedParts = item.item.parts.map((part) => { - const isQuoted = quotedDrops.find( - (qd) => - qd && - item.item.id === qd.drop_id && - part.part_id === qd.drop_part_id - ); - - return part; - }); - return { - ...item, - item: { - ...item.item, - parts: modifiedParts, - }, - }; - } - if (item.type === ApiFeedItemType.DropReplied) { - const modifiedParts = item.item.reply.parts.map((part) => { - const isQuoted = quotedDrops.find( - (qd) => - qd && - item.item.reply.id === qd.drop_id && - part.part_id === qd.drop_part_id - ); - - return part; - }); - return { - ...item, - item: { - ...item.item, - reply: { - ...item.item.reply, - parts: modifiedParts, - }, - }, - }; - } - return item; - }); - return modifiedItems; - }); - return { - ...oldData, - pages: modifiedPages, - }; - } - return { - ...oldData, - pages, - }; - } - ); - }; - - const increaseDropsDropRedropCount = ({ - drop, - }: { - readonly drop: ApiDrop; - }): void => { - queryClient.setQueryData( - [ - QueryKey.DROPS, - { - limit: `10`, - context_profile: drop.author.handle, - wave_id: drop.wave.id, - include_replies: "true", - }, - ], - ( - oldData: - | { - pages: ApiDrop[][]; - } - | undefined - ) => { - if (!oldData?.pages.length) { - return oldData; - } - const pages: ApiDrop[][] = JSON.parse(JSON.stringify(oldData.pages)); - const quotedDrops = drop.parts - .map((part) => part.quoted_drop) - .filter((quotedDrop) => !!quotedDrop); - if (quotedDrops.length) { - const modifiedPages = pages.map((items) => { - const modifiedItems = items.map((item) => { - const modifiedParts = item.parts.map((part) => { - const isQuoted = quotedDrops.find( - (qd) => - qd && - item.id === qd.drop_id && - part.part_id === qd.drop_part_id - ); - return part; - }); - - return { - ...item, - parts: modifiedParts, - }; - }); - return modifiedItems; - }); - return { - ...oldData, - pages: modifiedPages, - }; - } - return { - ...oldData, - pages, - }; - } - ); - }; - const addReplyToDropDiscussion = ({ drop, }: { @@ -994,82 +838,6 @@ export default function ReactQueryWrapper({ ); }; - const increaseFeedItemsDropDiscussionCount = ({ - drop, - }: { - readonly drop: ApiDrop; - }): void => { - queryClient.setQueryData( - [QueryKey.FEED_ITEMS], - ( - oldData: - | { - pages: TypedFeedItem[][]; - } - | undefined - ) => { - if (!oldData?.pages.length) { - return oldData; - } - const pages: TypedFeedItem[][] = JSON.parse( - JSON.stringify(oldData.pages) - ); - const repliedDrop = drop.reply_to; - if (repliedDrop) { - const modifiedPages = pages.map((items) => { - const modifiedItems = items.map((item) => { - if (item.type === ApiFeedItemType.DropCreated) { - const modifiedParts = item.item.parts.map((part) => { - const isReplied = - item.item.id === repliedDrop.drop_id && - part.part_id === repliedDrop.drop_part_id; - - return part; - }); - return { - ...item, - item: { - ...item.item, - parts: modifiedParts, - }, - }; - } - if (item.type === ApiFeedItemType.DropReplied) { - const modifiedParts = item.item.reply.parts.map((part) => { - const isReplied = - item.item.reply.id === repliedDrop.drop_id && - part.part_id === repliedDrop.drop_part_id; - - return part; - }); - return { - ...item, - item: { - ...item.item, - reply: { - ...item.item.reply, - parts: modifiedParts, - }, - }, - }; - } - return item; - }); - return modifiedItems; - }); - return { - ...oldData, - pages: modifiedPages, - }; - } - return { - ...oldData, - pages, - }; - } - ); - }; - const addOptimisticDrop = async ({ drop, }: { @@ -1077,11 +845,8 @@ export default function ReactQueryWrapper({ }): Promise => { addDropToDrops(queryClient, { drop }); increaseWavesOverviewDropsCount(queryClient, drop.wave.id); - increaseFeedItemsDropRedropCount({ drop }); - increaseDropsDropRedropCount({ drop }); if (drop.reply_to) { addReplyToDropDiscussion({ drop }); - increaseFeedItemsDropDiscussionCount({ drop }); } }; diff --git a/components/user/proxy/create/ProxyCreate.tsx b/components/user/proxy/create/ProxyCreate.tsx index f977cfd673..511bac77f5 100644 --- a/components/user/proxy/create/ProxyCreate.tsx +++ b/components/user/proxy/create/ProxyCreate.tsx @@ -84,9 +84,7 @@ export default function ProxyCreate({ } setProfileProxy(newProfileProxy); onProfileProxyModify({ - profileProxyId: newProfileProxy.id, - grantedToHandle: newProfileProxy.granted_to.handle, - createdByHandle: newProfileProxy.created_by.handle, + profileProxyId: newProfileProxy.id }); onModeChange(ProxyMode.LIST); }; diff --git a/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx b/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx index 4c3af3cf53..3f23d35beb 100644 --- a/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx +++ b/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx @@ -120,8 +120,6 @@ export default function ProxyActionAcceptanceButton({ } onProfileProxyModify({ profileProxyId: profileProxy.id, - grantedToHandle: profileProxy.granted_to.handle, - createdByHandle: profileProxy.created_by.handle, }); setToast({ message: "Action status changed", @@ -190,14 +188,14 @@ export default function ProxyActionAcceptanceButton({ {possibleActions.includes( AcceptActionRequestActionEnum.Restore ) && ( - - )} + + )} diff --git a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx index 212472cdc6..d1e50227af 100644 --- a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx +++ b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx @@ -65,8 +65,6 @@ export default function ProfileProxyCreditEdit({ } onProfileProxyModify({ profileProxyId: profileProxy.id, - grantedToHandle: profileProxy.granted_to.handle, - createdByHandle: profileProxy.created_by.handle, }); setToast({ message: "Action credit updated successfully!", diff --git a/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx b/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx index b1715aeba6..d9f509dc96 100644 --- a/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx +++ b/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx @@ -71,9 +71,7 @@ export default function ProfileProxyEndTimeEdit({ return; } onProfileProxyModify({ - profileProxyId: profileProxy.id, - grantedToHandle: profileProxy.granted_to.handle, - createdByHandle: profileProxy.created_by.handle, + profileProxyId: profileProxy.id }); setToast({ message: "Action end time updated successfully!", @@ -141,11 +139,10 @@ export default function ProfileProxyEndTimeEdit({ onClick={onSubmit} disabled={!isChangedAndValid || submitting} type="button" - className={`${ - !isChangedAndValid - ? "tw-opacity-50" - : "hover:tw-bg-primary-600 hover:tw-border-primary-600" - } tw-w-full tw-flex tw-items-center tw-justify-center tw-relative tw-bg-primary-500 tw-px-3 tw-py-2 tw-text-xs tw-font-semibold tw-text-white tw-border tw-border-solid tw-border-primary-500 tw-rounded-lg tw-transition tw-duration-300 tw-ease-out`}> + className={`${!isChangedAndValid + ? "tw-opacity-50" + : "hover:tw-bg-primary-600 hover:tw-border-primary-600" + } tw-w-full tw-flex tw-items-center tw-justify-center tw-relative tw-bg-primary-500 tw-px-3 tw-py-2 tw-text-xs tw-font-semibold tw-text-white tw-border tw-border-solid tw-border-primary-500 tw-rounded-lg tw-transition tw-duration-300 tw-ease-out`}>
{submitting && } Update diff --git a/components/user/proxy/proxy/create-action/ProxyCreateAction.tsx b/components/user/proxy/proxy/create-action/ProxyCreateAction.tsx index d907760694..9474adaf0f 100644 --- a/components/user/proxy/proxy/create-action/ProxyCreateAction.tsx +++ b/components/user/proxy/proxy/create-action/ProxyCreateAction.tsx @@ -44,8 +44,6 @@ export default function ProxyCreateAction({ } onProfileProxyModify({ profileProxyId: profileProxy.id, - grantedToHandle: profileProxy.granted_to.handle, - createdByHandle: profileProxy.created_by.handle, }); onActionCreated(); }, diff --git a/package-lock.json b/package-lock.json index 481101e5ef..ede8ea62d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -334,6 +334,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -969,6 +970,7 @@ "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.1.tgz", "integrity": "sha512-0ap4FzPJItaeg3QiiS1WguPNHY2aD67fQ9wr7DojCRzTFuNXQPvFB6lBkqlrVeQyJ9jCw0KV/LXv25oXjDcsyA==", "license": "MIT", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -1052,6 +1054,7 @@ "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-4.3.6.tgz", "integrity": "sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@noble/hashes": "1.4.0", "clsx": "1.2.1", @@ -1903,6 +1906,7 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", "license": "MIT", + "peer": true, "dependencies": { "@fortawesome/fontawesome-common-types": "6.7.2" }, @@ -1952,6 +1956,7 @@ "resolved": "https://registry.npmjs.org/@gemini-wallet/core/-/core-0.3.2.tgz", "integrity": "sha512-Z4aHi3ECFf5oWYWM3F1rW83GJfB9OvhBYPTmb5q+VyK3uvzvS48lwo+jwh2eOoCRWEuT/crpb9Vwp2QaS5JqgQ==", "license": "MIT", + "peer": true, "dependencies": { "@metamask/rpc-errors": "7.0.2", "eventemitter3": "5.0.1" @@ -3846,7 +3851,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -4609,6 +4613,7 @@ "version": "0.33.1", "resolved": "https://registry.npmjs.org/@metamask/sdk/-/sdk-0.33.1.tgz", "integrity": "sha512-1mcOQVGr9rSrVcbKPNVzbZ8eCl1K0FATsYH3WJ/MH4WcZDWGECWrXJPNMZoEAkLxWiMe8jOQBumg2pmcDa9zpQ==", + "peer": true, "dependencies": { "@babel/runtime": "^7.26.0", "@metamask/onboarding": "^1.0.1", @@ -4674,6 +4679,7 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "license": "MIT", + "peer": true, "dependencies": { "node-fetch": "^2.7.0" } @@ -4845,6 +4851,7 @@ "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.9.tgz", "integrity": "sha512-zDntUTReRbAThIfSp3dQZ9kKqI+LjgLp5YZN5c1bgNRDuoeLySAoZg46Bg1a+uV8TMgIRziHocglKGNzr6l+bQ==", "license": "MIT", + "peer": true, "dependencies": { "file-type": "21.1.0", "iterare": "1.2.1", @@ -5061,6 +5068,7 @@ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -5233,6 +5241,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -5254,6 +5263,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.2.0.tgz", "integrity": "sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==", "license": "Apache-2.0", + "peer": true, "engines": { "node": "^18.19.0 || >=20.6.0" }, @@ -5266,6 +5276,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -5281,6 +5292,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.208.0.tgz", "integrity": "sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/api-logs": "0.208.0", "import-in-the-middle": "^2.0.0", @@ -5668,6 +5680,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/core": "2.2.0", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -5684,6 +5697,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/core": "2.2.0", "@opentelemetry/resources": "2.2.0", @@ -5701,6 +5715,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=14" } @@ -6373,6 +6388,7 @@ "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "playwright": "1.57.0" }, @@ -6388,6 +6404,7 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "license": "MIT", + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -8488,6 +8505,7 @@ "resolved": "https://registry.npmjs.org/@solana/kit/-/kit-3.0.3.tgz", "integrity": "sha512-CEEhCDmkvztd1zbgADsEQhmj9GyWOOGeW1hZD+gtwbBSF5YN1uofS/pex5MIh/VIqKRj+A2UnYWI1V+9+q/lyQ==", "license": "MIT", + "peer": true, "dependencies": { "@solana/accounts": "3.0.3", "@solana/addresses": "3.0.3", @@ -9090,6 +9108,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.11.tgz", "integrity": "sha512-f9z/nXhCgWDF4lHqgIE30jxLe4sYv15QodfdPDKYAk7nAEjNcndy4dHz3ezhdUaR23BpWa4I2EH4/DZ0//Uf8A==", "license": "MIT", + "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -9100,6 +9119,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.11.tgz", "integrity": "sha512-3uyzz01D1fkTLXuxF3JfoJoHQMU2fxsfJwE+6N5hHy0dVNoZOvwKP8Z2k7k1KDeD54N20apcJnG75TBAStIrBA==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/query-core": "5.90.11" }, @@ -9312,8 +9332,7 @@ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -9383,7 +9402,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -9394,7 +9412,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -9740,6 +9757,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -9798,6 +9816,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.3.tgz", "integrity": "sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -9807,6 +9826,7 @@ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -9932,6 +9952,7 @@ "integrity": "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.48.0", @@ -9972,6 +9993,7 @@ "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.48.0", "@typescript-eslint/types": "8.48.0", @@ -10604,7 +10626,6 @@ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.0.tgz", "integrity": "sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=12.20.0" }, @@ -10699,6 +10720,7 @@ "integrity": "sha512-SSlIG6QEVxClgl1s0LMk4xr2wg4eT3Zn/Hb81IocyqNSGfXpjtawWxKxiC5/9Z95f1INyBD6MctJbL/R1oBwIw==", "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", "license": "Apache-2.0", + "peer": true, "dependencies": { "@reown/appkit": "1.7.8", "@walletconnect/jsonrpc-http-connection": "1.0.8", @@ -11806,6 +11828,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -12310,7 +12333,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -12320,29 +12342,25 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -12353,15 +12371,13 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -12374,7 +12390,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "license": "MIT", - "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -12384,7 +12399,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -12393,15 +12407,13 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -12418,7 +12430,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -12432,7 +12443,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -12445,7 +12455,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -12460,7 +12469,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -12476,15 +12484,13 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/abab": { "version": "2.0.6", @@ -12520,6 +12526,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -12552,7 +12559,6 @@ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.13.0" }, @@ -12635,7 +12641,6 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "license": "MIT", - "peer": true, "dependencies": { "ajv": "^8.0.0" }, @@ -12653,7 +12658,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -12669,8 +12673,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/ansi-escapes": { "version": "4.3.2", @@ -13107,6 +13110,7 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "license": "MIT", + "peer": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -13196,6 +13200,7 @@ "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/types": "^7.26.0" } @@ -13476,6 +13481,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -13558,6 +13564,7 @@ "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -13816,6 +13823,7 @@ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", "license": "MIT", + "peer": true, "dependencies": { "@kurkle/color": "^0.3.0" }, @@ -13906,7 +13914,6 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.0" } @@ -15141,8 +15148,7 @@ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/dom-helpers": { "version": "5.2.1", @@ -15281,6 +15287,7 @@ "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.16.tgz", "integrity": "sha512-dS5cbA9rA2VR4Ybuvhg6jvdmp46ubLn3E+px8cG/35aEDNclrqoCjg6mt0HYZ/M+OoESS3jSkCrqk1kWAEhWAw==", "license": "MIT", + "peer": true, "dependencies": { "@ecies/ciphers": "^0.2.4", "@noble/ciphers": "^1.3.0", @@ -15328,7 +15335,8 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/emoji-mart/-/emoji-mart-5.6.0.tgz", "integrity": "sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/emoji-regex": { "version": "10.6.0", @@ -15429,7 +15437,6 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -15588,8 +15595,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", @@ -15765,6 +15771,7 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -15950,6 +15957,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -16596,7 +16604,8 @@ "version": "6.4.9", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/eventemitter3": { "version": "5.0.1", @@ -16799,8 +16808,7 @@ "url": "https://opencollective.com/fastify" } ], - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/fastest-stable-stringify": { "version": "2.0.2", @@ -17413,8 +17421,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/minimatch": { "version": "10.1.1", @@ -18918,7 +18925,6 @@ "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "license": "MIT", - "peer": true, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -22833,7 +22839,6 @@ "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz", "integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==", "license": "MIT", - "peer": true, "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -22932,7 +22937,6 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.11.5" }, @@ -23035,7 +23039,6 @@ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "lz-string": "bin/bin.js" } @@ -24316,6 +24319,7 @@ "resolved": "https://registry.npmjs.org/next/-/next-16.0.10.tgz", "integrity": "sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==", "license": "MIT", + "peer": true, "dependencies": { "@next/env": "16.0.10", "@swc/helpers": "0.5.15", @@ -25704,6 +25708,7 @@ "resolved": "https://registry.npmjs.org/porto/-/porto-0.2.35.tgz", "integrity": "sha512-gu9FfjjvvYBgQXUHWTp6n3wkTxVtEcqFotM7i3GEZeoQbvLGbssAicCz6hFZ8+xggrJWwi/RLmbwNra50SMmUQ==", "license": "MIT", + "peer": true, "dependencies": { "hono": "^4.10.3", "idb-keyval": "^6.2.1", @@ -25864,6 +25869,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -25896,6 +25902,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -26056,7 +26063,6 @@ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -26072,7 +26078,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -26085,8 +26090,7 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/prismjs": { "version": "1.30.0", @@ -26157,6 +26161,7 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -26501,7 +26506,6 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -26511,6 +26515,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -26561,6 +26566,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -26624,6 +26630,7 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", + "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -26816,6 +26823,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -26876,7 +26884,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -26891,7 +26900,8 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", @@ -27049,7 +27059,6 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -27210,6 +27219,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -27351,6 +27361,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -27449,6 +27460,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.94.2.tgz", "integrity": "sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==", "license": "MIT", + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -27516,7 +27528,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "license": "MIT", - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -27553,7 +27564,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -27565,8 +27575,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/screenfull": { "version": "5.2.0", @@ -27618,7 +27627,6 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "license": "BSD-3-Clause", - "peer": true, "dependencies": { "randombytes": "^2.1.0" } @@ -27972,6 +27980,7 @@ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", "license": "MIT", + "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -28747,6 +28756,7 @@ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz", "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==", "license": "MIT", + "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -28812,6 +28822,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "license": "MIT", + "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -28863,7 +28874,6 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "license": "MIT", - "peer": true, "engines": { "node": ">=6" }, @@ -28877,7 +28887,6 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -28896,7 +28905,6 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -28931,7 +28939,6 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -28946,7 +28953,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -28961,15 +28967,13 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/terser/node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -29075,7 +29079,8 @@ "version": "0.163.0", "resolved": "https://registry.npmjs.org/three/-/three-0.163.0.tgz", "integrity": "sha512-HlMgCb2TF/dTLRtknBnjUTsR8FsDqBY43itYop2+Zg822I+Kd0Ua2vs8CvfBVefXkBdNDrLMoRTGCIIpfCuDew==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/throttle-debounce": { "version": "3.0.1", @@ -29491,7 +29496,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "license": "0BSD", + "peer": true }, "node_modules/tsx": { "version": "4.21.0", @@ -29499,6 +29505,7 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -30114,6 +30121,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -30644,6 +30652,7 @@ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -30703,6 +30712,7 @@ "resolved": "https://registry.npmjs.org/valtio/-/valtio-2.1.7.tgz", "integrity": "sha512-DwJhCDpujuQuKdJ2H84VbTjEJJteaSmqsuUltsfbfdbotVfNeTE4K/qc/Wi57I9x8/2ed4JNdjEna7O6PfavRg==", "license": "MIT", + "peer": true, "dependencies": { "proxy-compare": "^3.0.1" }, @@ -30761,6 +30771,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", @@ -30903,6 +30914,7 @@ "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-2.19.5.tgz", "integrity": "sha512-RQUfKMv6U+EcSNNGiPbdkDtJwtuFxZWLmvDiQmjjBgkuPulUwDJsKhi7gjynzJdsx2yDqhHCXkKsbbfbIsHfcQ==", "license": "MIT", + "peer": true, "dependencies": { "@wagmi/connectors": "6.2.0", "@wagmi/core": "2.22.1", @@ -30958,6 +30970,7 @@ "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-2.22.1.tgz", "integrity": "sha512-cG/xwQWsBEcKgRTkQVhH29cbpbs/TdcUJVFXCyri3ZknxhMyGv0YEjTcrNpRgt2SaswL1KrvslSNYKKo+5YEAg==", "license": "MIT", + "peer": true, "dependencies": { "eventemitter3": "5.0.1", "mipd": "0.0.7", @@ -30985,6 +30998,7 @@ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -31052,7 +31066,6 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "license": "MIT", - "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -31097,7 +31110,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -31161,7 +31173,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -31175,7 +31186,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -31398,6 +31408,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -31550,6 +31561,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From a1ecc115b0d74902c6ad0c4117f1ad8776ba268b Mon Sep 17 00:00:00 2001 From: Simo Date: Tue, 30 Dec 2025 15:10:56 +0100 Subject: [PATCH 2/6] wip Signed-off-by: Simo --- TODO.md | 34 ----- .../react-query-wrapper/ReactQueryWrapper.tsx | 137 +++++++----------- 2 files changed, 56 insertions(+), 115 deletions(-) delete mode 100644 TODO.md diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 63e75d5717..0000000000 --- a/TODO.md +++ /dev/null @@ -1,34 +0,0 @@ - 273:9 warning The 'setProfile' function makes the dependencies of useMemo Hook (at line 1257) change on every render. To fix this, wrap the definition of 'setProfile' in its own useCallback() Hook react-hooks/exhaustive-deps - 283:9 warning The 'setWave' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setWave' in its own useCallback() Hook react-hooks/exhaustive-deps - 290:9 warning The 'setWavesOverviewPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setWavesOverviewPage' in its own useCallback() Hook react-hooks/exhaustive-deps - 314:9 warning The 'setWaveDrops' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setWaveDrops' in its own useCallback() Hook react-hooks/exhaustive-deps - 343:9 warning The 'setProfileProxy' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'setProfileProxy' in its own useCallback() Hook react-hooks/exhaustive-deps - 350:9 warning The 'onProfileProxyModify' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileProxyModify' in its own useCallback() Hook react-hooks/exhaustive-deps - 352:5 warning 'createdByHandle' is defined but never used. Allowed unused args must match /^_/u unused-imports/no-unused-vars - 353:5 warning 'grantedToHandle' is defined but never used. Allowed unused args must match /^_/u unused-imports/no-unused-vars - 410:9 warning The 'onGroupRemoved' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onGroupRemoved' in its own useCallback() Hook react-hooks/exhaustive-deps - 413:9 warning The 'onGroupChanged' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onGroupChanged' in its own useCallback() Hook react-hooks/exhaustive-deps - 416:9 warning The 'onGroupCreate' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onGroupCreate' in its own useCallback() Hook react-hooks/exhaustive-deps - 538:9 warning The 'onProfileCICModify' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileCICModify' in its own useCallback() Hook react-hooks/exhaustive-deps - 619:9 warning The 'onProfileRepModify' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileRepModify' in its own useCallback() Hook react-hooks/exhaustive-deps - 717:9 warning The 'onProfileEdit' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileEdit' in its own useCallback() Hook react-hooks/exhaustive-deps - 732:9 warning The 'onProfileStatementAdd' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileStatementAdd' in its own useCallback() Hook react-hooks/exhaustive-deps - 737:9 warning The 'onProfileStatementRemove' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onProfileStatementRemove' in its own useCallback() Hook react-hooks/exhaustive-deps - 760:9 warning The 'initProfileRepPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'initProfileRepPage' in its own useCallback() Hook react-hooks/exhaustive-deps - 779:9 warning The 'initProfileIdentityPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'initProfileIdentityPage' in its own useCallback() Hook react-hooks/exhaustive-deps - 795:9 warning The 'initCommunityActivityPage' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'initCommunityActivityPage' in its own useCallback() Hook react-hooks/exhaustive-deps - 835:25 warning 'isQuoted' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars - 854:25 warning 'isQuoted' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars - 924:23 warning 'isQuoted' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars - 1023:25 warning 'isReplied' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars - 1039:25 warning 'isReplied' is assigned a value but never used. Allowed unused vars must match /^_/u unused-imports/no-unused-vars - 1073:9 warning The 'addOptimisticDrop' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'addOptimisticDrop' in its own useCallback() Hook react-hooks/exhaustive-deps - 1088:9 warning The 'waitAndInvalidateDrops' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'waitAndInvalidateDrops' in its own useCallback() Hook react-hooks/exhaustive-deps - 1093:9 warning The 'onIdentityBulkRate' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onIdentityBulkRate' in its own useCallback() Hook react-hooks/exhaustive-deps - 1153:9 warning The 'invalidateDrops' function makes the dependencies of useMemo Hook (at line 1257) change on every render. To fix this, wrap the definition of 'invalidateDrops' in its own useCallback() Hook react-hooks/exhaustive-deps - 1174:9 warning The 'onWaveCreated' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onWaveCreated' in its own useCallback() Hook react-hooks/exhaustive-deps - 1176:9 warning The 'onWaveFollowChange' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onWaveFollowChange' in its own useCallback() Hook react-hooks/exhaustive-deps - 1188:9 warning The 'onIdentityFollowChange' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'onIdentityFollowChange' in its own useCallback() Hook react-hooks/exhaustive-deps - 1200:9 warning The 'invalidateAll' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'invalidateAll' in its own useCallback() Hook react-hooks/exhaustive-deps - 1204:9 warning The 'invalidateNotifications' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'invalidateNotifications' in its own useCallback() Hook react-hooks/exhaustive-deps - 1210:9 warning The 'invalidateIdentityTdhStats' function makes the dependencies of useMemo Hook (at line 1257) change on every render. Move it inside the useMemo callback. Alternatively, wrap the definition of 'invalidateIdentityTdhStats' in its own useCallback() Hook react-hooks/exhaustive-deps \ No newline at end of file diff --git a/components/react-query-wrapper/ReactQueryWrapper.tsx b/components/react-query-wrapper/ReactQueryWrapper.tsx index 12c37908ad..07755fd0e4 100644 --- a/components/react-query-wrapper/ReactQueryWrapper.tsx +++ b/components/react-query-wrapper/ReactQueryWrapper.tsx @@ -17,7 +17,7 @@ import { convertActivityLogParams } from "@/helpers/profile-logs.helpers"; import { Time } from "@/helpers/time"; import { CountlessPage, Page } from "@/helpers/Types"; import { useQueryKeyListener } from "@/hooks/useQueryKeyListener"; -import { InfiniteData, useQueryClient } from "@tanstack/react-query"; +import { InfiniteData, type QueryClient, useQueryClient } from "@tanstack/react-query"; import Cookies from "js-cookie"; import { createContext, useMemo } from "react"; import { ActivityLogParams } from "../profile-activity/ProfileActivityLogs"; @@ -216,29 +216,25 @@ export const ReactQueryWrapperContext = invalidateIdentityTdhStats: () => { }, }); -export default function ReactQueryWrapper({ - children, -}: { - readonly children: React.ReactNode; -}) { - const queryClient = useQueryClient(); +const getHandlesFromProfile = (profile: ApiIdentity): string[] => { + const handles: string[] = []; + if (profile.handle) { + handles.push(profile.handle.toLowerCase()); + } - const getHandlesFromProfile = (profile: ApiIdentity): string[] => { - const handles: string[] = []; - if (profile.handle) { - handles.push(profile.handle.toLowerCase()); + profile.wallets?.forEach((wallet) => { + if (wallet.display) { + handles.push(wallet.display.toLowerCase()); } + handles.push(wallet.wallet.toLowerCase()); + }); - profile.wallets?.forEach((wallet) => { - if (wallet.display) { - handles.push(wallet.display.toLowerCase()); - } - handles.push(wallet.wallet.toLowerCase()); - }); - - return handles; - }; + return handles; +}; +const createReactQueryContextValue = ( + queryClient: QueryClient +): ReactQueryWrapperContextType => { const invalidateQueries = ({ key, values, @@ -352,9 +348,6 @@ export default function ReactQueryWrapper({ queryClient.invalidateQueries({ queryKey: [QueryKey.PROFILE_PROFILE_PROXIES], }); - queryClient.invalidateQueries({ - queryKey: [QueryKey.PROFILE_PROFILE_PROXIES], - }); }; const invalidateProfileRaterCICState = ({ @@ -978,6 +971,44 @@ export default function ReactQueryWrapper({ }); }; + return { + setProfile, + setWave, + setWavesOverviewPage, + setWaveDrops, + setProfileProxy, + onProfileProxyModify, + onProfileCICModify, + onProfileRepModify, + onProfileEdit, + onProfileStatementAdd, + onProfileStatementRemove, + initProfileRepPage, + initProfileIdentityPage, + initCommunityActivityPage, + onGroupRemoved, + onGroupChanged, + waitAndInvalidateDrops, + addOptimisticDrop, + onIdentityBulkRate, + onGroupCreate, + onWaveCreated, + onWaveFollowChange, + invalidateAll, + onIdentityFollowChange, + invalidateDrops, + invalidateNotifications, + invalidateIdentityTdhStats, + }; +}; + +export default function ReactQueryWrapper({ + children, +}: { + readonly children: React.ReactNode; +}) { + const queryClient = useQueryClient(); + useQueryKeyListener([QueryKey.FEED_ITEMS], () => { Cookies.set([QueryKey.FEED_ITEMS].toString(), `${Time.now().toMillis()}`); }); @@ -990,64 +1021,8 @@ export default function ReactQueryWrapper({ }); const value = useMemo( - () => ({ - setProfile, - setWave, - setWavesOverviewPage, - setWaveDrops, - setProfileProxy, - onProfileProxyModify, - onProfileCICModify, - onProfileRepModify, - onProfileEdit, - onProfileStatementAdd, - onProfileStatementRemove, - initProfileRepPage, - initProfileIdentityPage, - initCommunityActivityPage, - onGroupRemoved, - onGroupChanged, - waitAndInvalidateDrops, - addOptimisticDrop, - onIdentityBulkRate, - onGroupCreate, - onWaveCreated, - onWaveFollowChange, - invalidateAll, - onIdentityFollowChange, - invalidateDrops, - invalidateNotifications, - invalidateIdentityTdhStats, - }), - [ - setProfile, - setWave, - setWavesOverviewPage, - setWaveDrops, - setProfileProxy, - onProfileProxyModify, - onProfileCICModify, - onProfileRepModify, - onProfileEdit, - onProfileStatementAdd, - onProfileStatementRemove, - initProfileRepPage, - initProfileIdentityPage, - initCommunityActivityPage, - onGroupRemoved, - onGroupChanged, - waitAndInvalidateDrops, - addOptimisticDrop, - onIdentityBulkRate, - onGroupCreate, - onWaveCreated, - onWaveFollowChange, - invalidateAll, - onIdentityFollowChange, - invalidateDrops, - invalidateNotifications, - invalidateIdentityTdhStats, - ] + () => createReactQueryContextValue(queryClient), + [queryClient] ); return ( From 090cdd755ac1fff879904e67404a470e3b4aa384 Mon Sep 17 00:00:00 2001 From: Simo Date: Tue, 30 Dec 2025 15:25:03 +0100 Subject: [PATCH 3/6] wip Signed-off-by: Simo --- .../action/ProxyActionAcceptanceButton.tsx | 14 -------------- .../utils/credit/ProfileProxyCreditEdit.tsx | 19 +++---------------- .../utils/time/ProfileProxyEndTimeEdit.tsx | 14 +++----------- 3 files changed, 6 insertions(+), 41 deletions(-) diff --git a/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx b/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx index 3f23d35beb..f2bef5f773 100644 --- a/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx +++ b/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx @@ -21,20 +21,6 @@ import HeaderProxyNewModal from "@/components/header/proxy/HeaderProxyNewModal"; import CommonAnimationWrapper from "@/components/utils/animation/CommonAnimationWrapper"; import CommonAnimationOpacity from "@/components/utils/animation/CommonAnimationOpacity"; -const ACTION_LABEL: Record = { - [AcceptActionRequestActionEnum.Accept]: "Accept", - [AcceptActionRequestActionEnum.Reject]: "Reject", - [AcceptActionRequestActionEnum.Revoke]: "Revoke", - [AcceptActionRequestActionEnum.Restore]: "Restore", -}; - -const ACTION_CLASSES: Record = { - [AcceptActionRequestActionEnum.Accept]: "tw-text-green", - [AcceptActionRequestActionEnum.Reject]: "tw-text-red", - [AcceptActionRequestActionEnum.Revoke]: "tw-text-red", - [AcceptActionRequestActionEnum.Restore]: "tw-text-green", -}; - export default function ProxyActionAcceptanceButton({ action, profile, diff --git a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx index d1e50227af..af5f6c6e82 100644 --- a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx +++ b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx @@ -1,6 +1,6 @@ "use client"; -import { useContext, useEffect, useState } from "react"; +import { useContext, useState } from "react"; import CommonInput from "@/components/utils/input/CommonInput"; import { ApiProfileProxy } from "@/generated/models/ApiProfileProxy"; import { ApiProfileProxyAction } from "@/generated/models/ApiProfileProxyAction"; @@ -29,21 +29,8 @@ export default function ProfileProxyCreditEdit({ profileProxyAction.credit_amount ?? 0 ); - const getIsChangedAndValid = () => { - if (profileProxyAction.credit_amount === creditAmount) { - return false; - } - if (creditAmount <= 0) { - return false; - } - return true; - }; - - const [isChangedAndValid, setIsChangedAndValid] = useState( - getIsChangedAndValid() - ); - - useEffect(() => setIsChangedAndValid(getIsChangedAndValid()), [creditAmount]); + const isChangedAndValid = + profileProxyAction.credit_amount !== creditAmount && creditAmount > 0; const [submitting, setSubmitting] = useState(false); const profileProxyActionCreditMutation = useMutation({ diff --git a/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx b/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx index d9f509dc96..6708dbd56d 100644 --- a/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx +++ b/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx @@ -1,6 +1,6 @@ "use client"; -import { useContext, useEffect, useState } from "react"; +import { useContext, useState } from "react"; import { ApiProfileProxy } from "@/generated/models/ApiProfileProxy"; import { ApiProfileProxyAction } from "@/generated/models/ApiProfileProxyAction"; import CommonTimeSelect from "@/components/utils/time/CommonTimeSelect"; @@ -34,7 +34,7 @@ export default function ProfileProxyEndTimeEdit({ profileProxyAction.end_time ); - const getIsChangedAndValid = () => { + const isChangedAndValid = (() => { if (profileProxyAction.end_time === endTime) { return false; } @@ -42,15 +42,7 @@ export default function ProfileProxyEndTimeEdit({ return false; } return true; - }; - - const [isChangedAndValid, setIsChangedAndValid] = useState( - getIsChangedAndValid() - ); - useEffect( - () => setIsChangedAndValid(getIsChangedAndValid()), - [endTime, profileProxyAction.end_time] - ); + })(); const [submitting, setSubmitting] = useState(false); const profileProxyActionCreditMutation = useMutation({ From 0e97e567ccd7d7a13dc80f23bb35b7f2efd6ca8c Mon Sep 17 00:00:00 2001 From: Simo Date: Wed, 31 Dec 2025 11:13:33 +0100 Subject: [PATCH 4/6] wip Signed-off-by: Simo --- .../action/ProxyActionAcceptanceButton.tsx | 6 ------ .../utils/credit/ProfileProxyCreditEdit.tsx | 11 ++--------- .../utils/time/ProfileProxyEndTimeEdit.tsx | 18 +++--------------- 3 files changed, 5 insertions(+), 30 deletions(-) diff --git a/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx b/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx index f2bef5f773..bc34b37df0 100644 --- a/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx +++ b/components/user/proxy/proxy/action/ProxyActionAcceptanceButton.tsx @@ -98,12 +98,6 @@ export default function ProxyActionAcceptanceButton({ }); }, onSuccess: (_, variables) => { - if ( - !profileProxy.granted_to?.handle || - !profileProxy.created_by?.handle - ) { - return; - } onProfileProxyModify({ profileProxyId: profileProxy.id, }); diff --git a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx index af5f6c6e82..0f585e5188 100644 --- a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx +++ b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx @@ -44,12 +44,6 @@ export default function ProfileProxyCreditEdit({ }); }, onSuccess: () => { - if ( - !profileProxy.granted_to?.handle || - !profileProxy.created_by?.handle - ) { - return; - } onProfileProxyModify({ profileProxyId: profileProxy.id, }); @@ -108,11 +102,10 @@ export default function ProfileProxyCreditEdit({ onClick={onSubmit} disabled={submitting} type="button" - className={`${ - !isChangedAndValid + className={`${!isChangedAndValid ? "tw-opacity-50" : "hover:tw-bg-primary-600 hover:tw-border-primary-600" - } tw-w-full tw-flex tw-items-center tw-justify-center tw-relative tw-bg-primary-500 tw-px-3 tw-py-2 tw-text-xs tw-font-semibold tw-text-white tw-border tw-border-solid tw-border-primary-500 tw-rounded-lg tw-transition tw-duration-300 tw-ease-out`}> + } tw-w-full tw-flex tw-items-center tw-justify-center tw-relative tw-bg-primary-500 tw-px-3 tw-py-2 tw-text-xs tw-font-semibold tw-text-white tw-border tw-border-solid tw-border-primary-500 tw-rounded-lg tw-transition tw-duration-300 tw-ease-out`}>
{submitting && } Update diff --git a/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx b/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx index 6708dbd56d..82de14e28f 100644 --- a/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx +++ b/components/user/proxy/proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx @@ -34,15 +34,9 @@ export default function ProfileProxyEndTimeEdit({ profileProxyAction.end_time ); - const isChangedAndValid = (() => { - if (profileProxyAction.end_time === endTime) { - return false; - } - if (endTime && endTime < Time.currentMillis()) { - return false; - } - return true; - })(); + const isChangedAndValid = + profileProxyAction.end_time !== endTime && + (!endTime || endTime >= Time.currentMillis()); const [submitting, setSubmitting] = useState(false); const profileProxyActionCreditMutation = useMutation({ @@ -56,12 +50,6 @@ export default function ProfileProxyEndTimeEdit({ }); }, onSuccess: () => { - if ( - !profileProxy.granted_to?.handle || - !profileProxy.created_by?.handle - ) { - return; - } onProfileProxyModify({ profileProxyId: profileProxy.id }); From 50bdae5b3341854353c75faae021abd25a5f90c6 Mon Sep 17 00:00:00 2001 From: Simo Date: Wed, 31 Dec 2025 11:28:49 +0100 Subject: [PATCH 5/6] wip Signed-off-by: Simo --- .../proxy/action/utils/credit/ProfileProxyCreditEdit.tsx | 2 +- .../proxy/action/utils/time/ProfileProxyEndTimeEdit.tsx | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx index 0f585e5188..56f129d1d6 100644 --- a/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx +++ b/components/user/proxy/proxy/action/utils/credit/ProfileProxyCreditEdit.tsx @@ -100,7 +100,7 @@ export default function ProfileProxyCreditEdit({