Skip to content

Commit

Permalink
Merge branch 'getAlby:master' into lawallet-extension
Browse files Browse the repository at this point in the history
  • Loading branch information
agustinkassis authored Jan 8, 2024
2 parents 6c10616 + 6aef498 commit e34018a
Show file tree
Hide file tree
Showing 45 changed files with 312 additions and 208 deletions.
2 changes: 1 addition & 1 deletion src/app/components/ContentMessage/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
type Props = {
heading: string;
heading: string | React.ReactNode;
content: string;
};

Expand Down
2 changes: 1 addition & 1 deletion src/app/components/Modal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export default function Modal({
position == "center" && "items-center",
position == "top" && "items-start pt-20"
)}
className="rounded-lg shadow-xl bg-white dark:bg-surface-01dp w-full max-w-md overflow-x-hidden relative p-5 cursor-auto mx-5"
className="rounded-lg shadow-xl bg-white dark:bg-surface-01dp w-full max-w-md overflow-x-hidden relative p-5 cursor-auto mx-5 no-scrollbar"
style={{ content: { maxHeight: "80vh" } }}
>
{title && (
Expand Down
2 changes: 1 addition & 1 deletion src/app/components/TransactionsTable/TransactionModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export default function TransactionModal({
contentLabel={"Transactions"}
position="top"
>
<div className="p-3 flex flex-col gap-4 justify-center ">
<div className="p-3 flex flex-col gap-4 justify-center">
<div>
<div className="flex items-center justify-center">
{getTransactionType(transaction) == "outgoing" ? (
Expand Down
11 changes: 8 additions & 3 deletions src/app/router/Prompt/Prompt.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ import LiquidEnable from "~/app/screens/Enable/LiquidEnable";
import NostrEnable from "~/app/screens/Enable/NostrEnable";
import WebbtcEnable from "~/app/screens/Enable/WebbtcEnable";
import WeblnEnable from "~/app/screens/Enable/WeblnEnable";
import NostrConfirmEncryptOrDecrypt from "~/app/screens/Nostr/ConfirmEncryptOrDecrypt";
import NostrConfirmDecrypt from "~/app/screens/Nostr/ConfirmDecrypt";
import NostrConfirmEncrypt from "~/app/screens/Nostr/ConfirmEncrypt";
import type { NavigationState, OriginData } from "~/types";

// Parse out the parameters from the querystring.
Expand Down Expand Up @@ -124,8 +125,12 @@ function Prompt() {
element={<ConfirmSignPset />}
/>
<Route
path="public/nostr/confirmEncryptOrDecrypt"
element={<NostrConfirmEncryptOrDecrypt />}
path="public/nostr/confirmEncrypt"
element={<NostrConfirmEncrypt />}
/>
<Route
path="public/nostr/confirmDecrypt"
element={<NostrConfirmDecrypt />}
/>
<Route
path="public/nostr/confirmGetPublicKey"
Expand Down
18 changes: 9 additions & 9 deletions src/app/router/connectorRoutes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ import ConnectLnd from "@screens/connectors/ConnectLnd";
import ConnectLndHub from "@screens/connectors/ConnectLndHub";
import ConnectMyNode from "@screens/connectors/ConnectMyNode";
import ConnectRaspiBlitz from "@screens/connectors/ConnectRaspiBlitz";
import ConnectStart9 from "@screens/connectors/ConnectStart9";
import ConnectStartOS from "@screens/connectors/ConnectStartOS";
import ConnectUmbrel from "@screens/connectors/ConnectUmbrel";
import { Route } from "react-router-dom";
import i18n from "~/i18n/i18nConfig";

import ConnectVoltage from "~/app/screens/connectors/ConnectVoltage";
import ConnectNWC from "~/app/screens/connectors/ConnectNWC";
import ConnectVoltage from "~/app/screens/connectors/ConnectVoltage";
import ConnectCommando from "../screens/connectors/ConnectCommando";
import btcpay from "/static/assets/icons/btcpay.svg";
import citadel from "/static/assets/icons/citadel.png";
Expand All @@ -33,7 +33,7 @@ import lndhubGo from "/static/assets/icons/lndhub_go.png";
import mynode from "/static/assets/icons/mynode.png";
import nwc from "/static/assets/icons/nwc.svg";
import raspiblitz from "/static/assets/icons/raspiblitz.png";
import start9 from "/static/assets/icons/start9.png";
import startos from "/static/assets/icons/startos.png";
import umbrel from "/static/assets/icons/umbrel.png";
import voltage from "/static/assets/icons/voltage.png";

Expand Down Expand Up @@ -95,9 +95,9 @@ const connectorMap: { [key: string]: ConnectorRoute } = {
title: i18n.t("translation:choose_connector.lnd.title"),
logo: lnd,
},
"start9-lnd": {
"startos-lnd": {
path: "lnd",
element: <ConnectStart9 />,
element: <ConnectStartOS />,
title: i18n.t("translation:choose_connector.lnd.title"),
logo: lnd,
},
Expand Down Expand Up @@ -230,10 +230,10 @@ const distributionMap: { [key: string]: { logo: string; children: Route[] } } =
connectorMap["lnbits"],
],
},
start9: {
logo: start9,
startos: {
logo: startos,
children: [
connectorMap["start9-lnd"],
connectorMap["startos-lnd"],
connectorMap["lnc"],
connectorMap["commando"],
connectorMap["lnbits"],
Expand Down Expand Up @@ -265,7 +265,7 @@ function getConnectorRoutes(): ConnectorRoute[] {
getDistribution("citadel"),
getDistribution("umbrel"),
getDistribution("mynode"),
getDistribution("start9"),
getDistribution("startos"),
getDistribution("raspiblitz"),
connectorMap["nwc"],
connectorMap["lawallet"],
Expand Down
2 changes: 1 addition & 1 deletion src/app/screens/Accounts/GenerateMnemonic/new.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ function MnemonicExplanation() {
<img
src={`assets/images/master_key_${theme}.png`}
alt="Master Key"
className="max-w-[412px] mx-auto"
className="max-w-[412px] mx-auto w-full"
/>
<MnemonicDescription />
</ContentBox>
Expand Down
112 changes: 112 additions & 0 deletions src/app/screens/Nostr/ConfirmDecrypt.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { CheckIcon } from "@bitcoin-design/bitcoin-icons-react/filled";
import ConfirmOrCancel from "@components/ConfirmOrCancel";
import Container from "@components/Container";
import PublisherCard from "@components/PublisherCard";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import ScreenHeader from "~/app/components/ScreenHeader";
import Checkbox from "~/app/components/form/Checkbox";
import { useNavigationState } from "~/app/hooks/useNavigationState";
import { USER_REJECTED_ERROR } from "~/common/constants";
import msg from "~/common/lib/msg";
import { OriginData } from "~/types";

function NostrConfirmDecrypt() {
const { t } = useTranslation("translation", {
keyPrefix: "nostr",
});
const { t: tPermissions } = useTranslation("permissions");
const { t: tCommon } = useTranslation("common");
const navState = useNavigationState();
const origin = navState.origin as OriginData;

const [loading, setLoading] = useState(false);

const [rememberPermission, setRememberPermission] = useState(true);

function confirm() {
setLoading(true);
msg.reply({
confirm: true,
rememberPermission,
});
setLoading(false);
}

function reject(event: React.MouseEvent<HTMLAnchorElement>) {
event.preventDefault();
msg.error(USER_REJECTED_ERROR);
}

async function block(event: React.MouseEvent<HTMLAnchorElement>) {
event.preventDefault();
await msg.request("addBlocklist", {
domain: origin.domain,
host: origin.host,
});
alert(`Added ${origin.host} to the blocklist, please reload the website`);
msg.error(USER_REJECTED_ERROR);
}

function handleSubmit(event: React.FormEvent<HTMLFormElement>) {
event.preventDefault();
confirm();
}

return (
<div className="h-full flex flex-col overflow-y-auto no-scrollbar">
<ScreenHeader title={t("title")} />
<form onSubmit={handleSubmit} className="h-full">
<Container justifyBetween maxWidth="sm">
<PublisherCard
title={origin.name}
image={origin.icon}
url={origin.host}
isSmall={false}
/>
<div className="dark:text-white pt-6 mb-4">
<p className="mb-2">{t("allow", { host: origin.host })}</p>
<p className="dark:text-white">
<CheckIcon className="w-5 h-5 mr-2 inline" />
{tPermissions("nostr.nip04decrypt")}
</p>
</div>

<div className="text-center flex flex-col">
<div className="flex items-center mb-4">
<Checkbox
id="remember_permission"
name="remember_permission"
checked={rememberPermission}
onChange={(event) => {
setRememberPermission(event.target.checked);
}}
/>
<label
htmlFor="remember_permission"
className="cursor-pointer ml-2 block text-sm text-gray-900 font-medium dark:text-white"
>
{tCommon("actions.remember")}
</label>
</div>
<ConfirmOrCancel
disabled={loading}
loading={loading}
label={tCommon("actions.confirm")}
onCancel={reject}
/>
<a
className="mt-4 underline text-sm text-gray-400 overflow-hidden text-ellipsis whitespace-nowrap"
href="#"
onClick={block}
>
{t("block_and_ignore", { host: origin.host })}
</a>
</div>
</Container>
</form>
</div>
);
}

export default NostrConfirmDecrypt;
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ import { USER_REJECTED_ERROR } from "~/common/constants";
import msg from "~/common/lib/msg";
import { OriginData } from "~/types";

function NostrConfirmEncryptOrDecrypt() {
function NostrConfirmEncrypt() {
const { t } = useTranslation("translation", {
keyPrefix: "nostr",
});
const { t: tCommon } = useTranslation("common");
const navState = useNavigationState();
const origin = navState.origin as OriginData;
const action = navState.args?.encryptOrDecrypt?.action;
const peer = navState.args?.encryptOrDecrypt?.peer;
const message = navState.args?.encryptOrDecrypt?.message;

const recipientNpub = navState.args?.encrypt.recipientNpub;
const message = navState.args?.encrypt.message;

const [loading, setLoading] = useState(false);
const [showDetails, setShowDetails] = useState(false);
Expand Down Expand Up @@ -75,12 +75,9 @@ function NostrConfirmEncryptOrDecrypt() {
/>
{message && (
<ContentMessage
heading={t(
action == "encrypt" ? "allow_encrypt" : "allow_decrypt",
{
host: origin.host,
}
)}
heading={t("allow_encrypt", {
host: origin.host,
})}
content={message}
/>
)}
Expand All @@ -91,7 +88,7 @@ function NostrConfirmEncryptOrDecrypt() {
</div>
{showDetails && (
<div className="whitespace-pre-wrap break-words p-2 mb-4 shadow bg-white rounded-lg dark:bg-surface-02dp text-gray-500 dark:text-gray-400">
{t("peer")}: {peer}
{t("recipient")}: {recipientNpub}
</div>
)}
</div>
Expand Down Expand Up @@ -132,4 +129,4 @@ function NostrConfirmEncryptOrDecrypt() {
);
}

export default NostrConfirmEncryptOrDecrypt;
export default NostrConfirmEncrypt;
24 changes: 17 additions & 7 deletions src/app/screens/Nostr/ConfirmSignMessage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import PublisherCard from "@components/PublisherCard";
import SuccessMessage from "@components/SuccessMessage";
import Checkbox from "@components/form/Checkbox";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { Trans, useTranslation } from "react-i18next";
import { useNavigate } from "react-router-dom";
import Hyperlink from "~/app/components/Hyperlink";
import ScreenHeader from "~/app/components/ScreenHeader";
Expand Down Expand Up @@ -84,12 +84,22 @@ function ConfirmSignMessage() {
url={origin.host}
/>
<ContentMessage
heading={t("allow_sign_event", {
host: origin.host,
kind: t(`kinds.${event.kind}`, {
defaultValue: t("kinds.unknown", { kind: event.kind }),
}),
})}
heading={
<Trans
i18nKey="allow_sign_event"
t={t}
values={{
host: origin.host,
kind: t(`kinds.${event.kind}`, {
defaultValue: t("kinds.unknown", {
kind: event.kind,
}),
}),
}}
// eslint-disable-next-line react/jsx-key
components={[<i></i>]}
/>
}
content={event.content || ""}
/>
<div className="flex justify-center mb-4 gap-4">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@ import PasswordViewAdornment from "~/app/components/PasswordViewAdornment";
import toast from "~/app/components/Toast";
import msg from "~/common/lib/msg";
import utils from "~/common/lib/utils";
import logo from "/static/assets/icons/start9.png";
import logo from "/static/assets/icons/startos.png";

const initialFormData = {
url: "",
macaroon: "",
};

export default function ConnectStart9() {
export default function ConnectStartOS() {
const navigate = useNavigate();
const { t } = useTranslation("translation", {
keyPrefix: "choose_connector.start9",
keyPrefix: "choose_connector.startos",
});
const [formData, setFormData] = useState(initialFormData);
const [loading, setLoading] = useState(false);
Expand Down Expand Up @@ -59,7 +59,7 @@ export default function ConnectStart9() {
setLoading(true);
const { url, macaroon } = formData;
const account = {
name: "Start9",
name: "StartOS",
config: {
macaroon,
url,
Expand Down Expand Up @@ -112,7 +112,7 @@ export default function ConnectStart9() {
t={t}
components={[
// eslint-disable-next-line react/jsx-key
<a className="underline" href="https://start9.com/latest/"></a>,
<a className="underline" href="https://start9.com/"></a>,
]}
/>
</h1>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,7 @@ const decryptOrPrompt = async (message: MessageDecryptGet, sender: Sender) => {
rememberPermission: boolean;
}>({
...message,
action: "public/nostr/confirmEncryptOrDecrypt",
args: {
encryptOrDecrypt: {
action: "decrypt",
peer: message.args.peer,
message: message.args.ciphertext,
},
},
action: "public/nostr/confirmDecrypt",
});

// add permission to db only if user decided to always allow this request
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { USER_REJECTED_ERROR } from "~/common/constants";
import nostr from "~/common/lib/nostr";
import utils from "~/common/lib/utils";
import { getHostFromSender } from "~/common/utils/helpers";
import {
Expand Down Expand Up @@ -30,11 +31,10 @@ const encryptOrPrompt = async (message: MessageEncryptGet, sender: Sender) => {
rememberPermission: boolean;
}>({
...message,
action: "public/nostr/confirmEncryptOrDecrypt",
action: "public/nostr/confirmEncrypt",
args: {
encryptOrDecrypt: {
action: "encrypt",
peer: message.args.peer,
encrypt: {
recipientNpub: nostr.hexToNip19(message.args.peer, "npub"),
message: message.args.plaintext,
},
},
Expand Down
Loading

0 comments on commit e34018a

Please sign in to comment.