Commit Graph

141 Commits

Author SHA1 Message Date
7625709a21 autoanswer: allow to choose 2nd call behavior
Add a setting to choose if the user want 2nd calls to be hanged up
while already in one auto-answered.

Change-Id: I2149c057827ee9bf678e97ba64c31c8952aaed0c
2025-05-23 12:16:32 -04:00
86d3bb6644 ArchiveAccountManager: add support for p2p account import
Gitlab: #930
Change-Id: I76f07a81c4887d0dc127d74bc6c4de2e9f4f2ee8
2025-03-06 12:19:47 -05:00
leo
912aa59a44 nodejs-interface: add presence signals
Change-Id: Ifb3d176bc37c4ecbc6ce9ff682e7721d55ea7e0f
2025-02-12 12:51:42 -05:00
c3c8a0cce2 interface-nodejs: add deviceRevocationEnded signal
Change-Id: I7cb060661c89ea4839bafd87ad5b224e5faa785e
2025-02-03 14:58:07 -05:00
cbf9457ae7 name directory: allow unicode names
GitLab: #1097
Change-Id: I742d1306007b3ae4908ee2d46bd5275d1ce2c99a
2025-01-30 17:12:44 -05:00
4b8946fbd6 cmake/nodejs: improve dependency lookup
Change-Id: Iaa92e035fe4ac6a09e1586e7f4d681ecf1b053f4
2025-01-15 16:07:45 -05:00
3e586b0dd1 deviceRevocationEnded : add signal callback for nodeJs
Change-Id: I9853bfd5742f751c4e20ee4668feed550013561a
2025-01-13 09:33:00 -05:00
2eedc6b2b7 nodejs: add userSearch signal
Change-Id: I7ceb5c0809918ca53cbcf2bc1c0d8efff586f960
2025-01-09 11:03:39 -05:00
b85165ae1a copyright: happy new year!
Change-Id: I2753c58c12d167ee5f7454e5a2ed893991c90e24
2025-01-08 11:02:33 -05:00
b8bf25e0f9 updateProfile: Add Filetype
To enhance the flexibility and scalability of this API, we can include the filetype parameter.

Change-Id: I0fcb69a1073ac2cb4576d7a701e5339c1c5db5de
2024-11-21 16:56:47 -04:00
a1bba4d761 updateProfile: use int32 for flag
Change-Id: Ia844cbac3ffb529d5ee55c0c589c94a06e37fb73
2024-11-20 11:54:54 -05:00
leo
24da65974f updateProfile: add flag to support base64 avatar format
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
2024-11-15 08:23:50 -05:00
cfa1732c73 updateProfile: New API for Setting displayName and Avatar
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
2024-11-12 17:04:20 -05:00
e2503d3a4f update license
Change-Id: I8b9e25f99da5945684e265d3923b74065c8ef8eb
2024-11-11 22:42:19 -05:00
bb752b886b nodejs_interface: link profileReceived & accountProfileReceived
These signals help the client know when a user updated his profile and are indeed needed in the expressJs server

Change-Id: Ib82d3bf477dbb77a3d86f79c6f9aa12a9b30dfd3
2024-10-01 14:36:32 -04:00
3004e72cef interface-nodejs: add files transfer support
Now it is possible to send and receive files through the nodejs interface

Change-Id: Ide81e01c1965ea790b4c0d892445d14dcec38b30
2024-09-16 13:38:47 -04:00
d4fe29cb17 nodejs: build with exceptions/rtti on macOS
Change-Id: I1e90112fef4bdfc32cae0da3005428ce066cdf18
2024-08-15 13:25:13 -04:00
de1724575a nodejs: update for new daemon APIs
Change-Id: I74c8b6bf420b5cd64af8701dd1b869c703ec8ba6
2024-08-15 13:25:08 -04:00
e9826ae4c4 cmake: add support for nodejs
Change-Id: Ia6e13fd3bd27077dac41b210a8dfac8d78ae6d2c
2024-06-06 15:09:29 -04:00
9da8262c27 nodejs: fix binding
Change-Id: I11ee1d203c5a163eee323ba93636ae8800311b27
2024-06-06 13:15:56 -04:00
a404577a9e call-swarm: avoid dummy call to create a conference
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
2024-05-17 12:14:16 -04:00
09ec8e6f43 conversation: re-design sending/sent status
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
2024-02-15 13:52:39 -05:00
ba09b11b42 conversation: add new loadConversationUntil and SwarmMessageVect type
GitLab: #831

Change-Id: I8e2aa205629735df043618a87e54ae6a43e6ca3f
2024-01-09 09:42:03 -05:00
6addbbc160 misc: remove <std::mutex> template
Not needed in c++17

