add gs
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
local CoreGui = game:GetService("CoreGui")
|
||||
local Players = game:GetService("Players")
|
||||
|
||||
local Modules = CoreGui.RobloxGui.Modules
|
||||
local LuaApp = Modules.LuaApp
|
||||
local LuaChat = Modules.LuaChat
|
||||
|
||||
local MockId = require(LuaApp.MockId)
|
||||
local DateTime = require(LuaChat.DateTime)
|
||||
|
||||
local FFlagEnableChatMessageType = settings():GetFFlag("EnableChatMessageType")
|
||||
|
||||
local Message = {}
|
||||
if FFlagEnableChatMessageType then
|
||||
Message = {
|
||||
MessageTypes = {
|
||||
PlainText = 'PlainText'
|
||||
}
|
||||
}
|
||||
Message.__index = Message
|
||||
end
|
||||
|
||||
function Message.new()
|
||||
local self = {}
|
||||
|
||||
if FFlagEnableChatMessageType then
|
||||
setmetatable(self, Message)
|
||||
end
|
||||
return self
|
||||
end
|
||||
|
||||
function Message.mock(mergeTable)
|
||||
local self = Message.new()
|
||||
|
||||
self.id = MockId()
|
||||
self.senderTargetId = MockId()
|
||||
self.conversationId = MockId()
|
||||
self.senderType = "MESSAGE SENDERTYPE"
|
||||
self.content = "MESSAGE CONTENT"
|
||||
self.read = false
|
||||
self.sent = DateTime.now()
|
||||
self.previousMessageId = nil
|
||||
self.filteredForReceivers = false
|
||||
|
||||
if mergeTable ~= nil then
|
||||
for key, value in pairs(mergeTable) do
|
||||
self[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function Message.fromWeb(data, conversationId, previousMessageId)
|
||||
if FFlagEnableChatMessageType then
|
||||
if not Message.DoRequiredFieldsPresent(data) then
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
local self = Message.new()
|
||||
self.id = data.id
|
||||
self.senderTargetId = tostring(data.senderTargetId)
|
||||
self.senderType = data.senderType
|
||||
self.read = data.read
|
||||
self.sent = DateTime.fromIsoDate(data.sent)
|
||||
self.conversationId = tostring(conversationId)
|
||||
self.previousMessageId = previousMessageId
|
||||
self.filteredForReceivers = false
|
||||
|
||||
if FFlagEnableChatMessageType then
|
||||
self:parseContent(data)
|
||||
else
|
||||
self.content = data.content
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function Message.fromSentWeb(data, conversationId, previousMessageId)
|
||||
if FFlagEnableChatMessageType then
|
||||
if not Message.DoRequiredFieldsPresent(data) then
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
local self = Message.new()
|
||||
self.id = data.messageId
|
||||
self.senderTargetId = tostring(Players.LocalPlayer.UserId)
|
||||
self.senderType = "User"
|
||||
self.read = true
|
||||
self.sent = DateTime.fromIsoDate(data.sent)
|
||||
self.conversationId = tostring(conversationId)
|
||||
self.previousMessageId = previousMessageId
|
||||
self.filteredForReceivers = data.filteredForReceivers
|
||||
|
||||
if FFlagEnableChatMessageType then
|
||||
self:parseContent(data)
|
||||
else
|
||||
self.content = data.content
|
||||
end
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
if FFlagEnableChatMessageType then
|
||||
function Message.DoRequiredFieldsPresent(data)
|
||||
return data and data.id and data.messageType and data.senderTargetId and data.sent
|
||||
end
|
||||
|
||||
function Message:parseContent(data)
|
||||
self.messageType = data.messageType
|
||||
if data.messageType == Message.MessageTypes.PlainText then
|
||||
self.content = data.content
|
||||
else
|
||||
-- UI will decide on which placeholder to use
|
||||
self.content = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return Message
|
||||
Reference in New Issue
Block a user