rpc.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. rpc.js
  3. This script do the following stuffs
  4. - set a user online status
  5. - get the latest message id (if channel id is given)
  6. - set a user state (if channel id is given)
  7. Required paramters:
  8. channel (optional): Channel ID
  9. userstate (optional): {typing / standby / uploading}
  10. */
  11. var username = USERNAME;
  12. newDBTableIfNotExists("message")
  13. //Set this user last online time
  14. writeDBItem("message", "online_status/" + username, Math.floor(Date.now() / 1000));
  15. //Check if channel id is defined
  16. if (typeof(channel) != "undefined" && channel != ""){
  17. //In channel. Get the ID out of this user pair
  18. var channelID = channel + "_" + username;
  19. if (username < channel){
  20. channelID = username + "_" + channel
  21. }
  22. //Get opposite online time if exists
  23. var oppositeOnlineTime = readDBItem("message", "online_status/" + channel)
  24. if (oppositeOnlineTime != ""){
  25. oppositeOnlineTime = parseInt(oppositeOnlineTime);
  26. }else{
  27. oppositeOnlineTime = -1;
  28. }
  29. //Prepare the data structure to be returned
  30. var resultingStruct = {
  31. latestMessageId: "",
  32. oppositeLastOnlineTime: oppositeOnlineTime,
  33. oppositeStatus: ""
  34. };
  35. //Check the latest message id
  36. var latestMessage = readDBItem("message", "latest_id/" + channelID);
  37. var message = [];
  38. if (latestMessage == ""){
  39. //No message
  40. }else{
  41. resultingStruct.latestMessageId = latestMessage;
  42. }
  43. sendJSONResp(resultingStruct);
  44. }else if (typeof(group) != "undefined" && group != ""){
  45. //Group function, to be developed
  46. }else{
  47. //Homepage. Show all chat updates
  48. }