remove logic from ens manager view
This commit is contained in:
parent
80456eaa10
commit
01dc488870
|
@ -28,29 +28,7 @@ type
|
||||||
const validateTask: Task = proc(argEncoded: string) {.gcsafe, nimcall.} =
|
const validateTask: Task = proc(argEncoded: string) {.gcsafe, nimcall.} =
|
||||||
let
|
let
|
||||||
arg = decode[ValidateTaskArg](argEncoded)
|
arg = decode[ValidateTaskArg](argEncoded)
|
||||||
username = arg.ens & (if(arg.isStatus): status_ens.domain else: "")
|
var output = status_ens.validateEnsName(arg.ens, arg.isStatus, arg.usernames)
|
||||||
var output = ""
|
|
||||||
if arg.usernames.filter(proc(x: string):bool = x == username).len > 0:
|
|
||||||
output = "already-connected"
|
|
||||||
else:
|
|
||||||
let ownerAddr = status_ens.owner(username)
|
|
||||||
if ownerAddr == "" and arg.isStatus:
|
|
||||||
output = "available"
|
|
||||||
else:
|
|
||||||
let userPubKey = status_settings.getSetting[string](Setting.PublicKey, "0x0")
|
|
||||||
let userWallet = status_wallet.getWalletAccounts()[0].address
|
|
||||||
let pubkey = status_ens.pubkey(arg.ens)
|
|
||||||
if ownerAddr != "":
|
|
||||||
if pubkey == "" and ownerAddr == userWallet:
|
|
||||||
output = "owned" # "Continuing will connect this username with your chat key."
|
|
||||||
elif pubkey == userPubkey:
|
|
||||||
output = "connected"
|
|
||||||
elif ownerAddr == userWallet:
|
|
||||||
output = "connected-different-key" # "Continuing will require a transaction to connect the username with your current chat key.",
|
|
||||||
else:
|
|
||||||
output = "taken"
|
|
||||||
else:
|
|
||||||
output = "taken"
|
|
||||||
arg.finish(output)
|
arg.finish(output)
|
||||||
|
|
||||||
proc validate[T](self: T, slot: string, ens: string, isStatus: bool, usernames: seq[string]) =
|
proc validate[T](self: T, slot: string, ens: string, isStatus: bool, usernames: seq[string]) =
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import sequtils
|
||||||
import strutils
|
import strutils
|
||||||
import profile/profile
|
import profile/profile
|
||||||
import nimcrypto
|
import nimcrypto
|
||||||
|
@ -17,6 +18,9 @@ import web3/[ethtypes, conversions], stew/byteutils, stint
|
||||||
import libstatus/eth/contracts
|
import libstatus/eth/contracts
|
||||||
import chronicles, libp2p/[multihash, multicodec, cid]
|
import chronicles, libp2p/[multihash, multicodec, cid]
|
||||||
|
|
||||||
|
import ./settings as settings
|
||||||
|
import ./wallet as status_wallet
|
||||||
|
|
||||||
const domain* = ".stateofus.eth"
|
const domain* = ".stateofus.eth"
|
||||||
|
|
||||||
proc userName*(ensName: string, removeSuffix: bool = false): string =
|
proc userName*(ensName: string, removeSuffix: bool = false): string =
|
||||||
|
@ -307,3 +311,28 @@ proc decodeENSContentHash*(value: string): tuple[ensType: ENSType, output: strin
|
||||||
return (ENSType.IPNS, parseHexStr(value[12..value.len-1]))
|
return (ENSType.IPNS, parseHexStr(value[12..value.len-1]))
|
||||||
|
|
||||||
return (ENSType.UNKNOWN, "")
|
return (ENSType.UNKNOWN, "")
|
||||||
|
|
||||||
|
proc validateEnsName*(ens: string, isStatus: bool, usernames: seq[string]): string =
|
||||||
|
var username = ens & (if(isStatus): domain else: "")
|
||||||
|
result = ""
|
||||||
|
if usernames.filter(proc(x: string):bool = x == username).len > 0:
|
||||||
|
result = "already-connected"
|
||||||
|
else:
|
||||||
|
let ownerAddr = owner(username)
|
||||||
|
if ownerAddr == "" and isStatus:
|
||||||
|
result = "available"
|
||||||
|
else:
|
||||||
|
let userPubKey = getSetting[string](settings, Setting.PublicKey, "0x0")
|
||||||
|
let userWallet = status_wallet.getWalletAccounts()[0].address
|
||||||
|
let ens_pubkey = pubkey(ens)
|
||||||
|
if ownerAddr != "":
|
||||||
|
if ens_pubkey == "" and ownerAddr == userWallet:
|
||||||
|
result = "owned" # "Continuing will connect this username with your chat key."
|
||||||
|
elif ens_pubkey == userPubkey:
|
||||||
|
result = "connected"
|
||||||
|
elif ownerAddr == userWallet:
|
||||||
|
result = "connected-different-key" # "Continuing will require a transaction to connect the username with your current chat key.",
|
||||||
|
else:
|
||||||
|
result = "taken"
|
||||||
|
else:
|
||||||
|
result = "taken"
|
||||||
|
|
|
@ -27,6 +27,12 @@ proc getSetting*[T](self: SettingsModel, name: Setting, defaultValue: T, useCach
|
||||||
proc getSetting*[T](self: SettingsModel, name: Setting, useCached: bool = true): T =
|
proc getSetting*[T](self: SettingsModel, name: Setting, useCached: bool = true): T =
|
||||||
result = status_settings.getSetting[T](name, useCached)
|
result = status_settings.getSetting[T](name, useCached)
|
||||||
|
|
||||||
|
proc getSetting*[T](name: Setting, defaultValue: T, useCached: bool = true): T =
|
||||||
|
result = status_settings.getSetting(name, defaultValue, useCached)
|
||||||
|
|
||||||
|
proc getSetting*[T](name: Setting, useCached: bool = true): T =
|
||||||
|
result = status_settings.getSetting[T](name, useCached)
|
||||||
|
|
||||||
proc getCurrentNetworkDetails*(self: SettingsModel): LibStatusTypes.NetworkDetails =
|
proc getCurrentNetworkDetails*(self: SettingsModel): LibStatusTypes.NetworkDetails =
|
||||||
result = status_settings.getCurrentNetworkDetails()
|
result = status_settings.getCurrentNetworkDetails()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue