Add a setting to choose if the user want 2nd calls to be hanged up
while already in one auto-answered.
Change-Id: I2149c057827ee9bf678e97ba64c31c8952aaed0c
Added a flag (0 for avatar path, 1 for base64 image) to enhance API flexibility, allowing avatar support without local image storage. This change accommodates clients, such as iOS, that do not save images locally.
Change-Id: I914c14d9b38b97d1126bd2d1de4523d987e422ee
This new API integrates vCard logic within the daemon, allowing clients to only provide a path. It sends the updated data directly to other connected peers to synchronize information (cached connections). The API can also be used to remove a displayName or avatar, meaning you must always supply either a displayName or an avatar to use it.
Change-Id: I6d9bdb29ce86ce3721911cf5cf7eb836ef976110
These signals help the client know when a user updated his profile and are indeed needed in the expressJs server
Change-Id: Ib82d3bf477dbb77a3d86f79c6f9aa12a9b30dfd3
Now a conference can start without any call (this avoid to attach
a call without peer to create a conference).
Path is now clearer for a call creation:
+ If we receive a call, we attach it to the conference
+ Else we do not create any call and just attach the host.
Next step is to be able to attach a host in audio only without weird
tricks and group addParticipant/bindParticipant
GitLab: #953
Change-Id: I13785a5525e041c37fb62c0c9f355e9371f1e4ad
The goal of this patch is to allow the clients to get a better
sent/read status from the daemon.
API doesn't change much, but internal logic got some changes. For the
client:
+ SwarmMessage now contains a map<string,int> status where string is the
uri of a member, int is the status (0 = sending, 1 = sent, 2 = read)
+ cancelMessage is removed as not used anymore (sendMessage with flag=1
will edit a message)
+ getMessageStatus is removed as the status is sent in the SwarmMessage
+ accountMessageStatusChanged is now emitted for swarm messages when a
fetch or setDisplay occurs. Client must handle this signal correctly.
+ Previous code to manage last displayed, fetched status is now merged
with message status
+ Sync info is done when the sync is opened, else status are not updated
correctly
GitLab: #948
Change-Id: I60763d4de8a995c6fc9f6df6434e266211f8dc2f
This heavily changes the API for the client. The goal here is
to move the logic to construct the history to show in the daemon
and not the client. This has several advantages:
1. Logic is common across every platforms, so bugs should not be
platform-specific
2. Client got less logic
3. Signal are simplified, if an edition comes, "MessageUpdated"
will be triggered instead MessageReceived.
4. Some tests are added for linearizing the history.
5. Search on edition is fixed.
Tests got heavily re-written, but the content didn't change (2 tests
are added, the rest is simplification).
GitLab: #831
Change-Id: Ie7c81077067e9e49db1dd396829c9225c0512c16
This allow to keep different status between accounts, remove
certificates when the account is removed. And this avoid
to use the same certificate store/trust store shared across
accounts.
Change-Id: Iba5df5c0768cefe7a861cab689ffb8ff770d8475
This patch introduces the ability to start calls and extends the
usage of rendezvous points to swarm with multiple participants.
When starting a call in a swarm with multiple participats, one device
will work as the host of the conference, and the caller will
immediately start the call alone.
Other peers will receive a commit and a notification to be able
to join the active call. To join a call, users needs to call
rdv:uri/device/convId/confId to be added (if authorized) to the conf.
There are some majors differences in the process.
First, every conversation will be able to decide a default host
for conferences. This still needs some design and will be
introduced in another patch. For now, the caller is the host.
Then, because all members of the call may not be interested to join
a call, or they may want to get several calls at the same time, the
system must be able to manage more than one active calls (e.g. a
company with multiple projects can do several standups at the same
time).
Finally, in the conversation, two commits will be generated to be
able to know what active calls are available. The first is
announcing that a conference started, the second announces that
the conference stopped (the host closed the call).
However, this introduces a difficulty. The host may crash and not
commit the end of the call in time. In this case, hostedCalls are
stored in a file and the conversation is updated during the init
of the daemon.
Change-Id: I081a4920edb3773bbed884ae50f34e476ad42094
Documentation: https://docs.jami.net/technical/swarm.html#call-in-swarm
GitLab: #312
Adding option to configure noise suppression to use either native noise suppression (where supported), or noise suppression from the audio processor.
Change-Id: Iecc7f7e7997d0b75a88bcbadf0f1be9f1710676e
It's not possible to replace the DRing namespace for jami because of conflicts
with namespaces and classes defined under the jami namespace. Thus, use libjami
as the namespace.
Script to reproduce:
rg -l DRing | sort | uniq | awk '$0 !~ /NEWS/' | xargs sed -i -e 's|DRing|libjami|g'
rg -l DRING_ | sort | uniq | xargs sed -i -e 's|DRING_|LIBJAMI_|g'
sed -i -e 's|dring|jami|g' src/jami/CMakeLists.txt
sed -i -e 's|dring|jami|g' src/jami/def.h
Change-Id: I80e8c8b58a7586527a016bbef850bab07869c473
This store user's preferences per conversation into
conversation_data/<convId>/preferences
In this way, the daemon is able to sync this file across devices
and remove preferences at the same time we remove the conversation.
For now, only support "color" and "ignoreNotifications"
The preferences are synced via partial SyncMsg sent across devices.
Change-Id: I8fe74cc06733ad61d45d721e0264b1941d4cf122
This gives to clients the ability to perform search for messages
with several parameters (account's id, conversation's id, author,
period, max number).
(To discuss) This patch introduces the search API, and a signal
(MessagesFound) to return a result.
GitLab: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1382
Change-Id: Ibc4665449fa0da71a015d1d18d6d0d3209331d43
This patch makes the daemon able to negotiate more than 2 medias
for a call. Basically, this patch includes some major changes:
1. reportMediaNegotiationStatus is also called for conference, so
the client is able to update the mediaList of the conference to
use it later if it needs to change the medias. And the medias
can be retrieven with currentMediaList
2. The conference object correctly updates the video mixer on
media changes, and video inputs are restarted if removed then
re-added.
3. Because previous versions of the daemon only supports two medias,
only negotiate more medias with compatible peers. If the daemon is
not compatible, the medias will not be negotiated anyway.
https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429
Change-Id: I55701d9e6e53b05c9a58adad4e8ea90303e6b9e7
The current design got some limitations. It's not possible to
control informations per shared media. This means that we can't
got several active sinks for example.
The goal of this patch here is to update the conferences orders
to be able to control the state of each sink individually and for
the client to be able to handle conferences with accounts connected
via several devices with several medias per devices.
So each orders is sent with a different level (account/device/media)
For example, we will be able to send a moderator order for an account,
to hangup a device or to set a media active.
To support those orders, both sides MUST be patched. Else, the old
protocol will be used. The version of the protocol supported is sent
in the conferences informations to notify the peer what version to use.
Finally, this patch changes some APIs to support multisteam:
+ Some APIs now takes the deviceId or the sinkId when necessary
https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429
Doc: https://git.jami.net/savoirfairelinux/jami-project/-/wikis/technical/6.1.-Conference-Protocol
Change-Id: Ieedd6055fd43b2a09b2cc8b253dcd6a3bf260a39