Select Git revision
messagewebpage.h
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
conversation.cpp 99.17 KiB
/*
* Copyright (C) 2014-2024 Savoir-faire Linux Inc.
*
* Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
* Author: Sébastien Blin <sebastien.blin@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, see <https://www.gnu.org/licenses/>.
*/
#include "conversation.h"
#include "account_const.h"
#include "fileutils.h"
#include "jamiaccount.h"
#include "client/ring_signal.h"
#include <charconv>
#include <json/json.h>
#include <string_view>
#include <opendht/thread_pool.h>
#include <tuple>
#include <optional>
#include "swarm/swarm_manager.h"
#ifdef ENABLE_PLUGIN
#include "manager.h"
#include "plugin/jamipluginmanager.h"
#include "plugin/streamdata.h"
#endif
#include "jami/conversation_interface.h"
namespace jami {
static const char* const LAST_MODIFIED = "lastModified";
static const auto jsonBuilder = [] {
Json::StreamWriterBuilder wbuilder;
wbuilder["commentStyle"] = "None";
wbuilder["indentation"] = "";
return wbuilder;
}();
ConvInfo::ConvInfo(const Json::Value& json)
{
id = json[ConversationMapKeys::ID].asString();
created = json[ConversationMapKeys::CREATED].asLargestUInt();
removed = json[ConversationMapKeys::REMOVED].asLargestUInt();
erased = json[ConversationMapKeys::ERASED].asLargestUInt();
for (const auto& v : json[ConversationMapKeys::MEMBERS]) {
members.emplace(v["uri"].asString());
}
lastDisplayed = json[ConversationMapKeys::LAST_DISPLAYED].asString();
}
Json::Value
ConvInfo::toJson() const
{
Json::Value json;
json[ConversationMapKeys::ID] = id;
json[ConversationMapKeys::CREATED] = Json::Int64(created);
if (removed) {
json[ConversationMapKeys::REMOVED] = Json::Int64(removed);