Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
aff4ae0
configure branch for beta testing
outragedhuman Oct 15, 2022
769c9dd
point at testnet instead of mainnet
outragedhuman Oct 15, 2022
4ed5c9b
change hardcoded referer to BASEURL constant to fix cors when switchi…
outragedhuman Oct 15, 2022
e1b5aac
configure headers in netlify.toml
outragedhuman Oct 15, 2022
576a607
try headers file in addition to toml since toml isn't working
outragedhuman Oct 15, 2022
fd0fc15
Merge branch 'master' into betaTest
outragedhuman Oct 17, 2022
fa6c465
Merge branch 'master' into betaTest
outragedhuman Nov 29, 2022
969363e
add beta test readme doc
outragedhuman Nov 30, 2022
b7fcd47
Merge branch 'master' into betaTest
outragedhuman Nov 30, 2022
f665f22
Merge pull request #133 from Up-North-Coding/betaTest
outragedhuman Nov 30, 2022
5dba540
fix short seed login issue
outragedhuman Nov 30, 2022
4af87c6
fix send issue when account doesn't have a publicKey yet
outragedhuman Dec 1, 2022
b080b6b
re-add generators route which was left out due to bad merge
outragedhuman Dec 1, 2022
b27a3d2
re add blocks route which was left out due to bad merge
outragedhuman Dec 1, 2022
697f4dc
Merge pull request #146 from Up-North-Coding/betaStaging
outragedhuman Dec 1, 2022
e3ac246
fix addCommaSeparators() for values < 1
outragedhuman Dec 1, 2022
856d46a
update beta release notes and version
outragedhuman Dec 1, 2022
8745f17
fix block widget display precision and send widget send precision
outragedhuman Dec 1, 2022
012b417
update release-notes
outragedhuman Dec 1, 2022
ed1f707
Merge pull request #150 from Up-North-Coding/betaStaging
outragedhuman Dec 1, 2022
4512c1d
remove my accounts from gear/settings menu dropdown
outragedhuman Dec 3, 2022
5e4f8fd
add ability to send directly from addressBook component, closes #75
outragedhuman Dec 4, 2022
11568a1
update release notes
outragedhuman Dec 4, 2022
3b25027
display last block time in 24hr format, closes #151
outragedhuman Dec 4, 2022
dbe11c2
Merge pull request #154 from Up-North-Coding/dev/fixAddressBookSend
outragedhuman Dec 5, 2022
9aa9524
Merge branch 'betaStaging' into fix/24HrTimeDisplay
outragedhuman Dec 5, 2022
1f722c4
Merge pull request #155 from Up-North-Coding/fix/24HrTimeDisplay
outragedhuman Dec 5, 2022
abf86be
Merge branch 'betaStaging' into dev/removeMyAccountMenu
outragedhuman Dec 5, 2022
a7e49ae
Merge pull request #152 from Up-North-Coding/dev/removeMyAccountMenu
outragedhuman Dec 5, 2022
08f9a67
fix package.json version
outragedhuman Dec 5, 2022
dc0321e
update yarn lock
outragedhuman Dec 6, 2022
50fee20
Merge pull request #158 from Up-North-Coding/betaStaging
outragedhuman Dec 6, 2022
cde6c10
perform balance copy in NXT format not NQT
outragedhuman Jan 3, 2023
9db15ed
add icon to add button in addressbook
outragedhuman Jan 29, 2023
e15beab
update release notes & package.json
outragedhuman Jan 29, 2023
e083ba8
improve dex page text
outragedhuman Jan 29, 2023
6e0345b
fix asset quantity issue
outragedhuman Feb 7, 2023
66f3375
update release notes and package.json
outragedhuman Feb 7, 2023
a18b870
improve search box styling on DEX page
outragedhuman Feb 8, 2023
f49b19b
improve styling of asset details display area
outragedhuman Feb 8, 2023
05942b2
remove debug
outragedhuman Feb 8, 2023
4368d7b
update release notes and package.json
outragedhuman Feb 8, 2023
056e327
update release notes and package.json
outragedhuman Feb 8, 2023
c36588a
Merge pull request #181 from Up-North-Coding/dev/addressBookAddIcon
outragedhuman Feb 8, 2023
733c896
Merge branch 'betaStaging' into fix/dexText
outragedhuman Feb 8, 2023
4ceeb67
Merge pull request #182 from Up-North-Coding/fix/dexText
outragedhuman Feb 8, 2023
c1d0651
Merge branch 'betaStaging' into bugFix/circulatingQuantity
outragedhuman Feb 8, 2023
db3e3ce
Merge pull request #183 from Up-North-Coding/bugFix/circulatingQuantity
outragedhuman Feb 8, 2023
a27a7a2
Merge branch 'betaStaging' into dev/improvePadding
outragedhuman Feb 8, 2023
cc9d434
Merge pull request #184 from Up-North-Coding/dev/improvePadding
outragedhuman Feb 8, 2023
2825ec1
Merge branch 'betaStaging' into bugFix/balanceCopyValue
outragedhuman Feb 8, 2023
1c8115a
Merge pull request #185 from Up-North-Coding/bugFix/balanceCopyValue
outragedhuman Feb 8, 2023
b22f715
Merge pull request #186 from Up-North-Coding/betaStaging
outragedhuman Feb 8, 2023
b8cac32
add current page indicator to nav drawer
outragedhuman Feb 11, 2023
59f5820
remove unused footer component
outragedhuman Feb 11, 2023
93a8c97
JupTable sorting is now adjusted to work more naturally with some com…
vwalsh Feb 12, 2023
ca3b9fb
updated version and release notes
vwalsh Feb 12, 2023
30d6fbb
update JUPTable to take in placeholder string/component to display wh…
outragedhuman Feb 12, 2023
e5571cc
fixes issue #156
vwalsh Feb 12, 2023
c0e3c05
add some comments for clarity
outragedhuman Feb 14, 2023
ee314dd
Merge pull request #188 from Up-North-Coding/dev/currentPageIndicator
outragedhuman Feb 14, 2023
d5c296b
Merge branch 'betaStaging' into dev/juptable-sorting
outragedhuman Feb 14, 2023
86ce90a
Merge pull request #189 from Up-North-Coding/dev/juptable-sorting
outragedhuman Feb 14, 2023
8ef7613
Merge branch 'betaStaging' into dev/jupTableEmptyRowsDisplay
outragedhuman Feb 14, 2023
a27a896
Merge pull request #190 from Up-North-Coding/dev/jupTableEmptyRowsDis…
outragedhuman Feb 14, 2023
859d698
Merge branch 'betaStaging' into dev/buy-sell-buttons-issue-156
outragedhuman Feb 14, 2023
5598e49
Merge pull request #191 from Up-North-Coding/dev/buy-sell-buttons-iss…
outragedhuman Feb 14, 2023
fed84c3
Merge pull request #193 from Up-North-Coding/betaStaging
outragedhuman Feb 14, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 31 additions & 15 deletions RELEASE-NOTES.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,33 @@
# Release Notes

