234 lines
5.9 KiB
Lua
234 lines
5.9 KiB
Lua
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()
|
||
|