+ );
+}
diff --git a/packages/next-common/components/multisigs/actions/removePopup.jsx b/packages/next-common/components/multisigs/actions/removePopup.jsx
index 654d2aca39..cb184d7c8f 100644
--- a/packages/next-common/components/multisigs/actions/removePopup.jsx
+++ b/packages/next-common/components/multisigs/actions/removePopup.jsx
@@ -6,7 +6,7 @@ import {
} from "next-common/store/reducers/toastSlice";
import { useDispatch } from "react-redux";
import SecondaryButton from "next-common/lib/button/secondary";
-import PrimaryButton from "next-common/lib/button/primary";
+import SubmitButton from "next-common/components/common/tx/submitButton";
import Popup from "next-common/components/popup/wrapper/Popup";
import { useMultisigAccounts } from "../context/multisigAccountsContext";
import { getRealField } from "next-common/sima/actions/common";
@@ -88,14 +88,14 @@ export default function RemovePopup({ onClose, multisigAddress }) {
Cancel
-
Confirm
-
+
);
diff --git a/packages/next-common/components/multisigs/actions/renamePopup.jsx b/packages/next-common/components/multisigs/actions/renamePopup.jsx
index f67240d610..b4a8058858 100644
--- a/packages/next-common/components/multisigs/actions/renamePopup.jsx
+++ b/packages/next-common/components/multisigs/actions/renamePopup.jsx
@@ -5,7 +5,7 @@ import {
newSuccessToast,
} from "next-common/store/reducers/toastSlice";
import { useDispatch } from "react-redux";
-import PrimaryButton from "next-common/lib/button/primary";
+import SubmitButton from "next-common/components/common/tx/submitButton";
import Popup from "next-common/components/popup/wrapper/Popup";
import TextInputField from "next-common/components/popup/fields/textInputField";
import { useMultisigAccounts } from "../context/multisigAccountsContext";
@@ -106,13 +106,13 @@ export default function RemovePopup({ onClose, multisig }) {
{ERROR_MESSAGE.NAME_EXIST}
)}
-
Save Changes
-
+
);
diff --git a/packages/next-common/components/multisigs/signField/signApprovePopup/popup.jsx b/packages/next-common/components/multisigs/signField/signApprovePopup/popup.jsx
index a3ef64fe5e..3fa4801e1e 100644
--- a/packages/next-common/components/multisigs/signField/signApprovePopup/popup.jsx
+++ b/packages/next-common/components/multisigs/signField/signApprovePopup/popup.jsx
@@ -2,7 +2,7 @@ import SignerWithBalance from "next-common/components/signerPopup/signerWithBala
import ProposeTree from "next-common/components/multisigs/signField/signSubmitPopup/proposeTree";
import Popup from "next-common/components/popup/wrapper/Popup";
import { useSignApprove } from "../signApprove";
-import PrimaryButton from "next-common/lib/button/primary";
+import SubmitButton from "next-common/components/common/tx/submitButton";
function SignApproveInnerPopup({ onClose, multisig }) {
const { doSubmit, isDisabled } = useSignApprove(multisig);
@@ -12,9 +12,9 @@ function SignApproveInnerPopup({ onClose, multisig }) {
-
+
Submit
-
+
);
diff --git a/packages/next-common/components/multisigs/signField/signCancelPopup/popup.jsx b/packages/next-common/components/multisigs/signField/signCancelPopup/popup.jsx
index 7e0df5137b..afcbf7a0ae 100644
--- a/packages/next-common/components/multisigs/signField/signCancelPopup/popup.jsx
+++ b/packages/next-common/components/multisigs/signField/signCancelPopup/popup.jsx
@@ -2,7 +2,7 @@ import SignerWithBalance from "next-common/components/signerPopup/signerWithBala
import ProposeTree from "next-common/components/multisigs/signField/signSubmitPopup/proposeTree";
import Popup from "next-common/components/popup/wrapper/Popup";
import { useSignCancel } from "../signCancel";
-import PrimaryButton from "next-common/lib/button/primary";
+import SubmitButton from "next-common/components/common/tx/submitButton";
function SignCancelInnerPopup({ onClose, multisig }) {
const { doSubmit, isDisabled } = useSignCancel(multisig);
@@ -12,9 +12,9 @@ function SignCancelInnerPopup({ onClose, multisig }) {
-
+
Cancel
-
+
);
diff --git a/packages/next-common/components/myProxies/operations/removeProxy.jsx b/packages/next-common/components/myProxies/operations/removeProxy.jsx
index 5bd04e2f8a..7b175fe366 100644
--- a/packages/next-common/components/myProxies/operations/removeProxy.jsx
+++ b/packages/next-common/components/myProxies/operations/removeProxy.jsx
@@ -2,8 +2,7 @@ import { useCallback, useState, useEffect } from "react";
import { useContextApi } from "next-common/context/api";
import useRealAddress from "next-common/utils/hooks/useRealAddress";
import useTxSubmission from "next-common/components/common/tx/useTxSubmission";
-import RemoveButton from "next-common/components/removeButton";
-import Tooltip from "next-common/components/tooltip";
+import SubmitRemoveButton from "next-common/components/common/tx/submitRemoveButton";
import { useDispatch } from "react-redux";
import { newSuccessToast } from "next-common/store/reducers/toastSlice";
import { noop } from "lodash-es";
@@ -42,8 +41,10 @@ export default function RemoveProxy({ data, onSubmitted = noop }) {
}, [isSubmitting]);
return (
-
-
-
+
);
}
diff --git a/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/createPromotionReferendaAndVotePopup/index.js b/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/createPromotionReferendaAndVotePopup/index.js
index ace0cc80d6..1f3ac75508 100644
--- a/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/createPromotionReferendaAndVotePopup/index.js
+++ b/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/createPromotionReferendaAndVotePopup/index.js
@@ -6,8 +6,7 @@ import useTxSubmission from "next-common/components/common/tx/useTxSubmission";
import { useDispatch } from "react-redux";
import { newSuccessToast } from "next-common/store/reducers/toastSlice";
import { useActiveReferendaContext } from "next-common/context/activeReferenda";
-import PrimaryButton from "next-common/lib/button/primary";
-import Tooltip from "next-common/components/tooltip";
+import SubmitButton from "next-common/components/common/tx/submitButton";
import useMyRank from "../memberPromotionPopup/voteButtons/useMyRank";
import { useChain } from "next-common/context/chain";
import { getPromoteTrackNameFromRank } from "next-common/components/fellowship/core/members/actions/promote/popup";
@@ -85,15 +84,14 @@ export default function CreatePromotionReferendaAndVotePopup({
setSelectedRank={setToRank}
/>
-
-
- Create & Vote
-
-
+
+ Create & Vote
+
);
diff --git a/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/createPromotionReferendumAndVoteButton.js b/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/createPromotionReferendumAndVoteButton.js
index 56107569f9..bac1a1d88c 100644
--- a/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/createPromotionReferendumAndVoteButton.js
+++ b/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/createPromotionReferendumAndVoteButton.js
@@ -6,12 +6,13 @@ import { useFellowshipProposalSubmissionTxFunc } from "next-common/hooks/fellows
import { newSuccessToast } from "next-common/store/reducers/toastSlice";
import { useActiveReferendaContext } from "next-common/context/activeReferenda";
import dynamicPopup from "next-common/lib/dynamic/popup";
-import Tooltip from "next-common/components/tooltip";
import { useChain } from "next-common/context/chain";
import { getPromoteTrackNameFromRank } from "next-common/components/fellowship/core/members/actions/promote/popup";
import useMemberRank from "./useMemberRank";
import { useMyVotesChangedContext } from "../../../context/myVotesChanged";
import SecondaryButton from "next-common/lib/button/secondary";
+import WatchOnlyTooltip from "next-common/components/watchOnly/tooltip";
+import { useIsWatchOnly } from "next-common/context/connectedAccount";
const CreatePromotionReferendaAndVotePopup = dynamicPopup(() =>
import("../../createPromotionReferendaAndVotePopup"),
@@ -29,6 +30,7 @@ function CreateReferendumAndVoteButtonImpl({
useState(false);
const dispatch = useDispatch();
const { rank: evidenceOwnerRank } = useMemberRank(who);
+ const isWatchOnly = useIsWatchOnly();
const chain = useChain();
const trackName = getPromoteTrackNameFromRank(chain, evidenceOwnerRank + 1);
@@ -67,11 +69,14 @@ function CreateReferendumAndVoteButtonImpl({
return (
<>
-
-
+
+
{children}
-
+
{showMaybeFastPromotePopup && (
-
+
+
{children}
-
+
);
}
diff --git a/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/voteButton.js b/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/voteButton.js
index 3292be1ccf..78be405d94 100644
--- a/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/voteButton.js
+++ b/packages/next-common/components/overview/accountInfo/components/fellowshipTodoList/todoList/memberPromotionPopup/voteButtons/voteButton.js
@@ -7,9 +7,10 @@ import { useRankedCollectivePallet } from "next-common/context/collectives/colle
import { useFellowshipMemberRank } from "next-common/hooks/fellowship/useFellowshipMemberRank";
import useRealAddress from "next-common/utils/hooks/useRealAddress";
import useSubFellowshipReferendum from "next-common/hooks/collectives/useSubFellowshipReferendum";
-import Tooltip from "next-common/components/tooltip";
import { getMinRankOfClass } from "next-common/context/post/fellowship/useMaxVoters";
import { isNil, noop } from "lodash-es";
+import WatchOnlyTooltip from "next-common/components/watchOnly/tooltip";
+import { useIsWatchOnly } from "next-common/context/connectedAccount";
function VoteButtonImpl({
referendumIndex,
@@ -21,6 +22,7 @@ function VoteButtonImpl({
const api = useContextApi();
const collectivePallet = useRankedCollectivePallet();
const realAddress = useRealAddress();
+ const isWatchOnly = useIsWatchOnly();
const { rank: myRank, isLoading: isMyRankLoading } = useFellowshipMemberRank(
realAddress,
collectivePallet,
@@ -62,11 +64,14 @@ function VoteButtonImpl({
}
return (
-
-
+
+
{children}
-
+
);
}
diff --git a/packages/next-common/components/pages/components/gov2/votePopup/popupContent.js b/packages/next-common/components/pages/components/gov2/votePopup/popupContent.js
index 189fedba66..ad1dfe9d3b 100644
--- a/packages/next-common/components/pages/components/gov2/votePopup/popupContent.js
+++ b/packages/next-common/components/pages/components/gov2/votePopup/popupContent.js
@@ -10,7 +10,7 @@ import { WarningMessage } from "next-common/components/popup/styled";
import SplitAbstainVoteStatus from "./splitAbstainVoteStatus";
import VStack from "next-common/components/styled/vStack";
import VoteTypeTab, { Aye, Nay, Split, SplitAbstain } from "./tab";
-import PrimaryButton from "next-common/lib/button/primary";
+import SubmitButton from "next-common/components/common/tx/submitButton";
import useSubAddressReferendaVote, {
getReferendaDirectVote,
} from "next-common/hooks/referenda/useSubMyReferendaVote";
@@ -139,9 +139,9 @@ function VotePanel({
{!isDelegated && (
// Address is not allow to vote directly when it is in delegate mode
-
+
Submit
-
+
)}
>
diff --git a/packages/next-common/components/pages/components/referenda/popup/popupContent.js b/packages/next-common/components/pages/components/referenda/popup/popupContent.js
index 1d2c26761a..1af569b6f8 100644
--- a/packages/next-common/components/pages/components/referenda/popup/popupContent.js
+++ b/packages/next-common/components/pages/components/referenda/popup/popupContent.js
@@ -23,6 +23,7 @@ import AyeNaySplitTab from "./ayeNaySplitTab";
import useStandardVote from "./voteHooks/useStandardVote";
import useSplitVote from "./voteHooks/useSplitVote";
import useTxSubmission from "next-common/components/common/tx/useTxSubmission";
+import SubmitButton from "next-common/components/common/tx/submitButton";
export function LoadingPanel() {
return (
@@ -118,9 +119,9 @@ function VotePanel({
{!isDelegated && (
// Address is not allow to vote directly when it is in delegate mode
-
+
Confirm
-
+
)}
>
diff --git a/packages/next-common/components/paraChainTeleportPopup/index.js b/packages/next-common/components/paraChainTeleportPopup/index.js
index f4ab04ffb1..6e246104ef 100644
--- a/packages/next-common/components/paraChainTeleportPopup/index.js
+++ b/packages/next-common/components/paraChainTeleportPopup/index.js
@@ -6,7 +6,7 @@ import useAddressComboField from "next-common/components/preImages/createPreimag
import AdvanceSettings from "next-common/components/summary/newProposalQuickStart/common/advanceSettings";
import { useUser } from "next-common/context/user";
import { useSendTransaction } from "next-common/hooks/useSendTransaction";
-import PrimaryButton from "next-common/lib/button/primary";
+import SubmitButton from "next-common/components/common/tx/submitButton";
import {
newErrorToast,
newSuccessToast,
@@ -93,9 +93,9 @@ function PopupContent() {
-
+
Submit
-
+
>
);
diff --git a/packages/next-common/components/paraChainTeleportPopup/teleport.jsx b/packages/next-common/components/paraChainTeleportPopup/teleport.jsx
index 0a1ba4f8f1..8193147f14 100644
--- a/packages/next-common/components/paraChainTeleportPopup/teleport.jsx
+++ b/packages/next-common/components/paraChainTeleportPopup/teleport.jsx
@@ -6,7 +6,7 @@ import useAddressComboField from "next-common/components/preImages/createPreimag
import AdvanceSettings from "next-common/components/summary/newProposalQuickStart/common/advanceSettings";
import { useUser } from "next-common/context/user";
import { useSendTransaction } from "next-common/hooks/useSendTransaction";
-import PrimaryButton from "next-common/lib/button/primary";
+import SubmitButton from "next-common/components/common/tx/submitButton";
import {
newErrorToast,
newSuccessToast,
@@ -19,17 +19,6 @@ import useNativeTransferAmount from "./useNativeTransferAmount";
import PeopleApiProvider from "next-common/context/people/api";
import CoretimeApiProvider from "next-common/context/coretime/api";
import { CollectivesApiProvider } from "next-common/context/collectives/api";
-import Tooltip from "next-common/components/tooltip";
-
-function TooltipDisabledGuard({ disabled, children }) {
- return disabled ? (
-
- {children}
-
- ) : (
- children
- );
-}
function PopupContent() {
const { onClose } = usePopupParams();
@@ -109,15 +98,18 @@ function PopupContent() {
-
-
- Submit
-
-
+
+ Submit
+
>
);
diff --git a/packages/next-common/components/people/overview/identity/directIdentityActions.jsx b/packages/next-common/components/people/overview/identity/directIdentityActions.jsx
index 1e16d0019f..583feb34b0 100644
--- a/packages/next-common/components/people/overview/identity/directIdentityActions.jsx
+++ b/packages/next-common/components/people/overview/identity/directIdentityActions.jsx
@@ -5,7 +5,7 @@ import { useDispatch } from "react-redux";
import { newSuccessToast } from "next-common/store/reducers/toastSlice";
import useRealAddress from "next-common/utils/hooks/useRealAddress";
import useTxSubmission from "next-common/components/common/tx/useTxSubmission";
-import RemoveButton from "next-common/components/removeButton";
+import SubmitRemoveButton from "next-common/components/common/tx/submitRemoveButton";
import Tooltip from "next-common/components/tooltip";
import { clearCachedIdentitys } from "next-common/services/identity";
import { useChain } from "next-common/context/chain";
@@ -79,9 +79,11 @@ export function DirectIdentityActions() {
-
-
-
+
{showSetIdentityPopup && (
setShowSetIdentityPopup(false)} />
diff --git a/packages/next-common/components/people/overview/judgements/cancelRequestJudgement.jsx b/packages/next-common/components/people/overview/judgements/cancelRequestJudgement.jsx
index 9277423f76..72bc6321e8 100644
--- a/packages/next-common/components/people/overview/judgements/cancelRequestJudgement.jsx
+++ b/packages/next-common/components/people/overview/judgements/cancelRequestJudgement.jsx
@@ -1,5 +1,4 @@
-import RemoveButton from "next-common/components/removeButton";
-import Tooltip from "next-common/components/tooltip";
+import SubmitRemoveButton from "next-common/components/common/tx/submitRemoveButton";
import { useDispatch } from "react-redux";
import { newSuccessToast } from "next-common/store/reducers/toastSlice";
import { useContextApi } from "next-common/context/api";
@@ -30,8 +29,10 @@ export default function CancelRequestJudgement({ registrarIndex }) {
});
return (
-
-
-
+
);
}
diff --git a/packages/next-common/components/popup/voteButton.js b/packages/next-common/components/popup/voteButton.js
index 407f2c8d8b..5c8c3c8b5a 100644
--- a/packages/next-common/components/popup/voteButton.js
+++ b/packages/next-common/components/popup/voteButton.js
@@ -3,6 +3,8 @@ import { VoteEnum } from "../../utils/voteEnum";
import { ButtonWrapper } from "./styled";
import SuccessButton from "next-common/lib/button/success";
import DangerButton from "next-common/lib/button/danger";
+import WatchOnlyTooltip from "next-common/components/watchOnly/tooltip";
+import { useIsWatchOnly } from "next-common/context/connectedAccount";
export default function VoteButton({
disabled,
@@ -10,22 +12,29 @@ export default function VoteButton({
isLoading,
doVote,
}) {
+ const isWatchOnly = useIsWatchOnly();
+ const isDisabled = disabled || isWatchOnly;
+
return (
- doVote(false)}
- loading={isLoading && loadingState === VoteEnum.Nay}
- disabled={disabled || (isLoading && loadingState === VoteEnum.Aye)}
- >
- Nay
-
- doVote(true)}
- loading={isLoading && loadingState === VoteEnum.Aye}
- disabled={disabled || (isLoading && loadingState === VoteEnum.Nay)}
- >
- Aye
-
+
+ doVote(false)}
+ loading={isLoading && loadingState === VoteEnum.Nay}
+ disabled={isDisabled || (isLoading && loadingState === VoteEnum.Aye)}
+ >
+ Nay
+
+
+
+ doVote(true)}
+ loading={isLoading && loadingState === VoteEnum.Aye}
+ disabled={isDisabled || (isLoading && loadingState === VoteEnum.Nay)}
+ >
+ Aye
+
+
);
}
diff --git a/packages/next-common/components/popupWithSigner/context/signer.js b/packages/next-common/components/popupWithSigner/context/signer.js
index 18e70ac498..bdc7cd7108 100644
--- a/packages/next-common/components/popupWithSigner/context/signer.js
+++ b/packages/next-common/components/popupWithSigner/context/signer.js
@@ -10,6 +10,8 @@ import useInjectedWeb3 from "next-common/hooks/connect/useInjectedWeb3";
import { useUser } from "next-common/context/user";
import { isSameAddress } from "next-common/utils";
import { findInjectedExtension } from "next-common/hooks/connect/useInjectedWeb3Extension";
+import { useConnectedAccount } from "next-common/context/connectedAccount";
+import { isWatchOnlyAccount } from "next-common/utils/watchOnly";
export const SignerContext = createContext();
@@ -51,6 +53,7 @@ export function useSetSigner() {
export function SignerContextProvider({ children, extensionAccounts }) {
const user = useUser();
+ const connectedAccount = useConnectedAccount();
const userAddress = user?.address;
const proxyAddress = user?.proxyAddress;
const [selectedProxyAddress, setSelectedProxyAddress] = useState();
@@ -73,23 +76,34 @@ export function SignerContextProvider({ children, extensionAccounts }) {
if (!userAddress) {
return;
}
+
+ const isWatchOnly = isWatchOnlyAccount(connectedAccount);
const account = extensionAccounts?.find((item) =>
isSameAddress(item.address, userAddress),
);
- if (!account) {
- return;
- }
+ // The connected address may not be owned by any loaded wallet, e.g. a
+ // watch-only address, a mock account, or an account of a wallet that is no
+ // longer available. It is still the origin of the transaction.
+ const connectedAccountInfo = account
+ ? account
+ : {
+ address: userAddress,
+ meta: { source: connectedAccount?.wallet },
+ };
+
return {
- ...account,
- name: account.meta?.name,
+ ...connectedAccountInfo,
+ name: connectedAccountInfo.meta?.name,
proxyAddress,
selectedProxyAddress,
multisig,
realAddress,
+ isWatchOnly,
};
}, [
userAddress,
extensionAccounts,
+ connectedAccount,
proxyAddress,
selectedProxyAddress,
multisig,
diff --git a/packages/next-common/components/popupWithSigner/maybeSignerConnected.js b/packages/next-common/components/popupWithSigner/maybeSignerConnected.js
index 4c2682749b..637b496ee5 100644
--- a/packages/next-common/components/popupWithSigner/maybeSignerConnected.js
+++ b/packages/next-common/components/popupWithSigner/maybeSignerConnected.js
@@ -4,14 +4,18 @@ import { isSameAddress } from "../../utils";
import { SignerContextProvider, usePopupParams } from "./context";
import LoginPopup from "next-common/components/login/popup";
import { isMockAccountAddress } from "next-common/utils/mockAccount";
+import { useConnectedAccount } from "next-common/context/connectedAccount";
+import { isWatchOnlyAccount } from "next-common/utils/watchOnly";
export default function MaybeSignerConnected({ children, extensionAccounts }) {
const user = useUser();
+ const connectedAccount = useConnectedAccount();
const { onClose } = usePopupParams();
if (
!user?.address ||
(!isMockAccountAddress(user?.address) &&
+ !isWatchOnlyAccount(connectedAccount) &&
!extensionAccounts?.find((acc) =>
isSameAddress(acc.address, user?.address),
))
diff --git a/packages/next-common/components/post/postCreate.js b/packages/next-common/components/post/postCreate.js
index 2ce3ec9302..dc024d1678 100644
--- a/packages/next-common/components/post/postCreate.js
+++ b/packages/next-common/components/post/postCreate.js
@@ -18,6 +18,9 @@ import { NeutralPanel } from "../styled/containers/neutralPanel";
import PostLabel from "./postLabel";
import Editor, { useEditorUploading } from "../editor";
import { useEnsureLogin } from "next-common/hooks/useEnsureLogin";
+import WatchOnlyTooltip from "next-common/components/watchOnly/tooltip";
+import { useIsWatchOnly } from "next-common/context/connectedAccount";
+import { WATCH_ONLY_CREATE_POST_TOOLTIP_TEXT } from "next-common/utils/watchOnly";
const Wrapper = styled(NeutralPanel)`
color: var(--textPrimary);
@@ -77,6 +80,7 @@ export default function PostCreate() {
const [selectedLabels, setSelectedLabels] = useState([]);
const { ensureLogin } = useEnsureLogin();
const [editorUploading] = useEditorUploading();
+ const isWatchOnly = useIsWatchOnly();
const createPost = async () => {
setCreating(true);
@@ -193,13 +197,17 @@ export default function PostCreate() {
/>
-
- Create
-
+
+ Create
+
+
);
diff --git a/packages/next-common/components/removeButton.js b/packages/next-common/components/removeButton.js
index 6e9b422e3d..ed334fde7d 100644
--- a/packages/next-common/components/removeButton.js
+++ b/packages/next-common/components/removeButton.js
@@ -25,6 +25,8 @@ const Wrapper = styled.div`
}
`;
+// Plain ✕ button, for buttons that only trigger a dialog. Use SubmitRemoveButton
+// instead when it submits a tx, so watch-only accounts are handled for you.
export default function RemoveButton({ disabled, onClick = noop }) {
return (
diff --git a/packages/next-common/components/signer.js b/packages/next-common/components/signer.js
index 1e2356454d..0556d0c0b8 100644
--- a/packages/next-common/components/signer.js
+++ b/packages/next-common/components/signer.js
@@ -14,6 +14,8 @@ import useOnChainProxyInfo from "next-common/hooks/useOnChainProxy";
import Tooltip from "./tooltip";
import { MultisigAccount } from "./multisigs/styled";
import SwitchButtonWrapper from "./switchAccountButton";
+import WatchOnlyHint from "next-common/components/watchOnly/hint";
+import useAccountByAddress from "next-common/hooks/useAccountByAddress";
const Wrapper = styled(GreyPanel)`
padding: 12px 16px;
@@ -106,6 +108,14 @@ function ProxyHintForAddress({ address }) {
return ;
}
+function WatchOnlyHintRow() {
+ return (
+