keeper-wallet / keeper-wallet-extension Goto Github PK
View Code? Open in Web Editor NEWYour entry point to the Waves blockchain and Waves-powered web services
Home Page: https://keeper-wallet.app
License: Other
Your entry point to the Waves blockchain and Waves-powered web services
Home Page: https://keeper-wallet.app
License: Other
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates are currently rate-limited. Click on a checkbox below to force their creation now.
qrcode
, @types/qrcode
)react-virtualized-auto-sizer
, @types/react-virtualized-auto-sizer
)react-window
, @types/react-window
)mocha
, @types/mocha
)@types/react
, @types/react-dom
, react
, react-dom
, react-refresh
)node
, @types/node
)These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
@babel/core
, @babel/preset-env
, @babel/preset-react
, @babel/preset-typescript
)These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
docker-compose.arm.yml
docker-compose.yml
.github/workflows/checks.yml
styfle/cancel-workflow-action 0.11.0
actions/checkout v3
actions/setup-node v3
.github/workflows/codeql.yml
actions/checkout v3
github/codeql-action v2
github/codeql-action v2
github/codeql-action v2
.github/workflows/merge.yml
styfle/cancel-workflow-action 0.11.0
Keeper-Wallet/jira-action v1
.github/workflows/prepare-release.yml
actions/checkout v3
actions/setup-node v3
getsentry/action-release v1
softprops/action-gh-release v1
.github/workflows/pull-migrations.yml
actions/checkout v3
.github/workflows/release.yml
styfle/cancel-workflow-action 0.11.0
Keeper-Wallet/jira-action v1
.github/workflows/size-limit.yml
styfle/cancel-workflow-action 0.11.0
actions/checkout v3
actions/setup-node v3
andresz1/size-limit-action v1
.github/workflows/tests.yml
styfle/cancel-workflow-action 0.11.0
actions/checkout v3
actions/setup-node v3
actions/upload-artifact v3
.github/workflows/update-tests.yml
styfle/cancel-workflow-action 0.11.0
actions/checkout v3
actions/setup-node v3
actions/checkout v3
actions/setup-node v3
actions/upload-artifact v3
package.json
@ethereumjs/util 8.0.3
@keeper-wallet/waves-crypto ^3.0.0
@popperjs/core ^2.11.0
@sentry/browser ^7.26.0
@waves-domains/client ^0.3.0
@waves/bignumber ^1.0.0
@waves/data-entities ^2.0.4
@waves/marshall ^0.14.0
@waves/parse-json-bignumber ^1.0.3
@waves/protobuf-serialization ^1.4.3
@waves/ts-types ^1.0.12
amazon-cognito-identity-js ^6.0.0
buffer ^4.9.2
clsx ^2.0.0
color-hash ^2.0.1
copy-to-clipboard ^3.3.1
debounce ^1.2.1
detect-browser ^5.3.0
events ^3.3.0
fast-equals ^5.0.0
i18next ^20.6.1
i18next-resources-to-backend ^1.0.0
identity-img ^2.0.0
long ^5.2.0
nanoid ^4.0.0
obs-store ^4.0.0
prismjs ^1.29.0
qrcode ^1.4.4
react ^18.2.0
react-dom ^18.2.0
react-i18next ^11.16.7
react-imask 6.4.2
react-popper ^2.2.5
react-redux ^8.0.0
react-transition-group ^4.4.2
react-virtualized-auto-sizer ^1.0.6
react-window ^1.8.6
redux ^4.1.1
stream-browserify ^3.0.0
tiny-invariant ^1.3.1
util ^0.12.5
wonka ^6.3.1
@babel/core ^7.18.9
@babel/preset-env ^7.18.9
@babel/preset-react ^7.18.6
@babel/preset-typescript ^7.18.6
@faergeek/eslint-config ^5.0.142
@faergeek/tiny-browser-hmr-webpack-plugin ^1.0.3
@keeper-wallet/swap-client ^0.2.0
@ledgerhq/hw-transport-webusb ^6.24.1
@pmmmwh/react-refresh-webpack-plugin ^0.5.9
@size-limit/file ^8.1.0
@testing-library/webdriverio ^3.2.0
@types/color-hash ^1.0.2
@types/mocha ^10.0.0
@types/node ^18.0.0
@types/prismjs ^1.26.0
@types/qrcode ^1.4.2
@types/react-dom ^18.0.0
@types/react-transition-group ^4.4.3
@types/react-virtualized-auto-sizer ^1.0.1
@types/react-window ^1.8.5
@types/redux-logger ^3.0.9
@types/w3c-web-usb ^1.0.5
@types/webextension-polyfill ^0.10.0
@waves/ledger ^4.0.0
babel-loader ^9.0.0
babel-plugin-prismjs ^2.1.0
browserslist ^4.21.2
copy-webpack-plugin ^11.0.0
css-loader ^6.7.1
css-minimizer-webpack-plugin ^5.0.0
del ^7.0.0
dotenv-flow ^3.2.0
esbuild ^0.19.0
esbuild-register ^3.4.1
eslint ^8.28.0
eslint-plugin-mocha ^10.1.0
expect-webdriverio 4.1.3
html-webpack-plugin ^5.5.0
lightningcss ^1.16.1
mini-css-extract-plugin ^2.6.1
mocha ^10.0.0
postcss ^8.4.19
postcss-loader ^7.0.1
postcss-normalize ^10.0.1
postcss-preset-env ^9.0.0
prettier ^3.0.0
react-refresh ^0.14.0
react-router-dom ^6.4.0
redux-logger ^3.0.6
redux-thunk ^2.4.1
rimraf ^5.0.0
size-limit ^8.1.0
source-map-loader ^4.0.1
stylelint ^15.0.0
stylelint-order ^6.0.0
stylus ^0.59.0
stylus-loader ^7.0.0
typescript ^4.7.4
wait-for-expect ^3.0.2
webdriverio ^7.25.1
webextension-polyfill ^0.10.0
webpack ^5.73.0
webpack-bundle-analyzer ^4.7.0
webpack-cli ^5.0.0
zip-a-folder ^2.0.0
@types/react ^18.0.0
.nvmrc
node 19
Было бы не плохо что бы была возможность добавлять другие токены на платформе wavesplatform и всеми ими управлять.
без этого приложение не полноценно.
Hi Waveskeeper Team,
As per the github and waves documentation instruction i try to to create signAndpublishOrder but it throws the following error. i don't know why am getting this error i tried to solve but i can't rectified that error. so please provide me a solution for this problem.
js script:
WavesKeeper.signAndPublishOrder({ type: 1002, data: { matcherPublicKey: "7kPFrHDiGw1rCm7LPszuECwWYL3dMf6iMifLRDJQZMzy", orderType: "buy", expiration: Date.now() + 100000, amount: { tokens: "0.000361", assetId: "DWgwcZTMhSvnyYCoWLRUXXSH1RSkzThXLJhww9gwkqdn" }, price: { tokens: "1", assetId: "WAVES" }, matcherFee: { tokens: "0.03", assetId: "WAVES" } } }).then((tx) => { console.log("order placed succesfull !!!"); }).catch((error) => { console.error("Something went wrong", error); }); }
Error:
"Error: The DWgwcZTMhSvnyYCoWLRUXXSH1RSkzThXLJhww9gwkqdn-WAVES asset pair should be reversed"
Thanks
Describe the bug
Clicking on button WALLET in Waves Keeper forwards to the obsolete client. Please change it to waves.exchange.
To Reproduce
Expected behavior
Should redirect to waves.exchange.
Screenshots
Desktop (please complete the following information):
Describe the bug
A clear and concise description of what the bug is.
After making a transaction, balances do not update
To Reproduce
Steps to reproduce the behavior:
receive waves on your account
Expected behavior
A clear and concise description of what you expected to happen.
balance in your account should update
at least have a refresh button to manually trigger this
Screenshots
If applicable, add screenshots to help explain your problem.
Environment
Additional context
Add any other context about the problem here.
After changing the network to testnet in settings it remains on mainnet. Going back to settings shows the entry as still the mainnet URL
Keeper does not accept this network matcher https://testnet.waves.exchange/api/v1/forward/matcher/matcher
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.
Describe the bug
Unable to decrypt messages using a test account and public key from KeeperWallet.publicState().account.publicKey get {message:'invalid key'} instead
To Reproduce
Open console
Type KeeperWallet.decryptMessage('encryptedMessage', "publicKEY", "encoding phrase").then(console.log)
Expected behavior
I expected to get a response with decrypted message instead i keep getting the error response {message: "invalid key"}
Screenshots
If applicable, add screenshots to help explain your problem.
Environment
Please complete the following information.
Additional context
Not sure if this makes a difference, but I was using a Testnet account and was running the app from localhost.
It looks like that since that commit, hardware wallet option is no longer supported, is there any reason why this happened? Thanks
6b8b925#diff-53f2e0946b858997e72e1581e83f8f8e5c80866b669a532502e955f9a564a557L43
Describe the bug
If you go to the create a new account pane and choose import keystore file, when you click on Browse, although a file select dialog appears, the wallet pane disappears. On returning to the wallet the selected file is not remembered.
As a result it is not possible to load a keystore file.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Wallet should stay visible during file select.
Screenshots
N/A
Environment
Please complete the following information.
Waves Keeper 2.0.0 zip download
Linux 5.11.0-43-generic #47~20.04.2-Ubuntu SMP Mon Dec 13 11:06:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Brave V1.33.106 and Chrome Version 96.0.4664.110 (Official Build) (64-bit)
Describe the bug
The extension raises a "react-i18next:: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour." warning when a new account is created.
To Reproduce
Steps to reproduce the behavior:
You can also see the error in the console if you inspect Waves Keeper while running it.
Expected behavior
No errors or warnings to be raised when an account is created
Environment
Waves Keeper 2.0.0 zip download
Linux 5.11.0-43-generic #47~20.04.2-Ubuntu SMP Mon Dec 13 11:06:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Brave V1.33.106 and Chrome Version 96.0.4664.110 (Official Build) (64-bit)
Describe the bug
A clear and concise description of what the bug is.
When interacting with a canvas, I am seeing that error in the console + the code injected can break some canvas application I am interacting with
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
I can see that this is coming from the checkForPaymentApiLink
function which is checking the href
property which exists in a
element but also in the SVGAnimatedString
element.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.
Аbstract
Добавить в README инструкцию по сборке расширения CRX из исходных файлов.
Motivation and Purposes
Возможность использовать локально собранное расширение, в том числе отказаться от возможности автоматического обновления расширения.
Specification
Пошаговая инструкция, позволяющая собрать CRX файл.
Backwards Compatibility
Полная совместимость с предыдущими версиями.
Examples and Implementation
Аbstract
With the ability for a user to block out an entire domain, an accidental rejection on the initial auth leads to an undesirable UX. Especially for users unfamiliar with Waves Keeper.
Motivation and Purposes
It'd be nice if we did not have to teach users how to re-enable permissions for a domain. This seems like an unnecessarily overreaching security feature and ultimately creates room for user error rather than protecting them. Consider these points:
Backwards Compatibility
This would be cleanly backwards compatible, and improve the UX for dapps
Examples and Implementation
Other browser wallets experience this same problem. However, I see this as a trait of nascent software rather than necessary security features.
I'm trying to use the Waves Keeper wallet for a custom (permissioned) clone of Waves. The custom options, although present in the code, don't appear to be visible in the interface.
Is it possible to override the chainID of 1 in the wallet anywhere? I can change the network byte for the mainnet from W to some other character in the code, but I can't see anywhere that I can specify that the first byte of the public address key should be something other than 0x01.
Аbstract
I've been working on a fork of Waves Keeper. We've been unable to publish it, because Chrome Store has stopped accepting new extensions using Manifest V2. I'm trying to modify Waves Keeper to support Manifest V3, but i am unable to make it work properly.
In Manifest V3 background pages have been replaced by Service Workers. Chrome automatically shuts off Service Worker after 5 minutes after activating regardless of activity.
Examples and Implementation
Changes in manifest file look like this:
{
"manifest_version": 3,
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["contentscript.js"],
"run_at": "document_start",
"all_frames": true
}
],
"web_accessible_resources": [
{
"resources": ["inpage.js"],
"matches": ["http://*/*", "https://*/*"]
}
]
}
I've been able to reconnect to Service Worker when Chrome shuts it off, but after reconnecting in-page API stops receiving public state updates. I am unable to figure out why that happens.
Implementation of connection between Service Worker and in-page API:
// contentscript.js
function setupConnection() {
const pageStream = new WindowPostMessageStream({
name: 'waves_keeper_content',
target: 'waves_keeper_page',
});
const connectToPort = () => {
const pluginPort = extension.runtime.connect({ name: 'contentscript' });
const pluginStream = new PortStream(pluginPort);
pageStream.pipe(pluginStream).pipe(pageStream);
const disconnectHandler = (port) => {
port.onDisconnect.removeListener(disconnectHandler);
pageStream.unpipe(pluginStream);
pluginStream.unpipe(pageStream);
pluginStream.destroy();
connectToPort();
};
pluginPort.onDisconnect.addListener(disconnectHandler);
};
connectToPort();
}
I would greatly appreciate any pointers on how to resolve this issue.
There are a lot of use cases when you want to make regular payments and you do not want to visit any website every time.
For instance, I want to make a service like patreon.com using only blockchain, as a backend and payment processor. It will allow to make a webpage with information about your project and have DONATE button. When a user clicks that button I want to subscribe his for regular payments for every month or on some events like new podcast episode(an oracle needed).
I have some service with a subscription model (like digitalocean.com for example). I do not want to visit this site every month to pay for the service. I definitely will forget about it and miss payment day. Sure I can create an event in my calendar. but it would be better if Waves Keeper can notify me that it is a payday I will just approve the transaction.
In both cases, when a user clicks a button Waves Keeper appears and shows two things one after another:
It is a bad idea to make transactions automatically, so it is much better just to show a notification and popup with transaction details for every payment period.
In order to sync subscriptions and not to lose your data when you change your device, subscriptions can be stored in data transactions like plain JSON.
Waves Keeper should be able to show the list of subscriptions and buttons to remove any of them. This fnuctionality could also be useful in mobile apps.
The easiest way for external developers to work with a subscription may look like below:
Waves.subscribe({
tx: {
// transaction details here
},
meta: {
period: 2592000, //in seconds, maybe it should look like '1s/1m/1d/1mm' etc.
description: 'Your cool subscription',
url: 'example.com',
address: '3P...'
}
})
The auth API docs says that auth will return signed data in a field named signature.
I called WAVES KEEPER API auth() to authorize users on my website
but if i print the return data on console i get the following. I don't see any signature field.
Code to authorize is:
function startApp(state)
{
const authData = {
data: "testtest",
};
WavesKeeper.auth(authData)
.then(auth => {
console.log(auth);
....
}).catch(error => {
console.error(error); // displaying the result on the console
/*...processing errors */
})
}
Output:
statistics: 200 {
initialized: true,
locked: false,
account: {
…},
network: {
…},
messages: Array(6),
…
}
account: address: "3P......"
balance: {
available: "2468518915",
leasedOut: "0",
network: "mainnet"
}
name: "Blackbot"
network: "mainnet"
networkCode: "W"
publicKey: "7qwuz....."
type: "seed"
__proto__: Objectconstructor: ƒ Object() hasOwnProperty: ƒ hasOwnProperty() isPrototypeOf: ƒ isPrototypeOf() propertyIsEnumerable: ƒ propertyIsEnumerable() toLocaleString: ƒ toLocaleString() toString: ƒ toString() valueOf: ƒ valueOf() __defineGetter__: ƒ __defineGetter__() __defineSetter__: ƒ __defineSetter__() __lookupGetter__: ƒ __lookupGetter__() __lookupSetter__: ƒ __lookupSetter__() get __proto__: ƒ __proto__() set __proto__: ƒ __proto__() initialized: truelocked: falsemessages: (6)[{
…}, {
…}, {
…}, {
…}, {
…}, {
…}] 0: id: "b35061e0-1612-4352-81a9-82bf9d2530e2"
status: "signed"
__proto__: Object1: {
id: "ad38c2f6-2e02-4830-91f6-7feabbbb581f",
status: "signed"
}
2: {
id: "e0a97def-d888-4f33-9a1b-dd12f8e3ba77",
status: "signed"
}
3: {
id: "1e940681-2299-487a-91c6-e3dcdbbb5b2b",
status: "signed"
}
4: {
id: "be367a0f-1bb3-413d-85bf-38de17999092",
status: "signed"
}
5: {
id: "eb3e47b2-afbd-4ab8-8a3e-97c942647ace",
status: "signed"
}
length: 6 __proto__: Array(0) network: {
code: "W",
server: "https://nodes.wavesplatform.com/",
matcher: "https://matcher.wavesplatform.com/"
}
code: "W"
matcher: "https://matcher.wavesplatform.com/"
server: "https://nodes.wavesplatform.com/"
__proto__: ObjecttxVersion: {
3: Array(1),
4: Array(1),
5: Array(1),
6: Array(1),
7: Array(2),
8: Array(1),
9: Array(1),
10: Array(1),
11: Array(1),
12: Array(1),
13: Array(1),
14: Array(1),
15: Array(1),
16: Array(1),
1000: Array(1),
1001: Array(1),
1002: Array(2),
1003: Array(1),
1004: Array(1)
}
3: Array(1)
When I tested the waves keeper API I didn't get it to work at first and all I did was copy some example code that I found, after uploading it online to a server the same code worked. But when it is a local file it doesn't. I'll include the local files and would also like to add that I am on linux, I'm not shure if that has anything to do with it.
index.css.txt
main2.js.txt
waveskeepertest.html.txt
Describe the bug
If the inspect page is open on console while using the wallet, the following warning is seen:
ui.js?9fa45892bcecf24d5477:29 @babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning.
To Reproduce
Open the wallet
Right-click and select "inspect"
In the pop-up, select console
Observe the error message
Expected behavior
There should be no warnings or errors visible on inspect
Screenshots
If applicable, add screenshots to help explain your problem.
Environment
Please complete the following information.
Additional context
Add any other context about the problem here.
Describe the bug
The extension raises premature close error when clicking outside the wallet extension pane
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Extensions should not raise errors during normal operation.
Environment
Waves Keeper 2.0.0 zip download
Linux 5.11.0-43-generic #47~20.04.2-Ubuntu SMP Mon Dec 13 11:06:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Brave V1.33.106 and Chrome Version 96.0.4664.110 (Official Build) (64-bit)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.