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}