- vitejs server replaces CRA
- cypress + coverage reports now generating (see /coverage/lcov-report)
- code cleanup for new Eslint rules
- mobile styling of login page
- login page complete, with mobile styling and tests
- dashboard skeleton started
- add address book/my contacts
- send widget can prepare, sign, and lightly validate a tx
- calls to the JUP API now working
- tests now run in mobile and desktop sizes
- improved mobile login styling
- deduplicate seed words on generation
- add "auth" mechanism to prevent page browsing without login
- enhance test suites wrt viewport testing
- add basic transactions widget
## 0.0.1

- Initial Beta test release version. This will be incremented as beta is updated, and release notes will start from this point forward.

## 0.0.2

- Fix addCommaSeparators() so it can handle values < 1
- Fix blockWidget display precision and sendWidget sending precision

## 0.0.3

- Add ability to send JUP directly from the address book component
- Displays the last block time on the Generators page in 24hr time format instead of 12hr
- Remove My Accounts from gear menu

## 0.0.4

- Fix balance copy precision issue
- Improves styling of Dex page (search component & asset details)
- Adds loading indicator to search box on Dex page & Dex widget
- Fixes Dex search box not displaying results after valid search
- Fix asset precision/quantity issue by properly converting assets with different decimals params
- Improve text on DEX page when no Asset is selected
- Add icon and text to address book add button

