22#include <opendht/default_types.h>
28using GitPackBuilder = std::unique_ptr<git_packbuilder,
decltype(&git_packbuilder_free)>;
29using GitRepository = std::unique_ptr<git_repository,
decltype(&git_repository_free)>;
30using GitRevWalker = std::unique_ptr<git_revwalk,
decltype(&git_revwalk_free)>;
31using GitCommit = std::unique_ptr<git_commit,
decltype(&git_commit_free)>;
33 = std::unique_ptr<git_annotated_commit,
decltype(&git_annotated_commit_free)>;
34using GitIndex = std::unique_ptr<git_index,
decltype(&git_index_free)>;
35using GitTree = std::unique_ptr<git_tree,
decltype(&git_tree_free)>;
36using GitRemote = std::unique_ptr<git_remote,
decltype(&git_remote_free)>;
37using GitReference = std::unique_ptr<git_reference,
decltype(&git_reference_free)>;
38using GitSignature = std::unique_ptr<git_signature,
decltype(&git_signature_free)>;
39using GitObject = std::unique_ptr<git_object,
decltype(&git_object_free)>;
40using GitDiff = std::unique_ptr<git_diff,
decltype(&git_diff_free)>;
41using GitDiffStats = std::unique_ptr<git_diff_stats,
decltype(&git_diff_stats_free)>;
43 = std::unique_ptr<git_index_conflict_iterator,
decltype(&git_index_conflict_iterator_free)>;
110 std::map<std::string, std::string>
map()
const
145 static bool DISABLE_RESET;
155 const std::shared_ptr<JamiAccount>& account,
157 const std::string& otherMember =
"");
168 const std::shared_ptr<JamiAccount>& account,
169 const std::string& deviceId,
170 const std::string& conversationId,
171 std::function<
void(std::vector<ConversationCommit>)>&& checkCommitCb = {});
186 std::string addMember(
const std::string& uri);
195 bool fetch(
const std::string& remoteDeviceId);
203 std::string remoteHead(
const std::string& remoteDeviceId,
204 const std::string& branch =
"main")
const;
209 const std::string& id()
const;
217 std::string commitMessage(
const std::string& msg,
bool verifyDevice =
true);
219 std::vector<std::string> commitMessages(
const std::vector<std::string>& msgs);
227 std::string amend(
const std::string&
id,
const std::string& msg);
233 std::vector<ConversationCommit> log(
const LogOptions& options = {})
const;
237 const std::string& from =
"",
238 bool logIfNotFound =
true)
const;
239 std::optional<ConversationCommit> getCommit(
const std::string& commitId,
240 bool logIfNotFound =
true)
const;
255 std::pair<bool, std::string> merge(
const std::string& merge_id,
bool force =
false);
263 std::string mergeBase(
const std::string& from,
const std::string& to)
const;
272 std::string diffStats(
const std::string& newId,
const std::string& oldId =
"")
const;
279 static std::vector<std::string> changedFiles(std::string_view diffStats);
316 std::string voteKick(
const std::string& uri,
const std::string& type);
323 std::string voteUnban(
const std::string& uri,
const std::string_view type);
331 std::string resolveVote(
const std::string& uri,
332 const std::string_view type,
333 const std::string& voteType);
340 std::pair<std::vector<ConversationCommit>,
bool> validFetch(
341 const std::string& remoteDevice)
const;
342 bool validClone(std::function<
void(std::vector<ConversationCommit>)>&& checkCommitCb)
const;
348 void removeBranchWith(
const std::string& remoteDevice);
354 std::vector<std::string> getInitialMembers()
const;
360 std::vector<ConversationMember> members()
const;
367 std::map<std::string, std::vector<DeviceId>> devices(
bool ignoreExpired =
true)
const;
374 std::set<std::string> memberUris(std::string_view filter,
375 const std::set<MemberRole>& filteredRoles)
const;
380 void refreshMembers()
const;
389 void pinCertificates(
bool blocking =
false);
396 std::string uriFromDevice(
const std::string& deviceId)
const;
403 std::string updateInfos(
const std::map<std::string, std::string>& map);
409 std::map<std::string, std::string> infos()
const;
410 static std::map<std::string, std::string> infosFromVCard(
411 std::map<std::string, std::string>&& details);
416 std::vector<std::map<std::string, std::string>> convCommitsToMap(
417 const std::vector<ConversationCommit>& commits)
const;
418 std::optional<std::map<std::string, std::string>> convCommitToMap(
424 std::string getHead()
const;
429 std::unique_ptr<Impl> pimpl_;
This class gives access to the git repository that represents the conversation.
std::optional< std::string > linearizedParent(const std::string &commitId) const
Get parent via topological + date sort in branch main of a commit.
~ConversationRepository()
Ring Account is build on top of SIPAccountBase and uses DHT to handle call connectivity.
std::unique_ptr< git_object, decltype(&git_object_free)> GitObject
std::unique_ptr< git_commit, decltype(&git_commit_free)> GitCommit
std::unique_ptr< git_index_conflict_iterator, decltype(&git_index_conflict_iterator_free)> GitIndexConflictIterator
std::unique_ptr< git_repository, decltype(&git_repository_free)> GitRepository
std::unique_ptr< git_index, decltype(&git_index_free)> GitIndex
std::unique_ptr< git_signature, decltype(&git_signature_free)> GitSignature
std::unique_ptr< git_diff_stats, decltype(&git_diff_stats_free)> GitDiffStats
std::unique_ptr< git_packbuilder, decltype(&git_packbuilder_free)> GitPackBuilder
std::unique_ptr< git_revwalk, decltype(&git_revwalk_free)> GitRevWalker
std::unique_ptr< git_remote, decltype(&git_remote_free)> GitRemote
std::unique_ptr< git_tree, decltype(&git_tree_free)> GitTree
std::unique_ptr< git_reference, decltype(&git_reference_free)> GitReference
std::unique_ptr< git_diff, decltype(&git_diff_free)> GitDiff
std::unique_ptr< git_annotated_commit, decltype(&git_annotated_commit_free)> GitAnnotatedCommit
MSGPACK_ADD_ENUM(jami::MemberRole)
#define LIBJAMI_TEST_EXPORT
void emitSignal(Args... args)
std::function< bool(const std::string &, const GitAuthor &, ConversationCommit &)> PostConditionCb
constexpr auto EINVALIDMODE
constexpr auto EVALIDFETCH
constexpr auto EUNAUTHORIZED
std::function< CallbackResult(const std::string &, const GitAuthor &, const GitCommit &)> PreConditionCb
std::function< void(const std::set< std::string > &)> OnMembersChanged
std::vector< uint8_t > signed_content
std::vector< std::string > parents
std::vector< uint8_t > signature
std::string linearized_parent
std::map< std::string, std::string > map() const