superfluid-finance / superfluid-console Goto Github PK
View Code? Open in Web Editor NEWThe new and improved Supefluid Console using SDK-Redux & Next.js & MaterialUI
Home Page: https://console.superfluid.finance
License: MIT License
The new and improved Supefluid Console using SDK-Redux & Next.js & MaterialUI
Home Page: https://console.superfluid.finance
License: MIT License
Problem
As a user, I want to be able to quickly see which version of the console I'm using
I'd like to know which features were included in the latest update
Solution
Notes
User Need
Solution
Rabbitholes
On Super Token pages in the console, I'd like to be able to easily see an accurate list of all Super Token holders, as this is not accurate on other explorers.
Explanation
Times from Subgraph come as UTC but the time we used to calculate flowing balance animation was using local time.
Thanks to @msoni89 for pointing it out!
Steps: Open the debug link
Sort Total Amount Received or Approved by Ascending first
Link to debug: https://superfluid-console-two.vercel.app/matic/indexes/0x0a70fbb45bc8c70fb94d8678b92686bb69dea3c3-0x1305f6b6df9dc47159d12eb7ac2804d4a33173c2-0
Link to debug: https://superfluid-console-two.vercel.app/matic/index-subscriptions/0x17fe4ed21e35b5ad800179b0c20447ca3f5280db-0x0a70fbb45bc8c70fb94d8678b92686bb69dea3c3-0x1305f6b6df9dc47159d12eb7ac2804d4a33173c2-0
Even when you are out of the pool and have no more units, the distributions are still triggered to that wallet and now there is no easy way to see what was the last distribution the wallet actually received since you can't even sort by the amount received or change to an old page without clicking 100 times
Could get confusing seeing the last update at 155 while the actual last update was to 308 units
Link to debug: https://superfluid-console-two.vercel.app/matic/index-subscriptions/0x17fe4ed21e35b5ad800179b0c20447ca3f5280db-0x0a70fbb45bc8c70fb94d8678b92686bb69dea3c3-0x1305f6b6df9dc47159d12eb7ac2804d4a33173c2-0
Make the column sizes changeable
For longer values it is sometimes not possible to see the whole line
Link to debug: https://superfluid-console-two.vercel.app/matic/accounts/0xF9Ce34dFCD3cc92804772F3022AF27bCd5E43Ff2?tab=indexes
Show None instead of 0x000000 as the underlying token for native super tokens"
Link to debug: https://superfluid-console-two.vercel.app/matic/supertokens/0x263026E7e53DBFDce5ae55Ade22493f828922965
If possible add details to individual distributions in the Index page showing the amount of tokens that got sent to which address
Link to debug:
https://superfluid-console-two.vercel.app/matic/indexes/0x250efbb94de68dd165bd6c98e804e08153eb91c6-0x1305f6b6df9dc47159d12eb7ac2804d4a33173c2-0
Problem
To track:
Solution
When navigating between pages I'd like to be able to return to the table location and filters I had selected on the previous page in my browser.
Task List
Problem
Solution
Notes
When fixing #66 we introduced web3 calls to prevent showing invalid token balances for users who have received distributions due to some graph limitations
We should add some kind of warning if those web3 calls fail as we cannot be sure that the balance shown is correct
Side note:
When loading the balances the loading skeleton disappears before the balance of web3 calls is returned and you can clearly see the number jumping up for the affected users, would be cleaner to only show the balances when we have the end result
As a user I’d like to know when I’ve made a typo or entered invalid characters into the search bar
Problem
Solution
Note
Problem
Subgraph queries have a requirement that addresses must be lower-cased. It's something that's very easy to forget. And even if you don't forget, it's a bit annoying to find a tool to lower-case it. Usually people open up the browser's console, do "0x...".toLowerCase(), and copy the address from there.
Solution
We should provide a helpful automation in the Subgraph Explorer.
Design
@kasparkallas: "I like a solution where we parse the query and variables with regex when the user clicks 'execute query' button and we automatically replace the addresses with lower-cased ones and also execute the query. To make it not as hidden, I would display a notification somewhere that we took case of the lower-casing. The reason I like this solution is that it doesn't require any additional steps from the user (i.e. they don't need to know that they need to click an additional button somewhere). The reason I don't like the solution is that now it's impossible to do queries with upper-cased addresses (not sure that's ever wanted behaviour though). Instead of automatically replacing, we could also display a confirmation to replace which the user can opt-out of."
Notes
Currently there is no easy way to filter out data for a specific time frame , other than clicking on the next page button a bunch of times, which makes debugging things that happened a while ago for an active account pretty annoying , it would be great to have an option to filter the data shown in the tables by a given time frame
https://rpc-endpoints.superfluid.dev/ should have all supported networks, and the nodes that we maintain. They are used in user dashboard too.
As a user, I'd like the contract addresses to be clickable under the Protocol tab so that it brings me to the block explorer contract page.
The governance parameters and addresses currently stored in the documentation should have a page on the console where they are updated live instead of the current manual process.
Technical
Sample data: https://github.com/superfluid-finance/superfluid-stories/issues/185
As the current console does at console.superfluid.finance, we should add links to our terms of use and privacy policy.
Text: By using this web app, you accept our Terms of Use and Privacy Policy.
Links:
Terms of Use: https://www.superfluid.finance/termsofuse/
Privacy Policy: https://www.iubenda.com/privacy-policy/34415583/legal
Gnosis chain is currently not supported since the SDK-CORE's rpc requirement cannot be met with a free Infura one (there is no Infura Gnosis chain API).
We should use our own RPC or another public one
As a Super App developer, I’d like to be able to see stats on users and total inflow and outflow.
Solution
When looking into #35 we found that if the users system time is not correct the ongoing stream amounts are shown incorrectly on macOS , we should warn the users that the data might not be accurate due to their system time not being in sync with the timezone they have set
Searching for an address in the address book doesn't work with uppercase letters
https://user-images.githubusercontent.com/77115130/154018179-bb90febb-58b5-40fd-a6c7-8b96ee0dca71.mov
Last saved name gets used in the name modal when trying to add/edit an address name:
Steps:
User adds an address to their address book ( Hello )
User opens a different address page ( Test )
User edits the address book entry
Expected result:
The modal input value is set to the address book entry that was last chosen( Test )
Actual result:
The modal input value is set to the address book entry that was last edited( Hello )
When user scrolls down and clicks on a hyperlink, new page doesn't scroll up by itself
Problem
The real time balances on some accounts are incorrect in the console, showing negative numbers and numbers inconsistent with the dashboard.
Details
Proposed Solution
When I arrive on a 404 page when trying to navigate to an address or token page on the wrong network, I'd like to better understand why and navigate away
Ref: Sunny
As a user I’d like to be able to quickly copy addresses from the console pages
Example
Filtering test cases:
Filtering common cases:
Account incoming streams table
Account outgoing streams table
Account index publications table
Account index subscriptions table
Account super tokens table
Events table
Super token streams table
Super token indexes table
Other:
After upgrading sdk-core from 0.3.1 to 0.3.2 and sdk-redux from 0.2.1 to 0.2.2 , subgraph errors are getting thrown in the console and the Events tab is not showing any events
Debug link: https://console.superfluid.finance/matic/accounts/0x658e1B019F2F30C8089a9Ae3Ae5820F335bd9Ce4
Error thrown:
"type": "SUBGRAPH_ERROR",
"errorObject": {
"response": {
"errors": [
{
"message": "Failed to resolve named type `PPPConfigurationChangedEvent`"
},
{
"message": "Failed to resolve named type `AgreementLiquidatedV2Event`"
}
],
"status": 200,
"headers": {
"map": {
"content-type": "application/json"
}
}
},
"request": {
"query": "query getAllEvents($where: Event_filter! = {}, $skip: Int! = 0, $first: Int! = 10, $orderBy: Event_orderBy! = id, $orderDirection: OrderDirection! = asc) {\n events(\n where: $where\n skip: $skip\n first: $first\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n ... on FlowUpdatedEvent {\n userData\n type\n token\n sender\n receiver\n flowRate\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on IndexCreatedEvent {\n userData\n token\n publisher\n indexId\n index {\n id\n }\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on IndexDistributionClaimedEvent {\n token\n subscriber\n publisher\n indexId\n index {\n id\n }\n amount\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on IndexUpdatedEvent {\n userData\n totalUnitsPending\n totalUnitsApproved\n token\n publisher\n oldIndexValue\n newIndexValue\n indexId\n index {\n id\n }\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on IndexSubscribedEvent {\n id\n userData\n token\n subscriber\n publisher\n indexId\n index {\n id\n }\n ... on Event {\n __typename\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on IndexUnitsUpdatedEvent {\n userData\n units\n token\n subscriber\n publisher\n oldUnits\n indexId\n index {\n id\n }\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on IndexUnsubscribedEvent {\n userData\n token\n subscriber\n publisher\n indexId\n index {\n id\n }\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SubscriptionApprovedEvent {\n userData\n token\n subscription {\n id\n }\n subscriber\n publisher\n indexId\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SubscriptionDistributionClaimedEvent {\n token\n subscription {\n id\n }\n subscriber\n publisher\n indexId\n amount\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SubscriptionRevokedEvent {\n userData\n subscription {\n id\n }\n subscriber\n publisher\n indexId\n token\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SubscriptionUnitsUpdatedEvent {\n userData\n units\n token\n subscription {\n id\n }\n subscriber\n publisher\n oldUnits\n indexId\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on TransferEvent {\n value\n token\n to {\n id\n }\n from {\n id\n }\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on TokenUpgradedEvent {\n amount\n token\n account {\n id\n }\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on TokenDowngradedEvent {\n token\n blockNumber\n amount\n account {\n id\n }\n ... on Event {\n __typename\n id\n transactionHash\n timestamp\n }\n }\n ... on AgreementClassRegisteredEvent {\n code\n agreementType\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on AgreementClassUpdatedEvent {\n code\n agreementType\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on AppRegisteredEvent {\n blockNumber\n app\n ... on Event {\n __typename\n id\n transactionHash\n timestamp\n }\n }\n ... on GovernanceReplacedEvent {\n oldGovernance\n newGovernance\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on JailEvent {\n reason\n app\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SuperTokenFactoryUpdatedEvent {\n newFactory\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SuperTokenLogicUpdatedEvent {\n token\n code\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on RoleAdminChangedEvent {\n role\n previousAdminRole\n newAdminRole\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on RoleGrantedEvent {\n sender\n role\n account\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on RoleRevokedEvent {\n sender\n role\n account\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on CFAv1LiquidationPeriodChangedEvent {\n superToken\n host\n liquidationPeriod\n isKeySet\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on ConfigChangedEvent {\n value\n superToken\n key\n isKeySet\n host\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on RewardAddressChangedEvent {\n superToken\n rewardAddress\n isKeySet\n host\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on PPPConfigurationChangedEvent {\n host\n superToken\n isKeySet\n liquidationPeriod\n patricianPeriod\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on TrustedForwarderChangedEvent {\n isKeySet\n host\n forwarder\n enabled\n superToken\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on AgreementLiquidatedByEvent {\n token\n rewardAmount\n penaltyAccount\n liquidatorAccount\n bondAccount\n bailoutAmount\n agreementId\n agreementClass\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on AgreementLiquidatedV2Event {\n token\n liquidatorAccount\n agreementClass\n agreementId\n targetAccount\n rewardAccount\n rewardAmount\n targetAccountBalanceDelta\n version\n liquidationType\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on BurnedEvent {\n operatorData\n operator\n from\n data\n amount\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on MintedEvent {\n operatorData\n operator\n data\n amount\n to\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SentEvent {\n to\n operatorData\n operator\n data\n amount\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on CustomSuperTokenCreatedEvent {\n token\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SuperTokenCreatedEvent {\n token\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n ... on SuperTokenLogicCreatedEvent {\n tokenLogic\n ... on Event {\n __typename\n id\n blockNumber\n transactionHash\n timestamp\n }\n }\n }\n}",
"variables": {
"orderBy": "blockNumber",
"orderDirection": "desc",
"where": {
"addresses_contains": [
"0x658e1b019f2f30c8089a9ae3ae5820f335bd9ce4"
],
"timestamp_gt": "0"
},
"first": 11,
"skip": 0
}
}
},
"message": "Subgraph Error - Failed call to subgraph with query [object Object]: {\n \"response\": {\n \"errors\": [\n {\n \"message\": \"Failed to resolve named type `PPPConfigurationChangedEvent`\"\n },\n {\n \"message\": \"Failed to resolve named type `AgreementLiquidatedV2Event`\"\n }\n ],\n \"status\": 200,\n \"headers\": {\n \"map\": {\n \"content-type\": \"application/json\"\n }\n }\n },\n \"request\": {\n \"query\": \"query getAllEvents($where: Event_filter! = {}, $skip: Int! = 0, $first: Int! = 10, $orderBy: Event_orderBy! = id, $orderDirection: OrderDirection! = asc) {\\n events(\\n where: $where\\n skip: $skip\\n first: $first\\n orderBy: $orderBy\\n orderDirection: $orderDirection\\n ) {\\n ... on FlowUpdatedEvent {\\n userData\\n type\\n token\\n sender\\n receiver\\n flowRate\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on IndexCreatedEvent {\\n userData\\n token\\n publisher\\n indexId\\n index {\\n id\\n }\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on IndexDistributionClaimedEvent {\\n token\\n subscriber\\n publisher\\n indexId\\n index {\\n id\\n }\\n amount\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on IndexUpdatedEvent {\\n userData\\n totalUnitsPending\\n totalUnitsApproved\\n token\\n publisher\\n oldIndexValue\\n newIndexValue\\n indexId\\n index {\\n id\\n }\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on IndexSubscribedEvent {\\n id\\n userData\\n token\\n subscriber\\n publisher\\n indexId\\n index {\\n id\\n }\\n ... on Event {\\n __typename\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on IndexUnitsUpdatedEvent {\\n userData\\n units\\n token\\n subscriber\\n publisher\\n oldUnits\\n indexId\\n index {\\n id\\n }\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on IndexUnsubscribedEvent {\\n userData\\n token\\n subscriber\\n publisher\\n indexId\\n index {\\n id\\n }\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SubscriptionApprovedEvent {\\n userData\\n token\\n subscription {\\n id\\n }\\n subscriber\\n publisher\\n indexId\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SubscriptionDistributionClaimedEvent {\\n token\\n subscription {\\n id\\n }\\n subscriber\\n publisher\\n indexId\\n amount\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SubscriptionRevokedEvent {\\n userData\\n subscription {\\n id\\n }\\n subscriber\\n publisher\\n indexId\\n token\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SubscriptionUnitsUpdatedEvent {\\n userData\\n units\\n token\\n subscription {\\n id\\n }\\n subscriber\\n publisher\\n oldUnits\\n indexId\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on TransferEvent {\\n value\\n token\\n to {\\n id\\n }\\n from {\\n id\\n }\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on TokenUpgradedEvent {\\n amount\\n token\\n account {\\n id\\n }\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on TokenDowngradedEvent {\\n token\\n blockNumber\\n amount\\n account {\\n id\\n }\\n ... on Event {\\n __typename\\n id\\n transactionHash\\n timestamp\\n }\\n }\\n ... on AgreementClassRegisteredEvent {\\n code\\n agreementType\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on AgreementClassUpdatedEvent {\\n code\\n agreementType\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on AppRegisteredEvent {\\n blockNumber\\n app\\n ... on Event {\\n __typename\\n id\\n transactionHash\\n timestamp\\n }\\n }\\n ... on GovernanceReplacedEvent {\\n oldGovernance\\n newGovernance\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on JailEvent {\\n reason\\n app\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SuperTokenFactoryUpdatedEvent {\\n newFactory\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SuperTokenLogicUpdatedEvent {\\n token\\n code\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on RoleAdminChangedEvent {\\n role\\n previousAdminRole\\n newAdminRole\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on RoleGrantedEvent {\\n sender\\n role\\n account\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on RoleRevokedEvent {\\n sender\\n role\\n account\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on CFAv1LiquidationPeriodChangedEvent {\\n superToken\\n host\\n liquidationPeriod\\n isKeySet\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on ConfigChangedEvent {\\n value\\n superToken\\n key\\n isKeySet\\n host\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on RewardAddressChangedEvent {\\n superToken\\n rewardAddress\\n isKeySet\\n host\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on PPPConfigurationChangedEvent {\\n host\\n superToken\\n isKeySet\\n liquidationPeriod\\n patricianPeriod\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on TrustedForwarderChangedEvent {\\n isKeySet\\n host\\n forwarder\\n enabled\\n superToken\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on AgreementLiquidatedByEvent {\\n token\\n rewardAmount\\n penaltyAccount\\n liquidatorAccount\\n bondAccount\\n bailoutAmount\\n agreementId\\n agreementClass\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on AgreementLiquidatedV2Event {\\n token\\n liquidatorAccount\\n agreementClass\\n agreementId\\n targetAccount\\n rewardAccount\\n rewardAmount\\n targetAccountBalanceDelta\\n version\\n liquidationType\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on BurnedEvent {\\n operatorData\\n operator\\n from\\n data\\n amount\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on MintedEvent {\\n operatorData\\n operator\\n data\\n amount\\n to\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SentEvent {\\n to\\n operatorData\\n operator\\n data\\n amount\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on CustomSuperTokenCreatedEvent {\\n token\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SuperTokenCreatedEvent {\\n token\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n ... on SuperTokenLogicCreatedEvent {\\n tokenLogic\\n ... on Event {\\n __typename\\n id\\n blockNumber\\n transactionHash\\n timestamp\\n }\\n }\\n }\\n}\",\n \"variables\": {\n \"orderBy\": \"blockNumber\",\n \"orderDirection\": \"desc\",\n \"where\": {\n \"addresses_contains\": [\n \"0x658e1b019f2f30c8089a9ae3ae5820f335bd9ce4\"\n ],\n \"timestamp_gt\": \"0\"\n },\n \"first\": 11,\n \"skip\": 0\n }\n }\n}"
}
Add test cases for pages added in #64
@mariamtava Add new test cases in Testrail
@mariamtava Add test cases for
As an IDA user I would like to see how many tokens were sent and to which addresses when a distribution happened instead of just the total amount distributed , this would be nice to see in the index page distribution section as an additional "details" page like we currently have for subscriptions
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.