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
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
Exit hooks are only called when in a REPL. Thus, provide the user with bindings
for initialization and finalization of the daemon. The syntax `with-jami' can be
used to ensure that finalization happens if initialization succeed.
Change-Id: I2f84a76844866a1de06300cde26618c8576045e5
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
Instead of creating an agent executable, bundle the bindinds into a shared
library. That way, we're adding an extension that Guile can load at runtime.
This shared library can be installed along with libjami so that users can use
the full power of Scheme to control their Jami accounts.
Also create a `guile-wraper' that compiles against the configuration flags.
This is necessary when building libjami with ASAN because then the executable
either has to LD_PRELOAD ASAN or compile against it. This minimal wrapper
really just boot guile and start a REPL.
Change-Id: I984d211ff03322b102ebe8650950ac8487711e9d
Guile already checks for the type of its objects before converting to C. Thus
we don't have to do the check ourself.
The check is still made in `apply_to_guile' to avoid packing values unnecessary
if the procedure is not really a procedure. The check is also made when
registering callbacks because of their delayed nature.
Change-Id: Id879c04d119884ad1226ed2495b880681125bccc
Instead of crashing the agent every time there's an error, just throw an
exception that can be handled by the user.
Change-Id: I18ac929e54b9cda6485754ccd52325db7dff66d9
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
Since we're not building Jami statically anymore, agent.exe is
generated under test/agent/.libs and the script `agent' is a wrapper
around it. Thus, change agent.exe for `agent' for compilation of
scheme.
Change-Id: I8766ca6470ba1a9136d8eb6cb2d45b278fd85456
The agent requires Jami's bindings to correctly run scenario. This
can only be done if Guile can find the correct scripts. Thus, the
pre-inst-env script can be used to setup the correct environment for
running the agent before its installation.
Change-Id: I474ef204bb33fd2098eee44b5b99c00f120c4536
Small helpers for signal handling.
`with-signal-handler` is useful for scoping signal handler and
`with-signal-handler-sync` for signal synchronization.
Change-Id: Idc7696fb273003d526f3a4658e7fb5623c2c5827
GOOPS is Guile Object Oriented Programming System.
It's easier to extend and break less the scenarios using GOOPS. e.g., a
scenario published on Gitlab should work two weeks later. This is not the case
right now and the goal of using GOOPS is to offer a stable API for the agent,
while keeping it flexible.
Change-Id: If6a038b6d8c371f8e74849749770f1dec8559b91
This starts the work to move calls and conference per account,
cleaning up the API and start future re-factorization.
Change-Id: I2a3a2c77e9ba78b1a280bdf8dca7eeaabb72f3fd
Guile is confused by agent.scm and agent. It will try to load the ELF file
instead of the Scheme script when `(use-modules (agent))`.
Change-Id: Ieead4c384f10df9ead351a6ae66b21f708e97424