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