## 0.0.5

- Fixed issue #156, buy/sell buttons are now full width
- Add ability to display placeholder row inside JUPTable component when no row data is available (no transactions, no assets, etc...)
- Upgrade JupTable sorting mechanisms; with room for extensions to more complex object types such as BigNumber and Date
- Adds current page indicator to navigation drawer
18 changes: 18 additions & 0 deletions cypress/suites/dashboard.suite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ import * as Constants from "support/utils/constants";
// [x] Clicking it again expands it
// [x] All internal navigation links should...navigate
// [x] All external navication links should...navigate
// [x] Currently selected nav element is highlighted as "selected", unselected should not have "selected"===true

export default {
name: __filename,
Expand Down Expand Up @@ -150,6 +151,18 @@ export default {
cy.get(".MuiTableRow-root").should("contain.text", Constants.validAddress2);
cy.get(".MuiTableRow-root").should("contain.text", Constants.validAddress3);
});

it("should allow sending from the address book", () => {
cy.get("button").contains("+").click();
addAddressToAddressbook(Constants.validAddress);

cy.get("button").contains("Send JUP").click();
cy.get('input[placeholder*="Enter Quantity"]').type("100");
cy.get("button").contains("Next").click();
cy.get('input[placeholder*="Enter Seed Phrase"]').type(testnetSeedPhrase);
cy.get("button").contains("Confirm & Send").click();
cy.get("#notistack-snackbar").should("contain.text", messageText.transaction.success);
});
});

