diff --git a/apps/extension/package.json b/apps/extension/package.json index 9267017d..acd2ba72 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -1,6 +1,6 @@ { "name": "@palladxyz/extension", - "version": "0.5.0", + "version": "0.5.1", "type": "module", "scripts": { "dev": "vite", diff --git a/packages/features/package.json b/packages/features/package.json index 191f1c6d..36845236 100644 --- a/packages/features/package.json +++ b/packages/features/package.json @@ -1,6 +1,6 @@ { "name": "@palladxyz/features", - "version": "0.5.0", + "version": "0.5.1", "description": "", "type": "module", "module": "dist/index.js", diff --git a/packages/features/src/address-book/views/address-book.tsx b/packages/features/src/address-book/views/address-book.tsx index a55d48ee..50bc2156 100644 --- a/packages/features/src/address-book/views/address-book.tsx +++ b/packages/features/src/address-book/views/address-book.tsx @@ -46,7 +46,7 @@ export const AddressBookView = ({
diff --git a/packages/features/src/common/store/app.ts b/packages/features/src/common/store/app.ts index bb7b6dc5..9aec6b88 100644 --- a/packages/features/src/common/store/app.ts +++ b/packages/features/src/common/store/app.ts @@ -1,5 +1,4 @@ import { getLocalPersistence } from "@palladxyz/persistence" -import { DEFAULT_NETWORK } from "@palladxyz/vault" import { create } from "zustand" import { createJSONStorage, persist } from "zustand/middleware" @@ -7,9 +6,9 @@ import { VaultState } from "../lib/const" // TODO: Make network a generic type that can support networks other than just Mina type AppState = { - network: string vaultState: VaultState shareData: boolean + betaBannerVisible: boolean } type AppQueries = { @@ -17,34 +16,25 @@ type AppQueries = { } type AppMutators = { - setNetwork: (network: string) => void setVaultState: (vaultState: VaultState) => void setVaultStateInitialized: () => void setVaultStateUninitialized: () => void setShareData: (shareData: boolean) => void + setBetaBannerVisible: (betaBannerVisible: boolean) => void } type AppStore = AppState & AppMutators & AppQueries -// TODO: this should be with vite -// const VITE_APP_DEFAULT_NETWORK = import.meta.env.VITE_APP_DEFAULT_NETWORK || 'Mainnet' -const defaultNetwork = DEFAULT_NETWORK - export const useAppStore = create()( persist( (set, get) => ({ - network: defaultNetwork, + betaBannerVisible: true, vaultState: VaultState[VaultState.UNINITIALIZED], shareData: true, isInitialized: () => { const { vaultState } = get() return vaultState === VaultState[VaultState.INITIALIZED] }, - setNetwork(network) { - return set({ - network, - }) - }, setShareData(shareData) { return set({ shareData }) }, @@ -59,6 +49,9 @@ export const useAppStore = create()( const { setVaultState } = get() return setVaultState(VaultState.UNINITIALIZED) }, + setBetaBannerVisible(betaBannerVisible) { + return set({ betaBannerVisible }) + }, }), { name: "PalladApp", diff --git a/packages/features/src/router.tsx b/packages/features/src/router.tsx index 5758f630..44348d14 100644 --- a/packages/features/src/router.tsx +++ b/packages/features/src/router.tsx @@ -7,6 +7,7 @@ import { Toaster } from "sonner" import { AddressBookRoute } from "./address-book/routes/address-book" import { NewAddressRoute } from "./address-book/routes/new-address" +import { useAppStore } from "./common/store/app" import { ErrorView } from "./error-renderer/views/error" import { UnlockWalletRoute } from "./lock/routes/unlock-wallet" import { NotFoundRoute } from "./not-found/routes/not-found" @@ -42,11 +43,12 @@ import { OverviewRoute } from "./wallet/routes/overview" dayjs.extend(relativeTime) -const mixpanelConfig = { - track_pageview: true, -} - export const Router = () => { + const shareData = useAppStore((state) => state.shareData) + const mixpanelConfig = { + track_pageview: true, + opt_out_tracking_by_default: shareData ?? false, + } return ( { const navigate = useNavigate() - return navigate(-1)} /> + const shareData = useAppStore((state) => state.shareData) + const setShareData = useAppStore((state) => state.setShareData) + return ( + navigate(-1)} + shareData={shareData} + setShareData={setShareData} + /> + ) } diff --git a/packages/features/src/settings/views/privacy.tsx b/packages/features/src/settings/views/privacy.tsx index 8a80337c..36de7122 100644 --- a/packages/features/src/settings/views/privacy.tsx +++ b/packages/features/src/settings/views/privacy.tsx @@ -1,11 +1,18 @@ import { AppLayout } from "@/components/app-layout" import { SettingsPageLayout } from "@/components/settings-page-layout" +import clsx from "clsx" type PrivacyViewProps = { onCloseClicked: () => void + shareData: boolean + setShareData: (shareData: boolean) => void } -export const PrivacyView = ({ onCloseClicked }: PrivacyViewProps) => { +export const PrivacyView = ({ + onCloseClicked, + shareData, + setShareData, +}: PrivacyViewProps) => { return ( @@ -16,7 +23,12 @@ export const PrivacyView = ({ onCloseClicked }: PrivacyViewProps) => {
setShareData(event.target.checked)} /> diff --git a/packages/features/src/wallet/components/info-bar.tsx b/packages/features/src/wallet/components/info-bar.tsx new file mode 100644 index 00000000..3a4cbc48 --- /dev/null +++ b/packages/features/src/wallet/components/info-bar.tsx @@ -0,0 +1,26 @@ +import { InfoIcon, XIcon } from "lucide-react" + +type InfoBarProps = { + onClose: () => void +} + +export const InfoBar = ({ onClose }: InfoBarProps) => { + return ( +
+
+
+ +
+
+

Open Beta version

+

+ Only works for Berkeley before Mainnet launch +

+
+ +
+
+ ) +} diff --git a/packages/features/src/wallet/routes/overview.tsx b/packages/features/src/wallet/routes/overview.tsx index 684375f4..488888f5 100644 --- a/packages/features/src/wallet/routes/overview.tsx +++ b/packages/features/src/wallet/routes/overview.tsx @@ -3,6 +3,7 @@ import { useFiatPrice } from "@palladxyz/offchain-data" import { useAccount } from "@/common/hooks/use-account" import { useTransactions } from "@/common/hooks/use-transactions" +import { useAppStore } from "@/common/store/app" import { format } from "date-fns" import { take, takeLast } from "rambda" import { useState } from "react" @@ -15,6 +16,10 @@ export const OverviewRoute = () => { >() const navigate = useNavigate() const account = useAccount() + const betaBannerVisible = useAppStore((state) => state.betaBannerVisible) + const setBetaBannerVisible = useAppStore( + (state) => state.setBetaBannerVisible, + ) const { data: transactions, isLoading: transactionsLoading } = useTransactions() const latestTwoTransactions = take(2, transactions ?? []) @@ -50,6 +55,8 @@ export const OverviewRoute = () => { setCurrentPriceIndex={setCurrentPriceIndex} transactions={latestTwoTransactions} publicAddress={account.data?.publicKey ?? ""} + betaBannerVisible={betaBannerVisible} + setBetaBannerVisible={setBetaBannerVisible} onSend={() => navigate("/send")} onReceive={() => navigate("/receive")} /> diff --git a/packages/features/src/wallet/views/overview.tsx b/packages/features/src/wallet/views/overview.tsx index f36292d7..0b0cc170 100644 --- a/packages/features/src/wallet/views/overview.tsx +++ b/packages/features/src/wallet/views/overview.tsx @@ -5,6 +5,7 @@ import { Skeleton } from "@/components/skeleton" import type { Tx } from "@palladxyz/pallad-core" import { Link } from "react-router-dom" import SlotCounter from "react-slot-counter" +import { InfoBar } from "../components/info-bar" import { PortfolioValueChart } from "../components/portfolio-value-chart" import { TxTile } from "../components/tx-tile" @@ -17,6 +18,8 @@ type OverviewViewProps = { setCurrentPriceIndex: (currentPriceIndex: number | undefined) => void transactions: Tx[] publicAddress: string + betaBannerVisible: boolean + setBetaBannerVisible: (betaBannerVisible: boolean) => void onSend: () => void onReceive: () => void } @@ -30,6 +33,8 @@ export const OverviewView = ({ setCurrentPriceIndex, transactions, publicAddress, + betaBannerVisible, + setBetaBannerVisible, onSend, onReceive, }: OverviewViewProps) => { @@ -37,6 +42,9 @@ export const OverviewView = ({ return ( + {betaBannerVisible ? ( + setBetaBannerVisible(false)} /> + ) : null}