| 
73
 | 
     1 local Luan = require "luan:Luan.luan"
 | 
| 
 | 
     2 local error = Luan.error
 | 
| 
 | 
     3 local ipairs = Luan.ipairs or error()
 | 
| 
 | 
     4 local to_string = Luan.to_string or error()
 | 
| 
 | 
     5 local Time = require "luan:Time.luan"
 | 
| 
 | 
     6 local time_now = Time.now or error()
 | 
| 
 | 
     7 local Thread = require "luan:Thread.luan"
 | 
| 
 | 
     8 local User = require "site:/lib/User.luan"
 | 
| 
 | 
     9 
 | 
| 
 | 
    10 
 | 
| 
 | 
    11 local Online = {}
 | 
| 
 | 
    12 
 | 
| 
 | 
    13 local glob = Thread.global_map("online")
 | 
| 
 | 
    14 
 | 
| 
 | 
    15 function Online.set(user)
 | 
| 
 | 
    16 	glob[user.id] = time_now()
 | 
| 
 | 
    17 end
 | 
| 
 | 
    18 
 | 
| 
 | 
    19 function Online.get(user)
 | 
| 
 | 
    20 	local online = {}
 | 
| 
 | 
    21 	local ids = user.chatting_with_ids()
 | 
| 
 | 
    22 	ids[#ids+1] = user.id
 | 
| 
 | 
    23 	for _, user_id in ipairs(ids) do
 | 
| 
 | 
    24 		online[to_string(user_id)] = glob[user_id]
 | 
| 
 | 
    25 	end
 | 
| 
 | 
    26 	return online
 | 
| 
 | 
    27 end
 | 
| 
 | 
    28 
 | 
| 
88
 | 
    29 function Online.get_user(user)
 | 
| 
 | 
    30 	return glob[user.id]
 | 
| 
 | 
    31 end
 | 
| 
 | 
    32 
 | 
| 
73
 | 
    33 return Online
 |