chores: move to backend part1

This commit is contained in:
Anthony Laibe 2022-02-16 13:58:01 +01:00 committed by Iuri Matias
parent 6ebd8cb1cc
commit 33216d5bb5
24 changed files with 234 additions and 267 deletions

View File

@ -6,7 +6,7 @@ import ../../../constants
import ../settings/service as settings_service
import ../network/types
import ../../../backend/about as status_about
import ../../../backend/backend
import ./update
include async_tasks
@ -56,7 +56,7 @@ QtObject:
proc getNodeVersion*(self: Service): string =
try:
return status_about.getWeb3ClientVersion().result.getStr
return backend.clientVersion().result.getStr
except Exception as e:
error "Error getting Node version"

View File

@ -8,7 +8,7 @@ type
const asyncActivityNotificationLoadTask: Task = proc(argEncoded: string) {.gcsafe, nimcall.} =
let arg = decode[AsyncActivityNotificationLoadTaskArg](argEncoded)
let activityNotificationsCallResult = status_activity_center.rpcActivityCenterNotifications(newJString(arg.cursor), arg.limit)
let activityNotificationsCallResult = backend.activityCenterNotifications(newJString(arg.cursor), arg.limit)
let responseJson = %*{
"activityNotifications": activityNotificationsCallResult.result

View File

@ -9,7 +9,7 @@ import json, tables, json_serialization
import ../chat/service as chat_service
import ../../../backend/activity_center as status_activity_center
import ../../../backend/backend
import ../../../backend/response_type
import ./dto/notification
@ -112,7 +112,7 @@ QtObject:
else:
cursorVal = newJString(self.cursor)
let callResult = status_activity_center.rpcActivityCenterNotifications(cursorVal, DEFAULT_LIMIT)
let callResult = backend.activityCenterNotifications(cursorVal, DEFAULT_LIMIT)
let activityCenterNotificationsTuple = parseActivityCenterNotifications(callResult.result)
self.cursor = activityCenterNotificationsTuple[0];
@ -125,7 +125,7 @@ QtObject:
markAsReadProps: MarkAsReadNotificationProperties
): string =
try:
discard status_activity_center.markActivityCenterNotificationsRead(@[notificationId])
discard backend.markActivityCenterNotificationsRead(@[notificationId])
self.events.emit(SIGNAL_MARK_NOTIFICATIONS_AS_READ, markAsReadProps)
except Exception as e:
error "Error marking as read", msg = e.msg
@ -133,7 +133,7 @@ QtObject:
proc unreadActivityCenterNotificationsCount*(self: Service): int =
try:
let response = status_activity_center.unreadActivityCenterNotificationsCount()
let response = backend.unreadActivityCenterNotificationsCount()
if response.result.kind != JNull:
return response.result.getInt
@ -146,7 +146,7 @@ QtObject:
markAsUnreadProps: MarkAsUnreadNotificationProperties
): string =
try:
discard status_activity_center.markActivityCenterNotificationsUnread(@[notificationId])
discard backend.markActivityCenterNotificationsUnread(@[notificationId])
self.events.emit(SIGNAL_MARK_NOTIFICATIONS_AS_UNREAD, markAsUnreadProps)
except Exception as e:
error "Error marking as unread", msg = e.msg
@ -154,7 +154,7 @@ QtObject:
proc markAllActivityCenterNotificationsRead*(self: Service, initialLoad: bool = true):string =
try:
discard status_activity_center.markAllActivityCenterNotificationsRead()
discard backend.markAllActivityCenterNotificationsRead()
# This proc should accept ActivityCenterNotificationType in order to clear all notifications
# per type, that's why we have this part here. If we add all types to notificationsType that
# means that we need to clear all notifications for all types.
@ -181,7 +181,7 @@ QtObject:
proc acceptActivityCenterNotifications*(self: Service, notificationIds: seq[string]): string =
try:
let response = status_activity_center.acceptActivityCenterNotifications(notificationIds)
let response = backend.acceptActivityCenterNotifications(notificationIds)
let (chats, messages) = self.chatService.parseChatResponse(response)
self.events.emit(chat_service.SIGNAL_CHAT_UPDATE,
@ -193,7 +193,7 @@ QtObject:
proc dismissActivityCenterNotifications*(self: Service, notificationIds: seq[string]): string =
try:
discard status_activity_center.dismissActivityCenterNotifications(notificationIds)
discard backend.dismissActivityCenterNotifications(notificationIds)
self.events.emit(SIGNAL_MARK_NOTIFICATIONS_AS_DISMISSED,
MarkAsDismissedNotificationProperties(notificationIds: notificationIds))
except Exception as e:

View File

@ -2,7 +2,7 @@ import Tables, json, sequtils, strformat, chronicles
import result
include ../../common/json_utils
import ./dto/bookmark as bookmark_dto
import ../../../backend/bookmarks as status_go
import ../../../backend/backend
export bookmark_dto
@ -24,7 +24,7 @@ proc newService*(): Service =
proc init*(self: Service) =
try:
let response = status_go.getBookmarks()
let response = backend.getBookmarks()
for bookmark in response.result.getElems().mapIt(it.toBookmarkDto()):
self.bookmarks[bookmark.url] = bookmark
@ -37,7 +37,7 @@ proc getBookmarks*(self: Service): seq[BookmarkDto] =
proc storeBookmark*(self: Service, url, name: string): R =
try:
let response = status_go.storeBookmark(url, name).result
let response = backend.storeBookmark(backend.Bookmark(name: name, url: url)).result
self.bookmarks[url] = BookmarkDto()
self.bookmarks[url].url = url
self.bookmarks[url].name = name
@ -52,7 +52,7 @@ proc deleteBookmark*(self: Service, url: string): bool =
try:
if not self.bookmarks.hasKey(url):
return
discard status_go.deleteBookmark(url)
discard backend.deleteBookmark(url)
self.bookmarks.del(url)
except Exception as e:
let errDescription = e.msg
@ -65,7 +65,7 @@ proc updateBookmark*(self: Service, oldUrl, newUrl, newName: string): R =
if not self.bookmarks.hasKey(oldUrl):
return
let response = status_go.updateBookmark(oldUrl, newUrl, newName).result
let response = backend.updateBookmark(oldUrl, backend.Bookmark(name: newName, url: newUrl)).result
self.bookmarks.del(oldUrl)
self.bookmarks[newUrl] = BookmarkDto()
self.bookmarks[newUrl].url = newUrl

View File

@ -3,7 +3,7 @@ import chronicles, sequtils, json
import dto
import ../settings/service as settings_service
import ../../../backend/collectibles as collectibles
import ../../../backend/backend
export dto
@ -29,7 +29,7 @@ proc init*(self: Service) =
proc getCollections*(self: Service, address: string): seq[CollectionDto] =
try:
let networkId = self.settingsService.getCurrentNetworkId()
let response = collectibles.getOpenseaCollections(networkId, address)
let response = backend.getOpenseaCollectionsByOwner(networkId, address)
return map(response.result.getElems(), proc(x: JsonNode): CollectionDto = x.toCollectionDto())
except Exception as e:
let errDesription = e.msg
@ -39,7 +39,7 @@ proc getCollections*(self: Service, address: string): seq[CollectionDto] =
proc getCollectibles*(self: Service, address: string, collectionSlug: string): seq[CollectibleDto] =
try:
let networkId = self.settingsService.getCurrentNetworkId()
let response = collectibles.getOpenseaAssets(networkId, address, collectionSlug, limit)
let response = backend.getOpenseaAssetsByOwnerAndCollection(networkId, address, collectionSlug, limit)
return map(response.result.getElems(), proc(x: JsonNode): CollectibleDto = x.toCollectibleDto())
except Exception as e:
let errDesription = e.msg

View File

@ -3,7 +3,7 @@ import sets
import result
import options
include ../../common/json_utils
import ../../../backend/permissions as status_go
import ../../../backend/backend
import dto/dapp
import dto/permission
@ -28,7 +28,7 @@ proc newService*(): Service =
proc init*(self: Service) =
try:
let response = status_go.getDappPermissions()
let response = backend.getDappPermissions()
for dapp in response.result.getElems().mapIt(it.toDapp()):
if dapp.address == "":
continue
@ -48,7 +48,7 @@ proc getDapp*(self: Service, name: string, address: string): Option[Dapp] =
return none(Dapp)
proc addPermission*(self: Service, name: string, address: string, permission: Permission): R =
proc addPermission*(self: Service, name: string, address: string, perm: permission.Permission): R =
let key = name & address
try:
@ -56,12 +56,16 @@ proc addPermission*(self: Service, name: string, address: string, permission: Pe
self.dapps[key] = Dapp(
name: name,
address: address,
permissions: initHashSet[Permission]()
permissions: initHashSet[permission.Permission]()
)
self.dapps[key].permissions.incl(permission)
self.dapps[key].permissions.incl(perm)
let permissions = self.dapps[key].permissions.toSeq().mapIt($it)
discard status_go.addDappPermissions(name, address, permissions)
discard backend.addDappPermissions(backend.Permission(
dapp: name,
address: address,
permissions: permissions
))
result.ok self.dapps[key]
except Exception as e:
let errDescription = e.msg
@ -69,11 +73,11 @@ proc addPermission*(self: Service, name: string, address: string, permission: Pe
result.err errDescription
proc hasPermission*(self: Service, dapp: string, address: string, permission: Permission): bool =
proc hasPermission*(self: Service, dapp: string, address: string, perm: permission.Permission): bool =
let key = dapp & address
if not self.dapps.hasKey(key):
return false
return self.dapps[key].permissions.contains(permission)
return self.dapps[key].permissions.contains(perm)
proc disconnect*(self: Service, dappName: string): bool =
try:
@ -82,7 +86,7 @@ proc disconnect*(self: Service, dappName: string): bool =
if dapp.name != dappName:
continue
discard status_go.deleteDappPermissions(dapp.name, dapp.address)
discard backend.deleteDappPermissionsByNameAndAddress(dapp.name, dapp.address)
addresses.add(dapp.address)
for address in addresses:
@ -99,25 +103,29 @@ proc disconnectAddress*(self: Service, dappName: string, address: string): bool
return
try:
discard status_go.deleteDappPermissions(dappName, address)
discard backend.deleteDappPermissionsByNameAndAddress(dappName, address)
self.dapps.del(key)
return true
except Exception as e:
let errDescription = e.msg
error "error: ", errDescription
proc removePermission*(self: Service, name: string, address: string, permission: Permission): bool =
proc removePermission*(self: Service, name: string, address: string, perm: permission.Permission): bool =
let key = name & address
if not self.dapps.hasKey(key):
return
try:
if self.dapps[key].permissions.contains(permission):
self.dapps[key].permissions.excl(permission)
if self.dapps[key].permissions.contains(perm):
self.dapps[key].permissions.excl(perm)
if self.dapps[key].permissions.len > 0:
discard status_go.addDappPermissions(name, address, self.dapps[key].permissions.toSeq().mapIt($it))
discard backend.addDappPermissions(backend.Permission(
dapp: name,
address: address,
permissions: self.dapps[key].permissions.toSeq().mapIt($it)
))
else:
discard status_go.deleteDappPermissions(name, address)
discard backend.deleteDappPermissionsByNameAndAddress(name, address)
self.dapps.del(key)
return true
except Exception as e:

View File

@ -7,7 +7,7 @@ import chronicles
import sequtils
import ../settings/service as settings_service
import ../../../backend/gif as status_gif
import ../../../backend/backend
import ./dto
logScope:
@ -43,7 +43,7 @@ proc newService*(settingsService: settings_service.Service): Service =
proc setTenorAPIKey(self: Service) =
try:
let response = status_gif.setTenorAPIKey(TENOR_API_KEY_RESOLVED)
let response = backend.setTenorAPIKey(TENOR_API_KEY_RESOLVED)
if(not response.error.isNil):
error "error setTenorAPIKey: ", errDescription = response.error.message
@ -52,7 +52,7 @@ proc setTenorAPIKey(self: Service) =
proc getRecentGifs(self: Service) =
try:
let response = status_gif.getRecentGifs()
let response = backend.getRecentGifs()
if(not response.error.isNil):
error "error getRecentGifs: ", errDescription = response.error.message
@ -64,7 +64,7 @@ proc getRecentGifs(self: Service) =
proc getFavoriteGifs(self: Service) =
try:
let response = status_gif.getFavoriteGifs()
let response = backend.getFavoriteGifs()
if(not response.error.isNil):
error "error getFavoriteGifs: ", errDescription = response.error.message
@ -84,7 +84,7 @@ proc init*(self: Service) =
proc tenorQuery(self: Service, path: string): seq[GifDto] =
try:
let response = status_gif.fetchGifs(path)
let response = backend.fetchGifs(path)
let doc = response.result.str.parseJson()
var items: seq[GifDto] = @[]
@ -122,7 +122,7 @@ proc addToRecents*(self: Service, gifDto: GifDto) =
self.recents = newRecents
let recent = %*{"items": map(newRecents, toJsonNode)}
discard status_gif.updateRecentGifs(recent)
discard backend.updateRecentGifs(recent)
proc getFavorites*(self: Service): seq[GifDto] =
return self.favorites
@ -149,4 +149,4 @@ proc toggleFavorite*(self: Service, gifDto: GifDto) =
self.favorites = newFavorites
let favorites = %*{"items": map(newFavorites, toJsonNode)}
discard status_gif.updateFavoriteGifs(favorites)
discard backend.updateFavoriteGifs(favorites)

View File

@ -2,7 +2,7 @@ import json, json_serialization, chronicles, atomics
import ../../../app/core/eventemitter
import ../../../app/global/global_singleton
import ../../../backend/network as status_network
import ../../../backend/backend as backend
import ../settings/service as settings_service
import dto, types
@ -37,8 +37,7 @@ proc getNetworks*(self: Service, useCached: bool = true): seq[NetworkDto] =
if useCached and not cacheIsDirty:
result = self.networks
else:
let payload = %* [false]
let response = status_network.getNetworks(payload)
let response = backend.getEthereumChains(false)
if not response.error.isNil:
raise newException(Exception, "Error getting networks: " & response.error.message)
result = if response.result.isNil or response.result.kind == JNull: @[]
@ -60,11 +59,11 @@ proc getEnabledNetworks*(self: Service): seq[NetworkDto] =
result.add(network)
proc upsertNetwork*(self: Service, network: NetworkDto) =
discard status_network.upsertNetwork(network.toPayload())
discard backend.addEthereumChain(network.toPayload())
self.dirty.store(true)
proc deleteNetwork*(self: Service, network: NetworkDto) =
discard status_network.deleteNetwork(%* [network.chainId])
discard backend.deleteEthereumChain(%* [network.chainId])
self.dirty.store(true)
proc getNetwork*(self: Service, chainId: int): NetworkDto =

View File

@ -3,7 +3,7 @@ import chronicles, sequtils, json
import dto
import ../../../app/core/eventemitter
import ../../../backend/saved_addresses as backend
import ../../../backend/backend
export dto
@ -45,11 +45,7 @@ proc getSavedAddresses*(self: Service): seq[SavedAddressDto] =
proc createOrUpdateSavedAddress*(self: Service, name, address: string): string =
try:
let response = backend.addSavedAddress(name, address)
if not response.error.isNil:
raise newException(Exception, response.error.message)
discard backend.addSavedAddress(backend.SavedAddress(name: name, address: address))
self.fetchAddresses()
self.events.emit(SIGNAL_SAVED_ADDRESS_CHANGED, Args())
return ""

View File

@ -4,7 +4,6 @@ from sugar import `=>`
import web3/ethtypes
from web3/conversions import `$`
import ../../../backend/backend as backend
import ../../../backend/tokens as token_backend
import ../settings/service as settings_service
import ../network/service as network_service
@ -79,7 +78,7 @@ QtObject:
else:
activeTokenSymbols[network.chainId] = @[]
let responseTokens = token_backend.getTokens(network.chainId)
let responseTokens = backend.getTokens(network.chainId)
let default_tokens = map(
responseTokens.result.getElems(),
proc(x: JsonNode): TokenDto = x.toTokenDto(activeTokenSymbols[network.chainId], hasIcon=true, isCustom=false)

View File

@ -1,6 +1,6 @@
import NimQml, chronicles, sequtils, sugar, stint, strutils, json, strformat, algorithm, math
import ../../../backend/transactions as transactions
import ../../../backend/wallet as status_wallet
import ../../../backend/backend
import ../../../backend/eth
import ../ens/utils as ens_utils
@ -159,7 +159,7 @@ QtObject:
try:
# this may be improved (need to add some checkings) but due to removing `status-lib` dependencies, channges made
# in this go are as minimal as possible
let response = status_wallet.getPendingTransactions()
let response = backend.getPendingTransactions()
return response.result
except Exception as e:
let errDescription = e.msg

View File

@ -11,8 +11,7 @@ import dto
import ../../../app/core/eventemitter
import ../../../backend/accounts as status_go_accounts
import ../../../backend/tokens as status_go_tokens
import ../../../backend/wallet as status_go_wallet
import ../../../backend/backend as backend
import ../../../backend/eth as status_go_eth
import ../../../backend/cache
@ -154,7 +153,7 @@ proc getPrice*(self: Service, crypto: string, fiat: string): float64 =
var prices = initTable[string, float]()
try:
let response = status_go_wallet.fetchPrices(@[crypto], fiat)
let response = backend.fetchPrices(@[crypto], fiat)
for (symbol, value) in response.result.pairs:
prices[symbol] = value.getFloat
self.priceCache.set(cacheKey, $value.getFloat)
@ -177,7 +176,7 @@ proc fetchPrices(self: Service): Table[string, float] =
var prices = initTable[string, float]()
try:
let response = status_go_wallet.fetchPrices(symbols, currency)
let response = backend.fetchPrices(symbols, currency)
for (symbol, value) in response.result.pairs:
prices[symbol] = value.getFloat
@ -191,7 +190,7 @@ proc fetchBalances(self: Service, accounts: seq[string]): JsonNode =
let visibleTokens = self.tokenService.getVisibleTokens()
let tokens = visibleTokens.map(t => t.addressAsString())
let chainIds = visibleTokens.map(t => t.chainId)
return status_go_tokens.getBalances(chainIds, accounts, tokens).result
return backend.getTokensBalancesForChainIDs(chainIds, accounts, tokens).result
proc refreshBalances(self: Service) =
let prices = self.fetchPrices()
@ -251,8 +250,8 @@ proc addNewAccountToLocalStore(self: Service) =
proc generateNewAccount*(self: Service, password: string, accountName: string, color: string, emoji: string): string =
try:
discard status_go_wallet.generateAccount(
password,
discard backend.generateAccount(
hashPassword(password),
accountName,
color,
emoji)
@ -263,9 +262,9 @@ proc generateNewAccount*(self: Service, password: string, accountName: string, c
proc addAccountsFromPrivateKey*(self: Service, privateKey: string, password: string, accountName: string, color: string, emoji: string): string =
try:
discard status_go_wallet.addAccountWithPrivateKey(
discard backend.addAccountWithPrivateKey(
privateKey,
password,
hashPassword(password),
accountName,
color,
emoji
@ -277,9 +276,9 @@ proc addAccountsFromPrivateKey*(self: Service, privateKey: string, password: str
proc addAccountsFromSeed*(self: Service, mnemonic: string, password: string, accountName: string, color: string, emoji: string): string =
try:
discard status_go_wallet.addAccountWithMnemonic(
discard backend.addAccountWithMnemonic(
mnemonic,
password,
hashPassword(password),
accountName,
color,
emoji
@ -291,7 +290,7 @@ proc addAccountsFromSeed*(self: Service, mnemonic: string, password: string, acc
proc addWatchOnlyAccount*(self: Service, address: string, accountName: string, color: string, emoji: string): string =
try:
discard status_go_wallet.addAccountWatch(
discard backend.addAccountWatch(
address,
accountName,
color,

View File

@ -1,8 +0,0 @@
import json
import ./core
import response_type
export response_type
proc getWeb3ClientVersion*(): RpcResponse[JsonNode] {.raises: [Exception].} =
result = callPrivateRPC("web3_clientVersion")

View File

@ -1,27 +0,0 @@
import json
import core, utils
import response_type
export response_type
proc rpcActivityCenterNotifications*(cursorVal: JsonNode, limit: int): RpcResponse[JsonNode] {.raises: [Exception].} =
callPrivateRPC("activityCenterNotifications".prefix, %* [cursorVal, limit])
proc markAllActivityCenterNotificationsRead*(): RpcResponse[JsonNode] {.raises: [Exception].} =
callPrivateRPC("markAllActivityCenterNotificationsRead".prefix, %*[])
proc markActivityCenterNotificationsRead*(ids: seq[string]): RpcResponse[JsonNode] {.raises: [Exception].} =
callPrivateRPC("markActivityCenterNotificationsRead".prefix, %*[ids])
proc markActivityCenterNotificationsUnread*(ids: seq[string]): RpcResponse[JsonNode] {.raises: [Exception].} =
callPrivateRPC("markActivityCenterNotificationsUnread".prefix, %*[ids])
proc acceptActivityCenterNotifications*(ids: seq[string]): RpcResponse[JsonNode] {.raises: [Exception].} =
callPrivateRPC("acceptActivityCenterNotifications".prefix, %*[ids])
proc dismissActivityCenterNotifications*(ids: seq[string]): RpcResponse[JsonNode] {.raises: [Exception].} =
result = callPrivateRPC("dismissActivityCenterNotifications".prefix, %*[ids])
proc unreadActivityCenterNotificationsCount*(): RpcResponse[JsonNode] {.raises: [Exception].} =
callPrivateRPC("unreadActivityCenterNotificationsCount".prefix, %*[])

View File

@ -13,6 +13,22 @@ type
decimals* {.serializedFieldName("decimals").}: int
color* {.serializedFieldName("color").}: string
Bookmark* = ref object of RootObj
name* {.serializedFieldName("name").}: string
url* {.serializedFieldName("url").}: string
Permission* = ref object of RootObj
dapp* {.serializedFieldName("dapp").}: string
address* {.serializedFieldName("address").}: string
permissions* {.serializedFieldName("permissions").}: seq[string]
SavedAddress* = ref object of RootObj
name* {.serializedFieldName("name").}: string
address* {.serializedFieldName("address").}: string
rpc(clientVersion, "web3"):
discard
rpc(getCustomTokens, "wallet"):
discard
@ -22,3 +38,135 @@ rpc(deleteCustomTokenByChainID, "wallet"):
rpc(addCustomToken, "wallet"):
token: Token
rpc(getOpenseaCollectionsByOwner, "wallet"):
chainId: int
address: string
rpc(getOpenseaAssetsByOwnerAndCollection, "wallet"):
chainId: int
address: string
collectionSlug: string
limit: int
rpc(getEthereumChains, "wallet"):
onlyEnabled: bool
rpc(addEthereumChain, "wallet"):
payload: JsonNode
rpc(deleteEthereumChain, "wallet"):
payload: JsonNode
rpc(addSavedAddress, "wallet"):
savedAddress: SavedAddress
rpc(deleteSavedAddress, "wallet"):
address: string
rpc(getSavedAddresses, "wallet"):
discard
rpc(getTokens, "wallet"):
chainId: int
rpc(getTokensBalancesForChainIDs, "wallet"):
chainIds: seq[int]
accounts: seq[string]
tokens: seq[string]
rpc(getPendingTransactions, "wallet"):
discard
rpc(fetchPrices, "wallet"):
symbols: seq[string]
currency: string
rpc(generateAccount, "accounts"):
password: string
name: string
color: string
emoji: string
rpc(addAccountWithMnemonic, "accounts"):
mnemonic: string
password: string
name: string
color: string
emoji: string
rpc(addAccountWithPrivateKey, "accounts"):
privateKey: string
password: string
name: string
color: string
emoji: string
rpc(addAccountWatch, "accounts"):
address: string
name: string
color: string
emoji: string
rpc(activityCenterNotifications, "wakuext"):
cursorVal: JsonNode
limit: int
rpc(markAllActivityCenterNotificationsRead, "wakuext"):
discard
rpc(markActivityCenterNotificationsRead, "wakuext"):
ids: seq[string]
rpc(markActivityCenterNotificationsUnread, "wakuext"):
ids: seq[string]
rpc(acceptActivityCenterNotifications, "wakuext"):
ids: seq[string]
rpc(dismissActivityCenterNotifications, "wakuext"):
ids: seq[string]
rpc(unreadActivityCenterNotificationsCount, "wakuext"):
discard
rpc(getBookmarks, "browsers"):
discard
rpc(storeBookmark, "browsers"):
bookmark: Bookmark
rpc(updateBookmark, "browsers"):
originalUrl: string
bookmark: Bookmark
rpc(deleteBookmark, "browsers"):
url: string
rpc(setTenorAPIKey, "gif"):
key: string
rpc(fetchGifs, "gif"):
path: string
rpc(updateRecentGifs, "gif"):
recentGifs: JsonNode
rpc(updateFavoriteGifs, "gif"):
favoriteGifs: JsonNode
rpc(getRecentGifs, "gif"):
discard
rpc(getFavoriteGifs, "gif"):
discard
rpc(getDappPermissions, "permissions"):
discard
rpc(addDappPermissions, "permissions"):
permission: Permission
rpc(deleteDappPermissionsByNameAndAddress, "permissions"):
dapp: string
address: string

View File

@ -1,21 +0,0 @@
import json
import core
import response_type
export response_type
proc getBookmarks*(): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* []
result = callPrivateRPC("browsers_getBookmarks", payload)
proc storeBookmark*(url, name: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [{"url": url, "name": name}]
result = callPrivateRPC("browsers_storeBookmark", payload)
proc deleteBookmark*(url: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [url]
result = callPrivateRPC("browsers_deleteBookmark", payload)
proc updateBookmark*(originalUrl, newUrl, name: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [originalUrl, {"url": newUrl, "name": name}]
result = callPrivateRPC("browsers_updateBookmark", payload)

View File

@ -1,14 +0,0 @@
import json
import ./core, ./response_type
export response_type
proc getOpenseaCollections*(chainId: int, address: string): RpcResponse[JsonNode] =
let payload = %* [chainId, address]
return callPrivateRPC("wallet_getOpenseaCollectionsByOwner", payload)
proc getOpenseaAssets*(
chainId: int, address: string, collectionSlug: string, limit: int
): RpcResponse[JsonNode] =
let payload = %* [chainId, address, collectionSlug, limit]
return callPrivateRPC("wallet_getOpenseaAssetsByOwnerAndCollection", payload)

View File

@ -18,12 +18,23 @@ macro rpc*(rpcMethod: untyped, prefix: string, identDefs: untyped): untyped =
let fieldNameIdent = identDef[0]
let fieldName = fieldNameIdent.strval
if identDef[1][0].len == 0:
params.add(nnkIdentDefs.newTree(
ident(fieldName),
ident(identDef[1][0].strVal),
newNimNode(nnkEmpty)
))
if identDef[1][0].len == 2:
params.add(nnkIdentDefs.newTree(
ident(fieldName),
nnkBracketExpr.newTree(
ident(identDef[1][0][0].strVal),
ident(identDef[1][0][1].strVal)
),
newNimNode(nnkEmpty)
))
payload.add(newIdentNode(fieldName))

View File

@ -1,31 +0,0 @@
import json, chronicles, core
import response_type
export response_type
logScope:
topics = "rpc-gif"
proc setTenorAPIKey*(key: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [key]
result = core.callPrivateRPC("gif_setTenorAPIKey", payload)
proc fetchGifs*(path: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [path]
result = core.callPrivateRPC("gif_fetchGifs", payload)
proc updateRecentGifs*(recentGifs: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [recentGifs]
return core.callPrivateRPC("gif_updateRecentGifs", payload)
proc updateFavoriteGifs*(favoriteGifs: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [favoriteGifs]
return core.callPrivateRPC("gif_updateFavoriteGifs", payload)
proc getRecentGifs*(): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* []
return core.callPrivateRPC("gif_getRecentGifs", payload)
proc getFavoriteGifs*(): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* []
return core.callPrivateRPC("gif_getFavoriteGifs", payload)

View File

@ -1,12 +0,0 @@
import json
import ./core, ./response_type
proc getNetworks*(payload: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
core.callPrivateRPC("wallet_getEthereumChains", payload)
proc upsertNetwork*(payload: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
core.callPrivateRPC("wallet_addEthereumChain", payload)
proc deleteNetwork*(payload: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
core.callPrivateRPC("wallet_deleteEthereumChain", payload)

View File

@ -1,21 +0,0 @@
import json
import core
import response_type
export response_type
proc getDappPermissions*(): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* []
result = callPrivateRPC("permissions_getDappPermissions", payload)
proc addDappPermissions*(dapp: string, address: string, permissions: seq[string]): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %*[{
"dapp": dapp,
"address": address,
"permissions": permissions
}]
result = callPrivateRPC("permissions_addDappPermissions", payload)
proc deleteDappPermissions*(dapp: string, address: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [dapp, address]
result = callPrivateRPC("permissions_deleteDappPermissionsByNameAndAddress", payload)

View File

@ -1,16 +0,0 @@
import json
import ./core, ./response_type
export response_type
proc addSavedAddress*(name, address: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [{"name": name, "address": address}]
return callPrivateRPC("wallet_addSavedAddress", payload)
proc deleteSavedAddress*(address: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [address]
return callPrivateRPC("wallet_deleteSavedAddress", payload)
proc getSavedAddresses*(): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* []
return callPrivateRPC("wallet_getSavedAddresses", payload)

View File

@ -1,11 +0,0 @@
import json
import ./core, ./response_type
export response_type
proc getTokens*(chainId: int): RpcResponse[JsonNode] {.raises: [Exception].} =
return callPrivateRPC("wallet_getTokens", %* [chainId])
proc getBalances*(chainIds: seq[int], accounts: seq[string], tokens: seq[string]): RpcResponse[JsonNode] {.raises: [Exception].} =
return callPrivateRPC("wallet_getTokensBalancesForChainIDs", %* [chainIds, accounts, tokens])

View File

@ -1,32 +0,0 @@
import json, chronicles
import core, utils
import response_type
export response_type
logScope:
topics = "rpc-wallet"
proc getPendingTransactions*(): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* []
result = core.callPrivateRPC("wallet_getPendingTransactions", payload)
proc generateAccount*(password, name, color, emoji: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [hashPassword(password), name, color, emoji]
return core.callPrivateRPC("accounts_generateAccount", payload)
proc addAccountWithMnemonic*(mnemonic, password, name, color, emoji: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [mnemonic, hashPassword(password), name, color, emoji]
return core.callPrivateRPC("accounts_addAccountWithMnemonic", payload)
proc addAccountWithPrivateKey*(privateKey, password, name, color, emoji: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [privateKey, hashPassword(password), name, color, emoji]
return core.callPrivateRPC("accounts_addAccountWithPrivateKey", payload)
proc addAccountWatch*(address, name, color, emoji: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [address, name, color, emoji]
return core.callPrivateRPC("accounts_addAccountWatch", payload)
proc fetchPrices*(symbols: seq[string], currency: string): RpcResponse[JsonNode] {.raises: [Exception].} =
let payload = %* [symbols, currency]
return core.callPrivateRPC("wallet_fetchPrices", payload)