describe("send widget", () => {
Expand Down Expand Up @@ -490,6 +503,11 @@ export default {
cy.get(".MuiDrawer-root > .MuiPaper-root").should("be.visible");
});

it("should display the selected navigation element properly", () => {
cy.get('[data-cy="nav-/dashboard"]').should("have.class", "Mui-selected");
cy.get('[data-cy="nav-/exchange"]').should("not.have.class", "Mui-selected");
});

it("dashboard navigation should work", () => {
// navigate away first
cy.get('[href="/portfolio"] > .MuiButtonBase-root').click();
Expand Down
6 changes: 5 additions & 1 deletion cypress/suites/login.suite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,12 +253,16 @@ export default {
});

/* eslint-disable-next-line mocha-cleanup/asserts-limit */
it("should generate a warning on short seed phrases", () => {
it("should generate a warning on short seed phrases and still login", () => {
expectClickExistingUserButton();
clickSeedPhraseLoginButton();

cy.get(".MuiAutocomplete-input").type(shortSecretPhrase);
cy.get("#notistack-snackbar").contains(messageText.validation.secretLengthWarning);

// finish login
cy.get("button").contains("Login").click();
expectToBeOnDashboard();
});

//
Expand Down
27 changes: 27 additions & 0 deletions docs/beta/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Jovian Beta Release Docs

This codebase has been in the works since April 2022. The original wireframes were sketched out by Sigwo on the Jupiter team in early March 2022, and Nathan Bowers from the Up North Coding team started exploring putting together a bid for the user interface at that time.

The bid was submitted March 22, 2022 and code writing began in early April after a short design and specification review phase internally at Up North Coding.

The project was written by Nathan Bowers as the Project Manager and Primary Software Developer, and Vance Walsh who subcontracted on some of the work as a Senior Software Engineer. The project currently consists of about `13,500` lines of code.

It is built using the following software tools:

- React (Primary Frontend Framework)
- Vite (React Builder/Bundler)
- Typescript
- Material UI (Components Library)
- Cypres (Automated Testing)

Up North Coding is thrilled to present the project to the public in this limited beta phase. We are sure there are going to be some kinks to work out as there are with any major software project, but we're excited about winning the Jupiter Hackathon to bring this wallet to life and we look forward to ironing out any kinks as the wallet moves closer to the production ready frontend wallet for the project moving forward.

## Feedback Reporting

Nathan Bowers (@outragedhuman) will be monitoring the beta Discord channel and will be absorbing feedback. The initial stage of the beta will occur on the Jupiter Testnet so no funds will be at risk. While we don't anticipate any loss-of-funds based on the testing we've done so far, it's important to take a sane release process and that involves starting on testnet.

Three types of feedback will be managed:

1. Bugs - If a user finds a bug they should report it in the Discord wallet beta channel. If the bug is already known the user will be informed. If it's a new bug we will add it to the Github issue list and prioritize fixing it.
1. UI Feedback - Any UI suggestions should be reported in the Discord wallet beta channel. We will consider each of these and write Github issues on them and prioritize.
1. Security - Security suggestions should be DM'd to @outragedhuman so we can responsibly evaluate them. This allows us time to fix them before disclosing them publicly.
5 changes: 5 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[[headers]]
# Define which paths this specific [[headers]] block will cover.
for = "/*"
[headers.values]
Access-Control-Allow-Origin = "*"
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "jupiter-wallet",
"version": "0.0.1",
"version": "0.0.5",
"private": true,
"scripts": {
"proxy": "node proxy/server.js",
Expand Down
2 changes: 1 addition & 1 deletion proxy/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ app.post("/nxt", async function (req, res) {
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
Referer: "https://nodes.jup.io/test",
Referer: BASEURL,
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.9",
Connection: "close",
Expand Down
2 changes: 2 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,10 @@ const App: React.FC = () => {
<Route path="/dashboard" element={<Private Component={Dashboard} />} />
<Route path="/transactions" element={<Private Component={Transactions} />} />
<Route path="/portfolio" element={<Private Component={Portfolio} />} />
<Route path="/blocks" element={<Private Component={Blocks} />} />
<Route path="/peers" element={<Private Component={Peers} />} />
<Route path="/exchange" element={<Private Component={DEX} />} />
<Route path="/generators" element={<Private Component={Generators} />} />
</Routes>
</MUIThemeProvider>
</Router>
Expand Down
2 changes: 2 additions & 0 deletions src/_headers
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/*
Access-Control-Allow-Origin: *
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@ import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
import JUPDialog from "components/JUPDialog";
import AssetActionsStack from "components/AssetActionsStack";
import JUPInput from "components/JUPInput";
import { LedaNFTName } from "utils/common/constants";
import { LedaNFTName, LongUnitPrecision } from "utils/common/constants";
import { messageText } from "utils/common/messages";
import { addCommaSeparators } from "utils/common/addCommaSeparators";
import useAssets from "hooks/useAssets";
import useAPIRouter from "hooks/useAPIRouter";
import { useSnackbar } from "notistack";
import { QNTtoNXT } from "utils/common/QNTtoNXT";
import { BigNumber } from "bignumber.js";

interface IPortfolioAssets {
name: string;
Expand Down Expand Up @@ -176,7 +177,7 @@ const CollapsingPortfolioTable: React.FC = () => {
return createData({
name: asset.assetDetails.name,
description: asset.assetDetails.description,
qtyOwned: addCommaSeparators(asset.quantityQNT),
qtyOwned: asset.quantityQNT,
assetActions: (
<AssetActionsStack
handleSendAsset={handleSendAsset}
Expand All @@ -189,7 +190,7 @@ const CollapsingPortfolioTable: React.FC = () => {
name: asset.assetDetails.name,
description: asset.assetDetails.description,
decimals: asset.assetDetails.decimals,
quantityQNT: `${asset.assetDetails.quantityQNT}`,
quantityQNT: asset.assetDetails.quantityQNT,
},
});
});
Expand Down Expand Up @@ -263,14 +264,14 @@ function createData({ name, description, qtyOwned, assetActions, assetDetails }:
return {
name,
description,
qtyOwned,
qtyOwned: QNTtoNXT(new BigNumber(qtyOwned), assetDetails.decimals, LongUnitPrecision),
assetActions,
assetDetails: [
{
name: assetDetails.name,
description: assetDetails.description,
decimals: assetDetails.decimals,
quantityQNT: addCommaSeparators(assetDetails.quantityQNT),
quantityQNT: assetDetails.quantityQNT,
},
],
};
Expand Down
65 changes: 35 additions & 30 deletions src/components/Drawer/Drawer.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { memo, useMemo } from "react";
import { Divider, Drawer, List, ListItem, ListItemIcon, ListItemText } from "@mui/material";
import { Divider, Drawer, List, ListItemButton, ListItemIcon, ListItemText } from "@mui/material";
import {
Dashboard as DashboardIcon, // alias to reduce confusion
Restore as TransactionsIcon,
Expand All @@ -19,6 +19,7 @@ import UserInfo from "./components/UserInfo";
import SLink from "components/SLink";
import WalletDetails from "components/WalletDetails";
import { JUPSidebarWidth } from "utils/common/constants";
import { useLocation } from "react-router-dom";

// Add items here to extend the navigation
const internalNavItems = [
Expand Down Expand Up @@ -87,34 +88,38 @@ const externalNavItems = [
},
];

const DrawerContents = (
<div>
<WalletDetails />
<UserInfo />
<Divider />
<List>
{internalNavItems.map((item) => (
<SLink href={item.url} key={item.text}>
<ListItem button>
<ListItemIcon>{item.icon}</ListItemIcon>
<ListItemText primary={item.text} />
</ListItem>
</SLink>
))}
</List>
<Divider />
<List>
{externalNavItems.map((item) => (
<SLink external href={item.url} key={item.text}>
<ListItem button>
<ListItemIcon>{item.icon}</ListItemIcon>
<ListItemText primary={item.text} />
</ListItem>
</SLink>
))}
</List>
</div>
);
const DrawerContents = () => {
const path = useLocation();

return (
<div>
<WalletDetails />
<UserInfo />
<Divider />
<List>
{internalNavItems.map((item) => (
<SLink href={item.url} key={item.text}>
<ListItemButton selected={path.pathname === item.url} data-cy={`nav-${item.url}`}>
<ListItemIcon>{item.icon}</ListItemIcon>
<ListItemText primary={item.text} />
</ListItemButton>
</SLink>
))}
</List>
<Divider />
<List>
{externalNavItems.map((item) => (
<SLink external href={item.url} key={item.text}>
<ListItemButton>
<ListItemIcon>{item.icon}</ListItemIcon>
<ListItemText primary={item.text} />
</ListItemButton>
</SLink>
))}
</List>
</div>
);
};

interface INavDrawerProps {
isSidebarExpanded: boolean;
Expand All @@ -131,7 +136,7 @@ const NavDrawer: React.FC<INavDrawerProps> = ({ isSidebarExpanded }) => {
"& .MuiDrawer-paper": { boxSizing: "border-box", width: isSidebarExpanded ? JUPSidebarWidth : "0px", overflowX: "hidden" },
}}
>
{DrawerContents}
<DrawerContents />
</Drawer>
);
}, [isSidebarExpanded]);
Expand Down
6 changes: 5 additions & 1 deletion src/components/Drawer/components/UserInfo/UserInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,11 @@ const UserInfo: React.FC = () => {
{DynamicChip}
{/* TODO: Add tooltip explaining what an accountName is for */}
<AccountNameChip size="small" label={accountName} onClick={() => displayAccountInfo()} />
<AccountBalanceChip size="small" label={NQTtoNXT(new BigNumber(balance), LongUnitPrecision) + " JUP"} onClick={() => handleCopy(balance)} />
<AccountBalanceChip
size="small"
label={NQTtoNXT(new BigNumber(balance), LongUnitPrecision) + " JUP"}
onClick={() => handleCopy(NQTtoNXT(new BigNumber(balance), LongUnitPrecision))}
/>
</>
);
};
Expand Down
32 changes: 0 additions & 32 deletions src/components/Footer/Footer.tsx

This file was deleted.

31 changes: 0 additions & 31 deletions src/components/Footer/components/Nav.tsx

This file was deleted.

1 change: 0 additions & 1 deletion src/components/Footer/index.ts

This file was deleted.

Loading