Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2.1.0 #597

Merged
merged 113 commits into from
Jan 16, 2025
Merged
Changes from 27 commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
11b3bc5
feat: remove custom network button, move menu, add scroll ui
Nov 13, 2024
9810653
devop: add display networks
Nov 13, 2024
de5832f
ui: new tag ui
Nov 13, 2024
7fb5e27
Merge branch 'develop' of github.com:enkryptcom/enKrypt into feat/new…
gamalielhere Nov 15, 2024
889b12b
feat: create button bar w/o animation for now
gamalielhere Nov 15, 2024
abe0c00
feat: swap and pin button on the network
Nov 19, 2024
a7228b4
Merge branch 'feat/new-network-ui' of https://github.com/enkryptcom/e…
Nov 19, 2024
d73f01a
Merge branch 'develop' of github.com:enkryptcom/enKrypt into feat/new…
gamalielhere Nov 20, 2024
2bea8d7
devop: remove swap button
Nov 20, 2024
db7d245
Merge branch 'feat/new-network-ui' of github.com:enkryptcom/enKrypt i…
gamalielhere Nov 20, 2024
4aee9c3
devop: start renames
gamalielhere Nov 21, 2024
8b22f8b
devop: minor changes
gamalielhere Nov 22, 2024
1be1d3d
feat: networks tab ui, remove scroll components
Nov 22, 2024
9fa05ef
chore: move comment
Nov 22, 2024
96e4b12
feat: add pin logic
Nov 22, 2024
d20d196
feat: drag only pinned
Nov 22, 2024
a94eccd
feat: drag pinned
Nov 22, 2024
160240b
fix: weird div position
Nov 25, 2024
22fc0c4
Merge branch 'feat/new-network-ui' of github.com:enkryptcom/enKrypt i…
gamalielhere Nov 25, 2024
f4188aa
feat: new networks in tab and no networks message
Nov 25, 2024
5fb6876
feat: change filters and display, update on delete custom
gamalielhere Nov 26, 2024
4ad41fa
devop: update icons
gamalielhere Nov 26, 2024
32754fb
fix: toggle, update custom token logo
gamalielhere Nov 26, 2024
cc29277
Merge branch 'feat/new-network-ui' of github.com:enkryptcom/enKrypt i…
gamalielhere Nov 26, 2024
51e58f9
feat: update ui on add network
gamalielhere Nov 27, 2024
b7fd8e3
devop: remove extra styles
gamalielhere Nov 27, 2024
9a8e1c9
feat: sort button
Nov 27, 2024
3208784
feat: implement sticky scroll
Nov 28, 2024
955f274
feat: sort ui
Nov 28, 2024
74bcfab
devop: start using pinia for open with info
gamalielhere Dec 2, 2024
cf71d6e
Merge branch 'develop' into feat/new-network-ui
Dec 16, 2024
1fa9482
Merge branch 'feat/new-network-ui' into feat/custom-networks
Dec 16, 2024
6246409
devop: add litecoin support
kvhnuke Dec 17, 2024
6a8dcf4
feat: add asset headers
gamalielhere Dec 17, 2024
142d049
feat: optimize network search
olgakup Dec 17, 2024
d6bd060
devop: ui fixes
olgakup Dec 18, 2024
3a6e4e4
Merge pull request #570 from enkryptcom/feat/custom-networks
olgakup Dec 18, 2024
9c80f90
fix: remove etherscan activity for bsc
gamalielhere Dec 18, 2024
81a7674
devop: put back the gradient update
olgakup Dec 18, 2024
a063c24
devop: enable disable testnet and new tags
kvhnuke Dec 18, 2024
c695e72
Merge branch 'feat/new-network-ui' of github.com:enkryptcom/enKrypt i…
kvhnuke Dec 18, 2024
bf4f5cb
fix: default image when nft to send has no image
gamalielhere Dec 18, 2024
484f074
devop: update main list on enable/disbale test network, ui fixes
olgakup Dec 19, 2024
9edd119
fix: activity not showing in bnb
gamalielhere Dec 19, 2024
9002ec6
fix: show balance error
gamalielhere Dec 20, 2024
7bc6199
fix: swap decimals
NickKelly1 Dec 26, 2024
cb72c50
fix: hover states, show selected network when changed in other catego…
olgakup Dec 26, 2024
04b683a
devop: fix sort
olgakup Dec 26, 2024
807ac74
fix: item prevent clicking
olgakup Dec 26, 2024
0b31963
devop: hide sort menu for the upcoming release
olgakup Jan 2, 2025
584562d
feat: recent addresses
NickKelly1 Jan 2, 2025
dd01b2b
fix: hovered states getting out of sync
olgakup Jan 2, 2025
f508fe9
devop: adjust actions ui bg, spacing in tokens and add header
olgakup Jan 3, 2025
cdc8bb8
chore: clean code
olgakup Jan 3, 2025
a38ed36
chore: fix methid name
olgakup Jan 3, 2025
3f5e189
fix: long token names breaking ui
gamalielhere Jan 3, 2025
b650e64
chore: fix review comments
olgakup Jan 3, 2025
61d0db1
fix: clone the variable instead of mutating
olgakup Jan 3, 2025
785f75d
fix: actually call method
olgakup Jan 3, 2025
869d592
fix: remove unneccessary radius declaration
olgakup Jan 3, 2025
c8af63c
feat: add truncate filter, use everywhere necessary
gamalielhere Jan 3, 2025
5a31c56
fix: disable rango from ui on unsupported networks
NickKelly1 Jan 3, 2025
17c9ea9
devop: add accessibility, fix opacity-100
olgakup Jan 3, 2025
b0c2789
fix: icon alignment
olgakup Jan 3, 2025
4727fb6
devop: replace hover states with css
olgakup Jan 3, 2025
5d84bc4
devop: add message when search custom network is empty
olgakup Jan 3, 2025
0bbab42
chore: update method name
olgakup Jan 3, 2025
5b36317
devop: cleanup scroll position
olgakup Jan 3, 2025
26c433b
feat: swap tag
olgakup Jan 6, 2025
40ba3d7
feat: add active network idon on top of identicon
olgakup Jan 6, 2025
6cfc7e3
feat: updates popup ui
olgakup Jan 8, 2025
690190d
devop: replace edit icon, add tooltips
olgakup Jan 8, 2025
20c1c9a
devop: change core action buttonui
olgakup Jan 9, 2025
539ee17
feat: show loader while custom networks get loaded
olgakup Jan 9, 2025
575094d
Merge branch 'develop' of github.com:enkryptcom/enKrypt into feat/new…
gamalielhere Jan 9, 2025
45d31a7
fix: import
olgakup Jan 9, 2025
b074cb3
fix: update app menu when network is added
olgakup Jan 9, 2025
a5ea132
Merge pull request #590 from enkryptcom/fix/disable-rango-from-ui-on-…
NickKelly1 Jan 9, 2025
48de0a5
Merge pull request #585 from enkryptcom/fix/swap-decimals
NickKelly1 Jan 9, 2025
c630149
Merge pull request #587 from enkryptcom/feat/recent-addresses
NickKelly1 Jan 9, 2025
af6cf49
fix: typo
olgakup Jan 9, 2025
99e5f3e
devop: update bottom buttom opacity
olgakup Jan 9, 2025
555c2b7
devop: update default network order
olgakup Jan 9, 2025
839f0e4
devop: create event tracking
gamalielhere Jan 9, 2025
82e7958
Merge pull request #577 from enkryptcom/feat/add-24hr-ticker
gamalielhere Jan 9, 2025
7282e76
Merge pull request #579 from enkryptcom/fix/bnb-activity
gamalielhere Jan 9, 2025
3564783
Merge pull request #580 from enkryptcom/fix/default-nft-image
gamalielhere Jan 9, 2025
653361b
Merge pull request #581 from enkryptcom/fix/sending-nft-fee-calc
gamalielhere Jan 9, 2025
5deedd9
Merge pull request #589 from enkryptcom/fix/long-token-names
gamalielhere Jan 9, 2025
ab6e97b
fix: conflicts
gamalielhere Jan 9, 2025
70e11f2
devop: merge with develop, upate asset icon
olgakup Jan 9, 2025
8ca8cf0
Merge pull request #554 from enkryptcom/feat/new-network-ui
olgakup Jan 9, 2025
ea58766
devop: merge with develop
olgakup Jan 9, 2025
eea40d1
devop: add amplitude events for new network ui
gamalielhere Jan 10, 2025
4ae43e8
fix: conflicts
gamalielhere Jan 10, 2025
f7b54ad
devop: use enum
gamalielhere Jan 10, 2025
f12fab7
chore: remove unused import
gamalielhere Jan 10, 2025
f5654c3
chore: rename trackNetworkChange function
gamalielhere Jan 10, 2025
079ee41
feat: finished updates ui
olgakup Jan 10, 2025
cf0c453
devop: add amplitude
olgakup Jan 11, 2025
9e281eb
Merge pull request #596 from enkryptcom/devop/amplitude-for-new-netwo…
gamalielhere Jan 13, 2025
4bbff4d
devop: fix comments
olgakup Jan 13, 2025
4cdb0b9
fix: padding in settings drop down for update button
olgakup Jan 13, 2025
6889a49
devop: update version
olgakup Jan 13, 2025
7a787d2
fix: updates not showing on first init
olgakup Jan 13, 2025
6ef4efc
devop: merge with develop
olgakup Jan 13, 2025
295c15a
Merge pull request #595 from enkryptcom/feat/new-update-ui
olgakup Jan 14, 2025
bc27a72
Merge branch 'develop' into feat/ltc-api-support
olgakup Jan 14, 2025
e881c03
Merge pull request #593 from enkryptcom/feat/ltc-api-support
olgakup Jan 14, 2025
553ce28
fix: copy
olgakup Jan 14, 2025
2404762
Merge pull request #598 from enkryptcom/fix/copy
olgakup Jan 14, 2025
b08d77e
devop: set correct version
kvhnuke Jan 16, 2025
422eda8
Merge pull request #600 from enkryptcom/devop/set-release-version-21
kvhnuke Jan 16, 2025
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
41 changes: 41 additions & 0 deletions packages/extension/src/libs/recently-sent-addresses/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { InternalStorageNamespace } from "@/types/provider";
import BrowserStorage from "../common/browser-storage";
import { IState, } from "./types";
import { NetworkNames } from "@enkryptcom/types";
import { BaseNetwork } from "@/types/base-network";

