forked from xomf/slabOS
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