Skip to content

Commit

Permalink
Merge pull request #78 from gandlafbtc/refactor-token-to-proof
Browse files Browse the repository at this point in the history
Refactor old code (token to proof)
  • Loading branch information
gandlafbtc committed Apr 19, 2023
2 parents 5b5edb0 + f2182b5 commit b56ece8
Show file tree
Hide file tree
Showing 24 changed files with 57 additions and 122 deletions.
4 changes: 2 additions & 2 deletions src/comp/elements/CoinSelection.svelte
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<script lang="ts">
import type { Mint } from '../../model/mint';
import type { Token } from '../../model/token';
import AvailableTokensTable from '../tokens/AvailableTokensTable.svelte';
import { getAmountForTokenSet } from '../util/walletUtils';
import type { Proof } from "@cashu/cashu-ts";
export let mint: Mint;
export let amount: number = 0;
export let selectedTokens: Token[] = [];
export let selectedTokens: Proof[] = [];
export let isCoinSelection = false;
</script>
Expand Down
4 changes: 2 additions & 2 deletions src/comp/elements/ScanLN.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
let qrScanner: Html5QrcodeScanner;
function onScanSuccess(decodedText, decodedResult) {
function onScanSuccess(decodedText:string, decodedResult: any) {
// handle the scanned code as you like, for example:
scannedlnInvoice = decodedText;
if (browser) {
Expand All @@ -17,7 +17,7 @@
active = 'melt';
}
function onScanFailure(error) {}
function onScanFailure(error: any) {}
onDestroy(() => {
{
if (browser) {
Expand Down
4 changes: 2 additions & 2 deletions src/comp/elements/ScanNpub.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
let qrScanner: Html5QrcodeScanner;
function onScanSuccess(decodedText, decodedResult) {
function onScanSuccess(decodedText: string, decodedResult:any) {
// handle the scanned code as you like, for example:
scannedNpub = decodedText;
if (browser) {
Expand All @@ -17,7 +17,7 @@
element?.click();
}
}
function onScanFailure(error) {}
function onScanFailure(error: any) {}
onDestroy(() => {
{
Expand Down
4 changes: 2 additions & 2 deletions src/comp/history/HistoryRow.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import type { HistoryData } from 'src/model/data/HistoryData';
import type { HistoryItem } from 'src/model/historyItem';
import type { HistoryData } from '../../model/data/HistoryData';
import type { HistoryItem } from '../../model/historyItem';
import HistoryIcon from './HistoryIcon.svelte';
export let historyItem: HistoryItem<HistoryData>;
Expand Down
56 changes: 1 addition & 55 deletions src/comp/mint/Mint.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@
import { onMount } from 'svelte';
import { page } from '$app/stores';
let mintURL = '';
let mintAPIRoot = '';
let mintPort = '';
let showAdvanced = false;
let isLoading = false;
let isAddMintPing = false;
Expand All @@ -40,8 +37,7 @@
const addMint = async () => {
isAddMintPing = false;
console.log(mintURL, mintPort, mintAPIRoot);
const mint = new CashuMint(mintURL, mintAPIRoot, mintPort);
const mint = new CashuMint(mintURL);
try {
if ($mints.filter((m) => m.mintURL === mint.mintUrl).length > 0) {
toast('warning', 'this mint has already been added.', "Didn't add mint!");
Expand Down Expand Up @@ -76,9 +72,6 @@
isLoading = false;
}
};
const toggleAdvanced = () => {
showAdvanced = !showAdvanced;
};
</script>

{#if active === 'base'}
Expand Down Expand Up @@ -166,53 +159,6 @@
class="input w-full input-primary col-span-4"
/>
</div>
<!-- svelte-ignore a11y-click-events-have-key-events -->
<div class="divider col-span-5 cursor-pointer" on:click={toggleAdvanced}>
{#if showAdvanced}
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-6 h-6"
>
<path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
</svg>
{:else}
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-6 h-6"
>
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5" />
</svg>
{/if}
Advanced
</div>
{#if showAdvanced}
<div class="col-span-5 grid grid-cols-5 items-center">
<label for="mint-port-input"> Mint Port: </label>
<input
id="mint-port-input"
type="number"
bind:value={mintPort}
class="input w-full input-primary col-span-4"
/>
</div>
<div class="col-span-5 grid grid-cols-5">
<label for="mint-api-input w-32"> Mint API root: </label>
<input
id="mint-api-input"
type="text"
bind:value={mintAPIRoot}
class="input w-full input-primary col-span-4"
/>
</div>
{/if}
{#if isLoading}
<LoadingCenter />
{:else}
Expand Down
9 changes: 3 additions & 6 deletions src/comp/mint/MintRow.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
import { toast } from '../../stores/toasts';
import { CashuMint } from '@cashu/cashu-ts';
import { browser } from '$app/environment';
import { page } from '$app/stores';
export let mintIndex: number;
export let mint: Mint;
export let activeMint;
Expand Down Expand Up @@ -57,11 +56,9 @@
};
const copyShareLink = () => {
const text = encodeURI($page.url.host + '/?mint=' + mint.mintURL);
const text = encodeURI('https://wallet.nutstash.app'+ '/?mint=' + mint.mintURL);
if (browser) {
if (window.clipboardData && window.clipboardData.setData) {
return window.clipboardData.setData('Text', text);
} else if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
var textarea = document.createElement('textarea');
textarea.textContent = text;
textarea.style.position = 'fixed';
Expand Down
6 changes: 3 additions & 3 deletions src/comp/mint/Minting.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
import { browser } from '$app/environment';
import { toast } from '../../stores/toasts';
import { token } from '../../stores/tokens';
import type { Token } from '../../model/token';
import { history } from '../../stores/history';
import { HistoryItemType } from '../../model/historyItem';
import { getKeysetsOfTokens } from '../util/walletUtils';
import { mintRequests } from '../../stores/mintReqs';
import { onMount } from 'svelte';
import type { Proof } from "@cashu/cashu-ts";
export let mint: Mint;
export let active;
Expand Down Expand Up @@ -57,7 +57,7 @@
mintingHash = hash;
qrCode = pr;
mintRequests.update((state) => [
{ invoice: qrCode, mintUrl: mint.mintURL, isCompleted: false, paymentHash: mintingHash },
{ invoice: qrCode??'', mintUrl: mint.mintURL, isCompleted: false, paymentHash: mintingHash??'' },
...state
]);
await mintTokens();
Expand All @@ -72,7 +72,7 @@
try {
if (wallet && mintingHash) {
isPolling = true;
const tokens: Array<Token> = await wallet.requestTokens(mintAmount, mintingHash);
const tokens: Array<Proof> = await wallet.requestTokens(mintAmount, mintingHash);
console.log(tokens);
token.update((state) => [...state, ...tokens]);
Expand Down
4 changes: 2 additions & 2 deletions src/comp/plugin/NostrSocket.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
const getPubKey = async (): Promise<string> => {
return $useExternalNostrKey
? // @ts-expect-error
?
await window.nostr.getPublicKey()
: await Promise.resolve($nostrPubKey);
};
Expand Down Expand Up @@ -92,7 +92,7 @@
return;
}
const decodedMessage = $useExternalNostrKey
? // @ts-expect-error
?
await window.nostr.nip04.decrypt(event.pubkey, event.content)
: await nostrTools.nip04.decrypt($nostrPrivKey, event.pubkey, event.content);
Expand Down
5 changes: 4 additions & 1 deletion src/comp/plugin/StorageManager.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
//todo update stores without reloading window
if (browser) {
window.addEventListener('storage', (e) => {
if (!e.key ) {
return
}
console.log(`Key Changed: ${e.key}`);
console.log(`New Value: ${e.newValue}`);
window.localStorage.setItem(e.key, e.newValue);
window.localStorage.setItem(e.key, e.newValue??'');
window.location.reload();
});
}
Expand Down
7 changes: 3 additions & 4 deletions src/comp/tokens/AvailableTokensTable.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
import type { Mint } from '../../model/mint';
import { pendingTokens } from '../../stores/pendingtokens';
import TokenRow from './TokenRow.svelte';
import type { Token } from '../../model/token';
import type { Proof } from '@cashu/cashu-ts';
export let mint: Mint | undefined = undefined;
export let selectedTokens: Token[] = [];
export let selectedTokens: Proof[] = [];
$: selectedTokensBool = [];
Expand All @@ -15,7 +14,7 @@
$: page = 20;
$: tokenSelection = isPending ? $pendingTokens : $token;
$: tokenFromMint = mint
? tokenSelection.filter((t: Token) => mint?.keysets.includes(t.id))
? tokenSelection.filter((t: Proof) => mint?.keysets.includes(t.id))
: tokenSelection;
$: tokenSub = tokenFromMint.slice(0, page);
$: selectedTokens = tokenSub.filter((t, i) => selectedTokensBool[i]);
Expand Down
1 change: 0 additions & 1 deletion src/comp/tokens/InboxRow.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
getMintForToken,
validateMintKeys
} from '../util/walletUtils';
import type { Token } from '../../model/token';
import { token } from '../../stores/tokens';
import { toast } from '../../stores/toasts';
import { history } from '../../stores/history';
Expand Down
4 changes: 2 additions & 2 deletions src/comp/tokens/TokenRow.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script lang="ts">
import { CashuMint, CashuWallet, getEncodedToken } from '@cashu/cashu-ts';
import { mints } from '../../stores/mints';
import type { Token } from '../../model/token';
import type { Proof } from '@cashu/cashu-ts';
import { getMintForToken, getTokenSubset } from '../util/walletUtils';
import TokenIcon from './TokenIcon.svelte';
import { toast } from '../../stores/toasts';
Expand All @@ -13,7 +13,7 @@
export let mint: Mint | undefined;
export let isSelected = false;
export let token: Token;
export let token: Proof;
export let i: number;
Expand Down
21 changes: 11 additions & 10 deletions src/comp/util/walletUtils.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import type { Mint } from 'src/model/mint';
import type { Token } from 'src/model/token';
import type { Mint } from '../../../src/model/mint';
import type { Proof } from '@cashu/cashu-ts';


/**
* returns a subset of tokens, so that not all tokens are sent to mint for smaller amounts.
* @param amount
* @param tokens
* @returns
*/
const getTokensToSend = (amount: number, tokens: Array<Token>) => {
const getTokensToSend = (amount: number, tokens: Array<Proof>) => {
let tokenAmount = 0;
const tokenSubset: Array<Token> = tokens.filter((token) => {
const tokenSubset = tokens.filter((token) => {
if (tokenAmount < amount) {
tokenAmount += token.amount;
return true;
Expand All @@ -30,8 +31,8 @@ const validateMintKeys = (keys: object): boolean => {
if (allKeys.length < 1) {
return false;
}

allKeys.forEach((k) => {
//try parse int?
if (isNaN(k)) {
isValid = false;
}
Expand All @@ -55,7 +56,7 @@ const isPow2 = (number: number) => {
* @param tokens
* @returns
*/
const getTokensForMint = (mint: Mint, tokens: Array<Token>) => {
const getTokensForMint = (mint: Mint, tokens: Array<Proof>) => {
const tokenSubset = tokens.filter((token) => {
if (mint?.keysets.includes(token.id)) {
return true;
Expand All @@ -77,11 +78,11 @@ const isValidToken = (obj: any) => {
* @param tokensToRemove
* @returns
*/
const getTokenSubset = (tokens: Array<Token>, tokensToRemove: Array<Token>) => {
const getTokenSubset = (tokens: Array<Proof>, tokensToRemove: Array<Proof>) => {
return tokens.filter((token) => !tokensToRemove.includes(token));
};

const getMintForToken = (token: Token, mints: Array<Mint>): Mint | undefined => {
const getMintForToken = (token: Proof, mints: Array<Mint>): Mint | undefined => {
let mint: Mint | undefined = undefined;
mints.forEach((m) => {
if (m.keysets.includes(token.id)) {
Expand All @@ -91,13 +92,13 @@ const getMintForToken = (token: Token, mints: Array<Mint>): Mint | undefined =>
return mint;
};

const getAmountForTokenSet = (tokens: Array<Token>): number => {
const getAmountForTokenSet = (tokens: Array<Proof>): number => {
return tokens.reduce((acc, t) => {
return acc + t.amount;
}, 0);
};

const getKeysetsOfTokens = (tokens: Array<Token>) => {
const getKeysetsOfTokens = (tokens: Array<Proof>) => {
return removeDuplicatesFromArray(
tokens.map((t) => {
return t.id;
Expand Down
5 changes: 2 additions & 3 deletions src/comp/wallet/Melting.svelte
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
<script lang="ts">
import { CashuMint, CashuWallet } from '@cashu/cashu-ts';
import { CashuMint, CashuWallet, Proof } from '@cashu/cashu-ts';
import LoadingCenter from '../LoadingCenter.svelte';
import { decode } from '@gandlaf21/bolt11-decode';
import { toast } from '../../stores/toasts';
import { token } from '../../stores/tokens';
import { mints } from '../../stores/mints';
import type { Token } from '../../model/token';
import {
getAmountForTokenSet,
getKeysetsOfTokens,
Expand Down Expand Up @@ -80,7 +79,7 @@
const cashuWallet: CashuWallet = new CashuWallet(mint.keys, cashuMint);
let tokensToSend: Array<Token> = [];
let tokensToSend: Array<Proof> = [];
if (isCoinSelection) {
tokensToSend = selectedTokens;
Expand Down
1 change: 0 additions & 1 deletion src/comp/wallet/Receiving.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import { toast } from '../../stores/toasts';
import { mints } from '../../stores/mints';
import LoadingCenter from '../LoadingCenter.svelte';
import type { Token } from '../../model/token';
import { token } from '../../stores/tokens';
import type { Mint } from '../../model/mint';
import { history } from '../../stores/history';
Expand Down

0 comments on commit b56ece8

Please sign in to comment.