mirror of
https://github.com/aljazceru/mutiny-web.git
synced 2025-12-18 14:54:26 +01:00
105 lines
3.8 KiB
TypeScript
105 lines
3.8 KiB
TypeScript
import {
|
|
DefaultMain,
|
|
SafeArea,
|
|
VStack,
|
|
Card,
|
|
LoadingShimmer,
|
|
BalanceBox,
|
|
ReloadPrompt,
|
|
NavBar,
|
|
OnboardWarning,
|
|
CombinedActivity,
|
|
BetaWarningModal,
|
|
PendingNwc,
|
|
DecryptDialog,
|
|
LoadingIndicator
|
|
} from "~/components";
|
|
import { A } from "solid-start";
|
|
import { useMegaStore } from "~/state/megaStore";
|
|
import { Match, Show, Suspense, Switch } from "solid-js";
|
|
import settings from "~/assets/icons/settings.svg";
|
|
import pixelLogo from "~/assets/mutiny-pixel-logo.png";
|
|
import plusLogo from "~/assets/mutiny-plus-logo.png";
|
|
import { FeedbackLink } from "~/routes/Feedback";
|
|
import { useI18n } from "~/i18n/context";
|
|
|
|
export function App() {
|
|
const i18n = useI18n();
|
|
const [state, _actions] = useMegaStore();
|
|
|
|
return (
|
|
<SafeArea>
|
|
<DefaultMain>
|
|
<LoadingIndicator />
|
|
<header class="w-full flex justify-between items-center mt-4 mb-2">
|
|
<div class="flex items-center gap-2">
|
|
<Switch>
|
|
<Match when={state.mutiny_plus}>
|
|
<img
|
|
id="mutiny-logo"
|
|
src={plusLogo}
|
|
class="h-[25px] w-[86px]"
|
|
alt="Mutiny Plus logo"
|
|
/>
|
|
</Match>
|
|
<Match when={true}>
|
|
<img
|
|
id="mutiny-logo"
|
|
src={pixelLogo}
|
|
class="h-[25px] w-[75px]"
|
|
alt="Mutiny logo"
|
|
/>
|
|
</Match>
|
|
</Switch>
|
|
<Show
|
|
when={
|
|
!state.wallet_loading &&
|
|
state.mutiny_wallet?.get_network() !== "bitcoin"
|
|
}
|
|
>
|
|
<div class="box-border px-2 py-1 -my-1 text-white-400 bg-neutral-800 rounded text-xs uppercase w-fit">
|
|
{state.mutiny_wallet?.get_network()}
|
|
</div>
|
|
</Show>
|
|
</div>
|
|
<A
|
|
class="md:hidden p-2 hover:bg-white/5 rounded-lg active:bg-m-blue"
|
|
href="/settings"
|
|
>
|
|
<img src={settings} alt="Settings" class="h-6 w-6" />
|
|
</A>
|
|
</header>
|
|
<Show when={!state.wallet_loading}>
|
|
<OnboardWarning />
|
|
<ReloadPrompt />
|
|
</Show>
|
|
<BalanceBox loading={state.wallet_loading} />
|
|
<Suspense>
|
|
<Show when={!state.wallet_loading && !state.safe_mode}>
|
|
<PendingNwc />
|
|
</Show>
|
|
</Suspense>
|
|
<Card title={i18n.t("activity.title")}>
|
|
<div class="p-1" />
|
|
<VStack>
|
|
<Suspense>
|
|
<Show
|
|
when={!state.wallet_loading}
|
|
fallback={<LoadingShimmer />}
|
|
>
|
|
<CombinedActivity limit={3} />
|
|
</Show>
|
|
</Suspense>
|
|
</VStack>
|
|
</Card>
|
|
<div class="self-center mt-4">
|
|
<FeedbackLink />
|
|
</div>
|
|
</DefaultMain>
|
|
<DecryptDialog />
|
|
<BetaWarningModal />
|
|
<NavBar activeTab="home" />
|
|
</SafeArea>
|
|
);
|
|
}
|