/*
 Copyright (C) 2022 Savoir-faire Linux Inc. *
 Author: Alireza Toghiani Khorasgani alireza.toghiani@savoirfairelinux.com *
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 3 of the License, or
 (at your option) any later version. *
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 GNU General Public License for more details. *
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */

import Foundation

struct EventData {
    var accountId, jamiId, conversationId, content, groupTitle: String

    init(accountId: String = "", jamiId: String = "", conversationId: String = "", content: String = "", groupTitle: String = "") {
        self.accountId = accountId
        self.jamiId = jamiId
        self.conversationId = conversationId
        self.content = content
        self.groupTitle = groupTitle
    }
}
