add gs
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
local CorePackages = game:GetService("CorePackages")
|
||||
|
||||
local User = require(CorePackages.AppTempCommon.LuaApp.Models.User)
|
||||
local AddUsers = require(CorePackages.AppTempCommon.LuaApp.Actions.AddUsers)
|
||||
local SetFriendCount = require(CorePackages.AppTempCommon.LuaApp.Actions.SetFriendCount)
|
||||
|
||||
return function(users)
|
||||
return function(store)
|
||||
local friendCountOffset = 0
|
||||
local updatedUsers = {}
|
||||
|
||||
for _, user in pairs(users) do
|
||||
local needsUpdate = false
|
||||
local userId = user.id
|
||||
local isFriend = user.isFriend
|
||||
local offset = 0
|
||||
|
||||
assert(typeof(isFriend) == "boolean")
|
||||
|
||||
local userInStore = store:getState().Users[userId]
|
||||
if userInStore then
|
||||
-- Mark user with needsUpdate if any of the field is different
|
||||
-- from the existing user information in Store.
|
||||
if not User.compare(userInStore, user) then
|
||||
needsUpdate = true
|
||||
if userInStore.isFriend ~= isFriend then
|
||||
offset = isFriend and 1 or -1
|
||||
end
|
||||
end
|
||||
else
|
||||
needsUpdate = true
|
||||
offset = isFriend and 1 or 0
|
||||
end
|
||||
|
||||
if needsUpdate then
|
||||
friendCountOffset = friendCountOffset + offset
|
||||
updatedUsers[userId] = user
|
||||
end
|
||||
end
|
||||
|
||||
if next(updatedUsers) then
|
||||
store:dispatch(AddUsers(updatedUsers))
|
||||
end
|
||||
|
||||
if friendCountOffset ~= 0 then
|
||||
local currentFriendCount = store:getState().FriendCount
|
||||
store:dispatch(SetFriendCount(currentFriendCount + friendCountOffset))
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user