Change-Id: Icf3c7b7781dbf829db2770a750cf10ec8fbeef45
2024-01-03 08:37:46 -05:00
40dddee226 misc: update copyright to 2024
Change-Id: I829473d42b2b90f26ed2d93bbde063a21ce0952c
2024-01-02 17:26:29 -05:00
8468f15927 conversation: move logic of message management in daemon
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
2023-12-28 16:05:40 -05:00
1085874379 New API for connection monitoring
GitLab: #851
Change-Id: I3bbb529eccb3dbb6389621dbfc38f5cf081a98ad
2023-08-15 15:41:47 -04:00
752beac943 nodejs/index.js: update jamid path
Change-Id: I582365a7a5dab0ab87fad77a18d32d70e8b6828e
2023-07-29 17:42:16 -04:00
3670cabd61 certstore: split per account
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
2023-05-01 13:14:37 -04:00
0c969e86a7 libjami: add flags to sendTextMessage
Change-Id: I05ae748bc572f3a7e28fd040fefe047a5fc4ca3d
2023-02-15 10:09:19 -05:00
4166137736 misc: Update copyright years to 2023
Change-Id: Ia80fc12ba65b1abd516af205e6664261ae2e33fe
2023-02-06 01:46:45 -05:00
806645a975 nodejs: fix build
Change-Id: I2148520c37ec4415ab5ecead29caa85e9f4a76b0
2022-12-07 12:12:10 -05:00
e037e6358c conversation: add case sensitive flag on searchConversation
This allow the search request to be case insensitive by default

Change-Id: I97d0e9c01a2ca311faba7136cfda460ce7ad9957
2022-11-21 10:18:13 -05:00
8960936221 swarm: add call support
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
2022-11-17 08:10:17 -05:00
8bc4779e0c audio: adding configuration options for native noise suppression
Adding option to configure noise suppression to use either native noise suppression (where supported), or noise suppression from the audio processor.

Change-Id: Iecc7f7e7997d0b75a88bcbadf0f1be9f1710676e
2022-11-02 11:37:11 -04:00
d54a84ec0b Replace DRing for libjami
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
2022-10-29 16:49:27 -04:00
d5eaf363c8 nodejs: allow to receive log messages
Change-Id: I738d5dd3ef7ad4787a950e172172c31949b77a74
2022-10-26 16:19:51 -04:00
0f6b74b194 conversation: add support for message edition
For now, only be able to edit messages from our-self and with the
text/plain type

Change-Id: I20c6ed7dad3892f0fa655812242b9ca6e77e69b3
GitLab: #316
2022-10-24 14:29:19 -04:00
8abb7a04dc nodejs: fix libjami linking and ConversationPreferencesUpdated binding
Change-Id: I3a444c818210fbdb3c5873fea63fc75af5101b44
2022-10-12 16:02:00 -04:00
a4ff4abe70 swarm: add method to save user's preferences
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
2022-10-06 14:47:30 -04:00
a7a8420178 nodejs: add composing indicators
Change-Id: I3a1109e0acc64aed296abe19a198d71253cd4364
2022-10-03 14:21:05 -04:00
52228283fd nodejs: fix build with clang
Change-Id: Id980bc5eecf11424e32dc14275b2dba6862aae24
2022-09-18 12:53:34 -04:00
95b580b573 nodejs: add binding for MessagesFound
Change-Id: Ifc2d7853ba58311356a4c33e80987424f3bff283
2022-09-07 16:35:03 -04:00
5af1041bf8 proposal: swarm: use log to search messages in conversations
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
2022-09-06 09:32:08 -04:00
19f666f0df nodejs: fix binding
Change-Id: I6d7fe3f7593764bbb99570ba02b987943ba35a18
2022-08-04 15:11:51 -04:00
d21d8bbfeb misc: swarm: add loadConversationUntil
useful to load until a specific commit

Change-Id: I1a780e2048be8bcaddeee0b9846b2bd2e3ac979e
2022-07-25 16:42:19 -04:00
dca84be45c swarm: add ability to answer to a message
GitLab: #318
Change-Id: I12c04096a91c40b5e6c9c435373cce23b4065d7e
2022-07-25 16:42:19 -04:00
e6f995d746 conversation: add signal for profile updates
Change-Id: Ibfa6759b19ba240115ef36412cc8a1ed7bd6cd41
2022-07-21 13:51:24 -04:00
ce545112cf multistream: make the daemon able to negotiate more than 2 medias
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
2022-07-11 10:11:20 -04:00
ea2e2e4dbc conference: improve conference protocol for multi stream
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
2022-06-17 10:07:43 -04:00