Add eCash.lua
This commit is contained in:
parent
5f2c1c5b5c
commit
cf03cb4e51
265
eCash.lua
Normal file
265
eCash.lua
Normal file
|
@ -0,0 +1,265 @@
|
||||||
|
local basalt = require("../lib/basalt")
|
||||||
|
local libcredit = require("../lib/libcredit_mobile")
|
||||||
|
|
||||||
|
local username = ""
|
||||||
|
local main = basalt.getMainFrame()
|
||||||
|
|
||||||
|
function show_notification(status)
|
||||||
|
local notifFrame = main:addFrame()
|
||||||
|
:setSize(26,4)
|
||||||
|
:setBackground(colours.grey)
|
||||||
|
|
||||||
|
notifFrame:addButton()
|
||||||
|
:setText("Dismiss")
|
||||||
|
:setSize(26,1)
|
||||||
|
:setPosition(1,4)
|
||||||
|
:onClick(function()
|
||||||
|
notifFrame:destroy()
|
||||||
|
end)
|
||||||
|
|
||||||
|
local label = notifFrame:addLabel()
|
||||||
|
|
||||||
|
if status then
|
||||||
|
label:setText("Transaction successful")
|
||||||
|
:setPosition(4,2)
|
||||||
|
:setBackground(colours.lime)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
notifFrame:setBackground(colours.lime)
|
||||||
|
else
|
||||||
|
label:setText("Transaction unsuccessful")
|
||||||
|
:setPosition(3,2)
|
||||||
|
:setBackground(colours.red)
|
||||||
|
:setForeground(colours.white)
|
||||||
|
notifFrame:setBackground(colours.red)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local appFrame = main:addFrame()
|
||||||
|
:setVisible(false)
|
||||||
|
:setSize(26,19)
|
||||||
|
:setBackground(colours.white)
|
||||||
|
|
||||||
|
local requestFrame = main:addFrame()
|
||||||
|
:setVisible(false)
|
||||||
|
:setSize(26,19)
|
||||||
|
:setBackground(colours.white)
|
||||||
|
|
||||||
|
|
||||||
|
requestFrame:addLabel()
|
||||||
|
:setText("Username: ")
|
||||||
|
:setPosition(2, 6)
|
||||||
|
:setSize(10, 1)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
|
||||||
|
local request_user_input = requestFrame:addInput()
|
||||||
|
:setPosition(12, 6)
|
||||||
|
:setSize(12, 1)
|
||||||
|
:setBackground(colours.lightGrey)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
:setText("")
|
||||||
|
|
||||||
|
requestFrame:addLabel()
|
||||||
|
:setText("Amount: ")
|
||||||
|
:setPosition(2, 8)
|
||||||
|
:setSize(10, 1)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
|
||||||
|
local request_amount_input = requestFrame:addInput()
|
||||||
|
:setPosition(12, 8)
|
||||||
|
:setSize(12, 1)
|
||||||
|
:setBackground(colours.lightGrey)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
:setText("")
|
||||||
|
|
||||||
|
requestFrame:addButton()
|
||||||
|
:setText("Request")
|
||||||
|
:setPosition(7, 15)
|
||||||
|
:setSize(12, 3)
|
||||||
|
:setBackground(colours.blue)
|
||||||
|
:setForeground(colours.white)
|
||||||
|
:onClick(function(request_btn)
|
||||||
|
request_btn:setBackground(colours.black)
|
||||||
|
request_btn:setText("Pending")
|
||||||
|
local target_usr = request_user_input:getText()
|
||||||
|
local target_amount = request_amount_input:getText()
|
||||||
|
target_amount = tonumber(target_amount:match("^%d+$"))
|
||||||
|
|
||||||
|
if not target_amount or target_amount <= 0 then
|
||||||
|
show_notification(false)
|
||||||
|
request_btn:setBackground(colours.blue)
|
||||||
|
request_btn:setText("Request")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
libcredit.addTransaction(target_usr, target_amount, username .. " [ecash]", username, function(successful)
|
||||||
|
request_btn:setBackground(colours.blue)
|
||||||
|
request_btn:setText("Request")
|
||||||
|
show_notification(successful)
|
||||||
|
refresh_ui()
|
||||||
|
appFrame:setVisible(true)
|
||||||
|
requestFrame:setVisible(false)
|
||||||
|
|
||||||
|
if successful then
|
||||||
|
request_amount_input:setText("")
|
||||||
|
request_user_input:setText("")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local sendFrame = main:addFrame()
|
||||||
|
:setVisible(false)
|
||||||
|
:setSize(26,19)
|
||||||
|
:setBackground(colours.white)
|
||||||
|
|
||||||
|
sendFrame:addLabel()
|
||||||
|
:setText("Recipient: ")
|
||||||
|
:setPosition(2, 6)
|
||||||
|
:setSize(10, 1)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
|
||||||
|
local send_user_input = sendFrame:addInput()
|
||||||
|
:setPosition(12, 6)
|
||||||
|
:setSize(12, 1)
|
||||||
|
:setBackground(colours.lightGrey)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
:setText("")
|
||||||
|
|
||||||
|
sendFrame:addLabel()
|
||||||
|
:setText("Amount: ")
|
||||||
|
:setPosition(2, 8)
|
||||||
|
:setSize(10, 1)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
|
||||||
|
local send_amount_input = sendFrame:addInput()
|
||||||
|
:setPosition(12, 8)
|
||||||
|
:setSize(12, 1)
|
||||||
|
:setBackground(colours.lightGrey)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
:setText("")
|
||||||
|
|
||||||
|
sendFrame:addButton()
|
||||||
|
:setText("Send")
|
||||||
|
:setPosition(7, 15)
|
||||||
|
:setSize(12, 3)
|
||||||
|
:setBackground(colours.blue)
|
||||||
|
:setForeground(colours.white)
|
||||||
|
:onClick(function(send_btn)
|
||||||
|
send_btn:setBackground(colours.black)
|
||||||
|
send_btn:setText("Pending")
|
||||||
|
local target_usr = send_user_input:getText()
|
||||||
|
local target_amount = send_amount_input:getText()
|
||||||
|
target_amount = tonumber(target_amount:match("^%d+$"))
|
||||||
|
|
||||||
|
if not target_amount or target_amount <= 0 then
|
||||||
|
show_notification(false)
|
||||||
|
send_btn:setBackground(colours.blue)
|
||||||
|
send_btn:setText("Send")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
libcredit.addTransaction(username, target_amount, target_usr .. " [ecash]", target_usr, function(successful)
|
||||||
|
send_btn:setBackground(colours.blue)
|
||||||
|
send_btn:setText("Send")
|
||||||
|
show_notification(successful)
|
||||||
|
refresh_ui()
|
||||||
|
appFrame:setVisible(true)
|
||||||
|
sendFrame:setVisible(false)
|
||||||
|
|
||||||
|
if successful then
|
||||||
|
send_amount_input:setText("")
|
||||||
|
send_user_input:setText("")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local cash_label = appFrame:addBigFont()
|
||||||
|
:setText("__G")
|
||||||
|
:setPosition(6,2)
|
||||||
|
:setBackground(colours.white)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
|
||||||
|
local request_cash = appFrame:addButton()
|
||||||
|
:setText("Request")
|
||||||
|
:setPosition(8,10)
|
||||||
|
:setSize(10, 3)
|
||||||
|
:setBackground(colours.green)
|
||||||
|
:setForeground(colours.white)
|
||||||
|
:onClick(function()
|
||||||
|
requestFrame:setVisible(true)
|
||||||
|
appFrame:setVisible(false)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local send_cash = appFrame:addButton()
|
||||||
|
:setText("Send")
|
||||||
|
:setPosition(8,15)
|
||||||
|
:setSize(10, 3)
|
||||||
|
:setBackground(colours.orange)
|
||||||
|
:setForeground(colours.white)
|
||||||
|
:onClick(function()
|
||||||
|
sendFrame:setVisible(true)
|
||||||
|
appFrame:setVisible(false)
|
||||||
|
end)
|
||||||
|
|
||||||
|
function refresh_ui()
|
||||||
|
libcredit.getCredit(username, function(amount)
|
||||||
|
local amount_str = amount .. "G"
|
||||||
|
cash_label:setText(amount_str)
|
||||||
|
|
||||||
|
if #amount_str < 6 then
|
||||||
|
cash_label:setPosition(6 - (#amount_str / 4) - 1,2)
|
||||||
|
else
|
||||||
|
cash_label:setSize(26,4)
|
||||||
|
cash_label:setPosition(1,2)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local login = main:addFrame()
|
||||||
|
:setBackground(colours.grey)
|
||||||
|
:setPosition(1,1)
|
||||||
|
:setSize(26,19)
|
||||||
|
|
||||||
|
login:addLabel()
|
||||||
|
:setText("Username: ")
|
||||||
|
:setPosition(2, 3)
|
||||||
|
:setSize(10, 1)
|
||||||
|
:setForeground(colours.white)
|
||||||
|
|
||||||
|
local usernameInput = login:addInput()
|
||||||
|
:setPosition(12, 3)
|
||||||
|
:setSize(12, 1)
|
||||||
|
:setBackground(colours.lightGrey)
|
||||||
|
:setForeground(colours.black)
|
||||||
|
:setText("")
|
||||||
|
|
||||||
|
local loginButton = login:addButton()
|
||||||
|
:setText("Login")
|
||||||
|
:setPosition(9, 15)
|
||||||
|
:setSize(8, 3)
|
||||||
|
:setBackground(colours.blue)
|
||||||
|
:setForeground(colours.white)
|
||||||
|
:onClick(function()
|
||||||
|
|
||||||
|
|
||||||
|
username = usernameInput:getText()
|
||||||
|
|
||||||
|
if not fs.exists("/.usrcache") then
|
||||||
|
local file = fs.open("/.usrcache","w")
|
||||||
|
file.write(username)
|
||||||
|
file.close()
|
||||||
|
end
|
||||||
|
|
||||||
|
login:setVisible(false)
|
||||||
|
appFrame:setVisible(true)
|
||||||
|
refresh_ui()
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
if fs.exists("/.usrcache") then
|
||||||
|
local file = fs.open("/.usrcache","r")
|
||||||
|
local username = file.readLine()
|
||||||
|
file.close()
|
||||||
|
usernameInput:setText(username)
|
||||||
|
end
|
||||||
|
|
||||||
|
basalt.run()
|
Loading…
Reference in New Issue
Block a user