-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProtonSendAtomicAsset.gd
109 lines (86 loc) · 3.09 KB
/
ProtonSendAtomicAsset.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
extends Node
func _on_Button_Scene_pressed():
get_tree().change_scene("res://ProtonSendTX.tscn")
func _on_Button_Login_pressed():
# Get the `window.ProtonWebSDK` JavaScript object.
var endpoints = JavaScript.create_object("Array", 1)
endpoints[0] = "https://proton.greymass.com"
var transportOptions = JavaScript.create_object("Object")
transportOptions.requestAccount = "glbdex"
var linkOptions = JavaScript.create_object("Object")
linkOptions.endpoints = endpoints
var options = JavaScript.create_object("Object")
options.linkOptions = linkOptions
options.transportOptions = transportOptions
JavaScript.create_object("ProtonWebSDK", options).then(_permission_callback)
# Here create a reference to the functions (below).
# This reference will be kept until the node is freed.
var _permission_callback = JavaScript.create_callback(self, "_on_permissions")
var _accountdata_callback = JavaScript.create_callback(self, "_on_accountdata")
var _txsuccess_callback = JavaScript.create_callback(self, "_on_txsuccess")
var sessiondata
func _on_permissions(args):
var obj = args[0]
var link = obj.link
var session = obj.session
print(session.auth.actor)
getAccountData(link, session)
sessiondata = session
# transfer(session)
func getAccountData(link, session):
var params = JavaScript.create_object("Object")
params.code = "eosio.proton"
params.scope = "eosio.proton"
params.table = "usersinfo"
params.key_type = "i64"
params.lower_bound = session.auth.actor
params.upper_bound = session.auth.actor
params.index_position = 1
params.limit = 1
link.client.get_table_rows(params).then(_accountdata_callback)
func _on_accountdata(args):
var rows = args[0].rows
var row = rows[0]
print("Acc: ", row.acc)
print("Name: ", row.name)
print("Avatar: ", row.avatar)
$Account.text = row.acc
$Name.text = row.name
$Avatar.text = row.avatar
func transfer():
var session = sessiondata
var asset_ids = JavaScript.create_object("Array", 1)
asset_ids[0] = $AssetID.text
var data = JavaScript.create_object("Object")
data.from = session.auth.actor
data.to = $To.text
data.asset_ids = asset_ids
data.memo = $Memo.text
var authorization = JavaScript.create_object("Array", 1)
authorization[0] = session.auth
#Transfer Token
# var action = JavaScript.create_object("Object")
# action.account = "eosio.token"
# action.name = "transfer"
# action.data = data
# action.authorization = authorization
#Transfer Atomic Asset
var action = JavaScript.create_object("Object")
action.account = "atomicassets"
action.name = "transfer"
action.data = data
action.authorization = authorization
var actions = JavaScript.create_object("Array", 1)
actions[0] = action
var transactOptions = JavaScript.create_object("Object")
transactOptions.actions = actions
var txOptions = JavaScript.create_object("Object")
txOptions.broadcast = true
session.transact(transactOptions, txOptions).then(_txsuccess_callback)
func _on_txsuccess(args):
var tx_id = args[0].processed.id
print(tx_id)
setTXResponse(tx_id)
$ProtonAnimated/AnimationPlayer.play("Animation")
func setTXResponse(tx_id):
$TX_ID.text = str(tx_id)