PrivateChatPersistentSystem.lua 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. local PrivateChatPersistentSystem = class("PrivateChatPersistentSystem")
  2. local timeId
  3. function PrivateChatPersistentSystem:ctor()
  4. self.privateChats = {}
  5. self.privateBriefInfos = {}
  6. timeId = ManagerContainer.LuaTimerMgr:AddTimer(10* 60 * 1000, -1, self, self.SavePrivateChats, nil)
  7. end
  8. function PrivateChatPersistentSystem:SavePrivateChats()
  9. local uid = ManagerContainer.DataMgr.UserData:GetUserId()
  10. local chats = ManagerContainer.DataMgr.ChatData:GetPrivateSortChatDatas()
  11. if chats == nil then
  12. return
  13. end
  14. self.privateChats = chats
  15. for k,v in pairs(chats) do
  16. if k <= 10 then
  17. self.privateBriefInfos[k] = v.fromData
  18. end
  19. local jsonStr = JSON:encode(v)
  20. UnityEngine.PlayerPrefs.SetString(tostring(uid).."PrivateChatData_"..tostring(v.fromData.uid), jsonStr)
  21. end
  22. local jsonStr = JSON:encode(self.privateBriefInfos)
  23. UnityEngine.PlayerPrefs.SetString(tostring(uid).."PrivateChatSortBriefInfos", jsonStr)
  24. end
  25. function PrivateChatPersistentSystem:GetSortPrivateInfos()
  26. local uid = ManagerContainer.DataMgr.UserData:GetUserId()
  27. if #self.privateBriefInfos > 0 then return self.privateBriefInfos end
  28. local jsonStr = UnityEngine.PlayerPrefs.GetString(tostring(uid).."PrivateChatSortBriefInfos")
  29. local infos = JSON:decode(jsonStr)
  30. if infos == nil then
  31. infos = {}
  32. end
  33. self.privateBriefInfos = infos
  34. return infos
  35. end
  36. function PrivateChatPersistentSystem:RemovePrivateBriefInfo(data)
  37. for k,v in pairs(self.privateBriefInfos) do
  38. if v.uid == data.uid then
  39. self.privateBriefInfos[k] = nil
  40. end
  41. end
  42. end
  43. function PrivateChatPersistentSystem:SetMapDatasAndSortDatas(maps, sortDatas)
  44. self.privateChats = maps
  45. for i = 1,#sortDatas do
  46. if i <= 10 and sortDatas[i] then
  47. self.privateBriefInfos[i] = sortDatas[i].fromData
  48. end
  49. end
  50. end
  51. function PrivateChatPersistentSystem:GetPrivatePersistentChatById(uid)
  52. local uid1 = ManagerContainer.DataMgr.UserData:GetUserId()
  53. if self.privateChats[uid] ~= nil then
  54. return self.privateChats[uid]
  55. end
  56. local jsonStr = UnityEngine.PlayerPrefs.GetString(tostring(uid1).."PrivateChatData_"..tostring(uid))
  57. local data = JSON:decode(jsonStr)
  58. return data
  59. end
  60. function PrivateChatPersistentSystem:Dispose()
  61. if timeId then
  62. ManagerContainer.LuaTimerMgr:RemoveTimer(timeId)
  63. timeId = nil
  64. end
  65. self:SavePrivateChats()
  66. self.privateChats = nil
  67. self.privateBriefInfos = nil
  68. end
  69. return PrivateChatPersistentSystem