class RecentlySentAddressesState {
#storage: BrowserStorage

constructor() {
this.#storage = new BrowserStorage(
InternalStorageNamespace.recentlySentAddresses,
);
}

async addRecentlySentAddress(
network: Pick<BaseNetwork, 'name' | 'displayAddress'>,
address: string,
): Promise<void> {
const key = network.name
const state: IState | undefined = await this.#storage.get(key)
const newState: IState = {
...state,
addresses: Array.from(new Set([
network.displayAddress(address),
...(state?.addresses ?? []),
])).slice(0, 5),
}
await this.#storage.set(key, newState)
}

async getRecentlySentAddresses(networkName: NetworkNames): Promise<string[]> {
const key = networkName
const out: IState | undefined = await this.#storage.get(key)
if (!out) return []
return out.addresses
}
}

export default RecentlySentAddressesState

3 changes: 3 additions & 0 deletions packages/extension/src/libs/recently-sent-addresses/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export type IState = {
addresses: string[]
}
3 changes: 2 additions & 1 deletion packages/extension/src/libs/utils/networks.ts
Original file line number Diff line number Diff line change
@@ -75,12 +75,13 @@ const DEFAULT_SOLANA_NETWORK = Solana;
const POPULAR_NAMES = [
NetworkNames.Bitcoin,
NetworkNames.Ethereum,
NetworkNames.Solana,
NetworkNames.Matic,
NetworkNames.Polkadot,
NetworkNames.Binance,
NetworkNames.Rootstock,
NetworkNames.Optimism,
NetworkNames.Kadena,
NetworkNames.Arbitrum,
];
export {
getAllNetworks,
Original file line number Diff line number Diff line change
@@ -169,6 +169,7 @@ import { getTxInfo as getBTCTxInfo } from '@/providers/bitcoin/libs/utils';
import { NFTItem, NFTItemWithCollectionName, NFTType } from '@/types/nft';
import { trackSendEvents } from '@/libs/metrics';
import { SendEventType } from '@/libs/metrics/types';
import RecentlySentAddressesState from '@/libs/recently-sent-addresses';

const props = defineProps({
network: {
@@ -428,7 +429,14 @@ const selectNFT = (item: NFTItemWithCollectionName) => {
isOpenSelectNft.value = false;
};

const recentlySentAddresses = new RecentlySentAddressesState();

const sendAction = async () => {
await recentlySentAddresses.addRecentlySentAddress(
props.network,
addressTo.value,
);

const keyring = new PublicKeyRing();
const fromAccountInfo = await keyring.getAccount(addressFrom.value);
const currentFee = toBN(
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { NetworkNames } from '@enkryptcom/types';

const newNetworks = [NetworkNames.Bitrock, NetworkNames.Fraxtal];
const newSwaps: NetworkNames[] = [NetworkNames.Dogecoin];
const newSwaps: NetworkNames[] = [];

export { newNetworks, newSwaps };
Original file line number Diff line number Diff line change
@@ -1,22 +1,14 @@
<template>
<a class="nft-select-list__token" @click="$emit('selectNft', item)">
<div class="nft-select-list__token-info">
<img :src="item.image" />
<img :src="item.image" @error="imageLoadError" />

<div class="nft-select-list__token-info-name">
<h4>
{{
item.name.length > 40
? item.name.substring(0, 40) + '...'
: item.name
}}
{{ $filters.truncate(item.name, 25) }}
</h4>
<p>
{{
item.collectionName.length > 50
? item.collectionName.substring(0, 50) + '...'
: item.collectionName
}}
{{ $filters.truncate(item.collectionName, 50) }}
</p>
</div>
</div>
@@ -26,6 +18,7 @@
<script setup lang="ts">
import { PropType } from 'vue';
import { NFTItemWithCollectionName } from '@/types/nft';
import { imageLoadError } from '@/ui/action/utils/misc';

defineEmits<{
(e: 'selectNft', data: NFTItemWithCollectionName): void;
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
<img :src="network.identicon(network.displayAddress(account.address))" />

<div class="send-address-item__name">
<h4>{{ account.name }}</h4>
<h4 v-if="account.name != null">{{ account.name }}</h4>
<p>
{{
$filters.replaceWithEllipsis(
@@ -32,13 +32,17 @@ import { EnkryptAccount } from '@enkryptcom/types';
const emit = defineEmits<{
(e: 'selected:account', address: string): void;
}>();

defineProps({
network: {
type: Object as PropType<BaseNetwork>,
default: () => ({}),
},
account: {
type: Object as PropType<EnkryptAccount>,
type: Object as PropType<{
name?: string;
address: string;
}>,
default: () => {
return {};
},
Original file line number Diff line number Diff line change
@@ -9,7 +9,10 @@
class="send-contacts-list__scroll-area"
:settings="scrollSettings({ suppressScrollX: true })"
>
<div v-if="!isMyAddress" class="send-contacts-list__block">
<div
v-if="recentlySentAddresses && !isMyAddress"
class="send-contacts-list__block"
>
<div class="send-contacts-list__buttons">
<base-button title="Send to my address" :click="sendToMyAddress" />

@@ -20,15 +23,43 @@
<paste-icon /> Paste
</a>
</div>
<h3>Recent</h3>
<template v-if="recentlySentAddresses.length">
<h3>Recent</h3>
<div class="send-contacts-list__list">
<send-address-item
v-for="(recentAddress, index) in recentlySentAddresses"
:key="index"
:account="{
address: recentAddress,
name: accountInfo.activeAccounts.find(
account =>
network.displayAddress(account.address) ===
network.displayAddress(recentAddress),
)?.name,
}"
:network="network"
v-bind="$attrs"
:is-checked="
!!address &&
network.displayAddress(address) ===
network.displayAddress(recentAddress)
"
/>
</div>
</template>
<h3>My accounts</h3>
<div class="send-contacts-list__list">
<send-address-item
v-for="(account, index) in accountInfo.activeAccounts"
:key="index"
:account="account"
:network="network"
v-bind="$attrs"
:is-checked="address == account.address"
:is-checked="
!!address &&
network.displayAddress(address) ===
network.displayAddress(account.address)
"
/>
</div>
</div>
@@ -39,15 +70,18 @@
</a>
<h4>My accounts</h4>
</div>

<div class="send-contacts-list__list">
<send-address-item
v-for="(account, index) in accountInfo.activeAccounts"
:key="index"
:account="account"
:network="network"
v-bind="$attrs"
:is-checked="address == account.address"
:is-checked="
!!address &&
network.displayAddress(address) ===
network.displayAddress(account.address)
"
/>
</div>
</div>
@@ -57,7 +91,7 @@
</template>

<script setup lang="ts">
import { PropType, ref } from 'vue';
import { onMounted, PropType, ref } from 'vue';
import SendAddressItem from './send-address-item.vue';
import CustomScrollbar from '@action/components/custom-scrollbar/index.vue';
import BaseButton from '@action/components/base-button/index.vue';
@@ -66,6 +100,7 @@ import scrollSettings from '@/libs/utils/scroll-settings';
import { BaseNetwork } from '@/types/base-network';
import PasteIcon from '@action/icons/actions/paste.vue';
import ArrowBack from '@action/icons/common/arrow-back.vue';
import RecentlySentAddressesState from '@/libs/recently-sent-addresses';

const emit = defineEmits<{
(e: 'update:pasteFromClipboard'): void;
@@ -74,7 +109,7 @@ const emit = defineEmits<{

const isMyAddress = ref(false);

defineProps({
const props = defineProps({
showAccounts: Boolean,
accountInfo: {
type: Object as PropType<AccountsHeaderData>,
@@ -90,6 +125,36 @@ defineProps({
},
});

const recentlySentAddressesState = new RecentlySentAddressesState();

const recentlySentAddresses = ref<null | string[]>(null);

onMounted(async function () {
let timedOut = false;
const timeout = setTimeout(function () {
console.error('Timed out getting recently sent addresses');
recentlySentAddresses.value = [];
timedOut = true;
}, 500);
try {
const addresses = await recentlySentAddressesState.getRecentlySentAddresses(
props.network.name,
);
if (!timedOut) {
recentlySentAddresses.value = Array.from(
new Set(
addresses.map(address => props.network.displayAddress(address)),
),
);
}
} catch (err) {
console.error('Error getting recently sent addresses', err);
recentlySentAddresses.value = [];
} finally {
clearTimeout(timeout);
}
});

const close = () => {
emit('close', false);
};
Original file line number Diff line number Diff line change
@@ -2,22 +2,14 @@
<div class="send-nft-select__wrap">
<a class="send-nft-select" @click="$emit('toggleSelect', item.id !== '')">
<div class="send-nft-select__image">
<img v-if="item.image !== ''" :src="item.image" alt="" />
<img :src="item.image" alt="" @error="imageLoadError" />
</div>
<div class="send-nft-select__info">
<h5>
{{
item.name.length > 25
? item.name.substring(0, 25) + '...'
: item.name
}}
{{ $filters.truncate(item.name, 25) }}
</h5>
<p>
{{
item.collectionName.length > 50
? item.collectionName.substring(0, 50) + '...'
: item.collectionName
}}
{{ $filters.truncate(item.collectionName, 50) }}
</p>
</div>

@@ -43,6 +35,7 @@
import { PropType } from 'vue';
import SwitchArrow from '@action/icons/header/switch_arrow.vue';
import { NFTItemWithCollectionName } from '@/types/nft';
import { imageLoadError } from '@/ui/action/utils/misc';

defineEmits<{
(e: 'toggleSelect', val: boolean): void;
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types';
import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network';
import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew';
import shNFTHandler from '@/libs/nft-handlers/simplehash';
import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler';

const arbNovaOptions: EvmNetworkOptions = {
name: NetworkNames.ArbitrumNova,
@@ -20,7 +21,7 @@ const arbNovaOptions: EvmNetworkOptions = {
coingeckoPlatform: CoingeckoPlatform.ArbitrumNova,
assetsInfoHandler,
NFTHandler: shNFTHandler,
activityHandler: () => Promise.resolve([]),
activityHandler: wrapActivityHandler(() => Promise.resolve([])),
};

const arb = new EvmNetwork(arbNovaOptions);
2 changes: 1 addition & 1 deletion packages/extension/src/providers/ethereum/networks/bsc.ts
Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ const bscOptions: EvmNetworkOptions = {
basePath: "m/44'/714'",
NFTHandler: shNFTHandler,
assetsInfoHandler,
activityHandler: wrapActivityHandler(EtherscanActivity),
activityHandler: wrapActivityHandler(() => Promise.resolve([])),
};

const bsc = new EvmNetwork(bscOptions);
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import icon from './icons/eth.svg';
import { NetworkNames } from '@enkryptcom/types';
import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network';
import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler';

const holeskyOptions: EvmNetworkOptions = {
name: NetworkNames.Holesky,
@@ -14,7 +15,7 @@ const holeskyOptions: EvmNetworkOptions = {
currencyNameLong: 'Holesky',
node: 'wss://nodes.mewapi.io/ws/holesky',
icon,
activityHandler: () => Promise.resolve([]),
activityHandler: wrapActivityHandler(() => Promise.resolve([])),
};

const holesky = new EvmNetwork(holeskyOptions);
3 changes: 2 additions & 1 deletion packages/extension/src/providers/ethereum/networks/op-bnb.ts
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types';
import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network';
import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew';
import shNFTHandler from '@/libs/nft-handlers/simplehash';
import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler';

const opBnbOptions: EvmNetworkOptions = {
name: NetworkNames.OpBNB,
@@ -20,7 +21,7 @@ const opBnbOptions: EvmNetworkOptions = {
coingeckoPlatform: CoingeckoPlatform.OpBNB,
assetsInfoHandler,
NFTHandler: shNFTHandler,
activityHandler: () => Promise.resolve([]),
activityHandler: wrapActivityHandler(() => Promise.resolve([])),
};

const op = new EvmNetwork(opBnbOptions);
Loading