1
0
forked from xomf/slabOS

Add eCash.lua

This commit is contained in:
xomf 2025-06-01 18:03:34 +00:00
parent 5f2c1c5b5c
commit cf03cb4e51

265
eCash.lua Normal file
View 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()