Commit Graph
100 Commits
Author SHA1 Message Date
Evangelos Ribeiro Tzaras 830906f57a contacts-provider: Handle NULL and empty strings graceful in lookup
Fixes a crash where we asserted on best match when the id was NULL or
empty.

Closes: #567
2023-04-13 06:01:05 +00:00
Evangelos Ribeiro Tzaras 10d74634ba contacts-provider: Simplify refcounting in lookup_id()
g_autoptr usage was a bit pointless here since
calls_contacts_provider_lookup_id() is transfer full
2023-04-13 06:01:05 +00:00
Evangelos Ribeiro Tzaras ac2dc8573d best-match: Add gtk-doc annotations to the public API
Notably this adds ownership and nullable annotations, where appropriate.
2023-04-13 06:01:05 +00:00
Evangelos Ribeiro Tzaras 3fb016f6b2 best-match: Allow both NULL and empty strings as phone number
This allows us to get rid of some special casing when retrieving
primary and secondary display information.
2023-04-13 06:01:05 +00:00
Evangelos Ribeiro Tzaras 94cfbd83b2 sip-provider: Chain up to constructed early 2023-04-12 09:17:40 +00:00
Evangelos Ribeiro Tzaras 243753d064 sip-provider: Improve debugging of account loading
This should help diagnosing why the flatpak sometimes fails to add SIP accounts.
2023-04-12 09:17:40 +00:00
Evangelos Ribeiro Tzaras 208438236c sip-provider: Don't leak keyfile
The reference taken in new_origin_from_keyfile_secret() was never
released in the async callback.
2023-04-12 09:17:40 +00:00
Evangelos Ribeiro Tzaras c84f2a2bd9 sip-provider: Remove unused variables 2023-04-12 09:17:40 +00:00
Evangelos Ribeiro Tzaras 13d57f19bf tests: Add CALLS_SIP_ACCOUNT_FILE to environment
Otherwise the application test will try using the users
configured SIP accounts.
2023-04-10 08:03:21 +02:00
Evangelos Ribeiro Tzaras 36fdbc28e6 emergency-calls-manager: Don't leak origin
g_list_model_get_item is transfer full
2023-04-09 16:08:22 +02:00
Evangelos Ribeiro Tzaras 0de7599567 emergency-calls-manager: Add missing argument for on_origins_changed handler
The "removed" argument of the models "items-changed" signal was
forgotten making it misbehave when origins do get removed:

GLib-GObject[1287799]: WARNING: invalid (NULL) pointer instance
GLib-GObject[1287799]:CRITICAL: g_signal_connect_object: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
2023-04-09 16:08:00 +02:00
Evangelos Ribeiro Tzaras 9a52c57ffe emergency-calls-manager: Fix indentation
By running uncrustify
2023-04-09 12:18:55 +02:00
Evangelos Ribeiro Tzaras 3647f8f8c2 Update libcall-ui to v0.1.0
From NEWS:
  * Breaking change: Drop deprecated call states
  * Fix audio-mode reset
  * Improve keyboard navigation

Also includes updates to translations.
2023-04-08 18:53:30 +02:00
Evangelos Ribeiro Tzaras 8963218478 Document and release 44.0 2023-03-17 11:36:29 +01:00
Evangelos Ribeiro Tzaras d6619d68c9 tests: Don't override XDG_CONFIG_HOME
It was introduced in 4b51f340c8
to prevent accessing user home during tests:

The only place where this the home is currently accessed is when loading
SIP accounts and these can already be overriden with
CALLS_SIP_ACCOUNT_FILE.

It seems that XDG_CONFIG_HOME is propagated to the flatpak runner,
even though it was only overriden for the test suite.

  ========================================================================
  Building module calls in /builds/devrtz/calls/.flatpak-builder/build/calls-1
  ========================================================================
  Error: module calls: Error opening directory '/builds/devrtz/calls/_build/calls': Permission denied

Reported at https://gitlab.gnome.org/Infrastructure/GitLab/-/issues/596#note_1654082
2023-02-12 10:26:48 +01:00
Evangelos Ribeiro Tzaras d790e35bc3 sip-provider: Remove duplicated check
init() already checked if CALLS_SIP_TEST was set,
no need to do it again in constructed()
2023-02-12 10:26:46 +01:00
Evangelos Ribeiro Tzaras 4d402d2f79 sip-provider: Use STR_IS_NULL_OR_EMPTY macro 2023-02-12 10:26:46 +01:00
Evangelos Ribeiro Tzaras e4bd4580e7 tests: Add application shutdown tests 2023-02-09 19:07:32 +00:00
Evangelos Ribeiro Tzaras d901e4c8a6 application: Delay shutting down until database is done
Operations on the database are not cancellable, so we need to ensure any
critical code (such as database migration) has completed.
Otherwise we risk leaving the database in a locked state (or worse):

WARNING **: 09:24:53.428: Failed to determine schema version: sqlite3_prepare_v2 failed: database is locked: CREATE TABLE IF NOT EXISTS _gom_version (version INTEGER);
2023-02-09 19:07:32 +00:00
Evangelos Ribeiro Tzaras fb07e0122d record-store: Emit signal once DB is migrated
This helps letting CallsApplication decide if it should run a few more
iterations to ensure any critical code finishes executing.
2023-02-09 19:07:32 +00:00
Evangelos Ribeiro Tzaras 4b51f340c8 tests: Prevent tests from accessing user home
User files such as call records and VoIP account configs should be left
alone during tests.
2023-02-09 19:07:32 +00:00
Evangelos Ribeiro Tzaras 01b8a1c873 record-store: Allow overriding database location
By setting the environment variable CALLS_RECORD_DIR the database
location can be overriden which is useful for testing.
2023-02-09 19:07:32 +00:00
Evangelos Ribeiro Tzaras 4ff33a4566 ci: Update debian image 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras a1892f9421 debian: Ran wrap-and-sort -ast 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 767fbdad01 d/control: Add svg pixbufloader
As needed for the application test.
2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 656c8f96bf account-overview: Respect object lifecycle for signals 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras ffc3c984b0 application: Respect object lifecycle for signals 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 6ab5905a9b call-window: Respect object lifecycle for signals 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 63d065118f main-window: Respect object lifecycle for signals 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras e168170f9e new-call-box: Respect object lifecycle for signals 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 46736a63fa record-store: Ensure store stays alive during async tasks
As GOM does not allow us to cancel asynchronous tasks,
we need to hold references temporarily.
2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras b49e086549 application: Guard against setting application name twice
This is useful for testing the CallsApplication.
2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras ac6aff798d application: Shut down cleanly when application quits
Previously the application was only properly shut down
when it received SIGTERM/SIGINT.
2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 0c004b5204 application: Only destroy previously created widgets
If this is not the primary instance self->main_window and
self->call_window will not have been created in the first place.

Fixes: e878fabb27
2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 481c67a707 application: Coding style 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 257278da2c record-store: Fix coding style 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 673164803f new-call-box: Uncrustify 2023-02-01 08:48:35 +01:00
Evangelos Ribeiro Tzaras 205f691570 mm-origin: Disable call waiting
As Calls cannot deal with call waiting we should disable it entirely.
This works around issues where call audio get's completely broken once
the waiting call is disconnected on the BM818 modem shipped with the
Librem 5.

See https://source.puri.sm/Librem5/OS-issues/-/issues/311
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 72a85d62fa mm-origin: Ensure objects stay alive during async operations 2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 0f9a89aa3b mm-origin: Remove unnecessary cast
g_signal_connect takes a gpointer, so the instance parameter does not
need to be cast explicitly.
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 3dcb1881bf mm-origin: Don't leak ID 2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 5379907cf8 mm-origin: Don't leak MMModem
mm_object_get_modem() is transfer full,
so we need to unref it when we're done.
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 9c8e70088c mm-origin: Don't leak MMModemVoice
mm_object_get_modem_voice() is transfer full,
so we need to unref it when we're done.
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 6f771b1685 mm-origin: Avoid unnecessary allocation 2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 0232430ae1 mm-origin: Prefer g_autoptr instead of explicit reference counting 2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras f09852bc19 mm-origin: Prefer STR_IS_NULL_OR_EMPTY macro to explicit checks 2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras ab6f1a4c45 mm-origin: Explicitly cast ussd state
This is better than the implicit conversion of the enum.
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras e5780677f6 mm-origin: Chain up to to parent's constructed() early
Not strictly needed here, because we don't depend on the parent being
constructed but this is how it should generally be done.
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 2e43639d03 mm-origin: Codestyle
- Prefer char* over gchar*
- g_auto* variables come first
- Two newlines between functions
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 1793035683 mm-call: Guard public API 2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 9ee436135f mm-call: Codestyle
Prefer char over gchar and some whitespace cleanups.
2023-01-31 08:55:38 +00:00
Evangelos Ribeiro Tzaras 4733d0e033 Revert "flatpak: Adjust to sofia-sip tarball magically changing"
Today the tarball magically changed back.

This reverts commit 228982819a.
2023-01-31 07:43:33 +01:00
Evangelos Ribeiro Tzaras 6c60c935f0 Revert "flatpak: Adjust to libphonenumber tarball magically changing"
Today the tarball magically changed back.

This reverts commit 745987f32b.
2023-01-31 07:42:01 +01:00
Evangelos Ribeiro Tzaras 228982819a flatpak: Adjust to sofia-sip tarball magically changing
GitHub is great. Probably no malware ¯\_(ツ)_/¯
2023-01-30 20:45:11 +01:00
Evangelos Ribeiro Tzaras 745987f32b flatpak: Adjust to libphonenumber tarball magically changing
GitHub is great. Probably no malware ¯\_(ツ)_/¯
2023-01-30 20:27:15 +01:00
Evangelos Ribeiro Tzaras 0e6d5d9745 record-store: Don't crash on unexpected call state changes
It has been reported that the BM818 sometimes unexpectedly
changes the call state from "active" back to "ringing-in"
(as reported by ModemManager) shortly after accepting an incoming call.

ModemManager[734]: <info>  [modem1/call1] user request to accept call
ModemManager[734]: <info>  [modem1/call1] call is accepted
ModemManager[734]: <info>  [modem1/call1] call state changed: ringing-in -> active (accepted)
ModemManager[734]: <info>  [modem1/call1] call state changed: active -> ringing-in (unknown)

This leads to a failed assertion and program termination.
Instead of crashing raising a critical warning is more appropriate
and may allow the user to pick up the call after all.

Closes: #547
2023-01-30 08:34:24 +00:00
Evangelos Ribeiro Tzaras c0140b4109 contacts-box: Show favourites at the top
Closes: #493
2023-01-30 07:34:04 +00:00
Evangelos Ribeiro Tzaras 55147aed97 best-match: Add API to query if individual is a favourite 2023-01-30 07:34:04 +00:00
Evangelos Ribeiro Tzaras 18173f067f sip-provider: Use STR_IS_NULL_OR_EMPTY macro 2023-01-26 12:03:39 +00:00
Evangelos Ribeiro Tzaras 204772abbd sip-provider: Sort includes
We want the configuration to be included first
2023-01-26 12:03:39 +00:00
Evangelos Ribeiro Tzaras 7dc99aab13 HACKING: Update and clarify 2023-01-26 12:03:39 +00:00
Evangelos Ribeiro Tzaras 4d2f3f0b3b README: Fix typo 2023-01-26 12:03:39 +00:00
Evangelos Ribeiro Tzaras 3aedb46501 gcovr: Exclude src/gtklistmodels
These are copied from Gtk and should not be considered for coverage
reports.
2023-01-22 08:29:46 +00:00
Evangelos Ribeiro Tzaras bb6b76107c build: Rename util.{c,h} to calls-util.{c,h}
"util" is a very generic name. This guards against accidentally
including similarly named headers from elsewhere.
2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras ba77fb8de4 origin: Remove unused include 2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras 575569398b provider: Remove unused include 2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras ee56c8e87c new-call-box: Add explicit include
util.h is included transitively, but explicit is better than implicit.
2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras 94e940d5ff dbus-manager: Add explicit include
util.h is included transitively, but explicit is better than implicit.
2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras 5890aae5f8 manager: Add explicit include
util.h is included transitively, but explicit is better than implicit.
2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras 6bcc95c691 notifier: Add explicit include
util.h is included transitively, but explicit is better than implicit.
2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras c0cfaeaffe contacts-row: Use g_autoptr
folks 0.14 (shipped in Debian Bullseye) has cleanup functions defined.
2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras 9b49b0bc4f contacts-provider: Use STR_IS_NULL_OR_EMPTY macro 2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras b799605d01 contacts-provider: Codestyle 2023-01-22 07:33:02 +00:00
Evangelos Ribeiro Tzaras cf2004e02c Post release bump
According to the schedule
https://wiki.gnome.org/FortyFour
the next version will be 44.beta.0
2023-01-22 07:36:21 +01:00
Evangelos Ribeiro Tzaras 8ee72b9a5d ci: Don't build flatpaks when PKG_ONLY is set
This is needed to prevent calls-next from trying to build flatpaks.
2023-01-22 06:36:24 +01:00
Evangelos Ribeiro Tzaras 6137a93ce2 test-dbus: Test basic call interaction
Test that call gets exported on the bus and that basic interactions
such as accepting and hanging up works.
2023-01-20 17:12:02 +01:00
Evangelos Ribeiro Tzaras 4aa6884e43 tests: Add skeleton DBus API client test suite 2023-01-20 17:12:02 +01:00
Evangelos Ribeiro Tzaras ae6e232f98 tests: Add DBus server binary
This should facilitate DBus API testing.
2023-01-20 17:12:02 +01:00
Evangelos Ribeiro Tzaras ac83323de6 ui-call-data: Always use calls_best_match_get_avatar() to retrieve avatars
self->best_match is never NULL:
The test suite used to wrap calls_contacts_provder_new() to always return
NULL which in turn caused the best match to be NULL.

This was done to avoid warnings raised by libfolks
about missing the primary store (eds).

This is no longer necessary as the environment now tells folks which
backend to use.
2023-01-20 17:12:02 +01:00
Evangelos Ribeiro Tzaras 28f0ee42ee ui-call-data: Assert best_match is set
self->best_match is never NULL:
The test suite used to wrap calls_contacts_provder_new() to always return
NULL which in turn caused the best match to be NULL.

This was done to avoid warnings raised by libfolks
about missing the primary store (eds).

This is no longer necessary as the environment now tells folks which
backend to use.
2023-01-20 17:12:02 +01:00
Evangelos Ribeiro Tzaras 60ece1a656 ui-call-data: Use the name of the best match if individual was found
self->best_match is never NULL:
The test suite used to wrap calls_contacts_provder_new() to always return
NULL which in turn caused the best match to be NULL.

This was done to avoid warnings raised by libfolks
about missing the primary store (eds).

This is no longer necessary as the environment now tells folks which
backend to use.
2023-01-20 17:12:01 +01:00
Evangelos Ribeiro Tzaras e5a6ace32d tests: Don't mock calls_contacts_provider_new()
Having set which folks backends to use the real function can be used
without causing any warnings leading to the build to fail.
2023-01-20 17:12:01 +01:00
Evangelos Ribeiro Tzaras b6bdfaca99 tests: Use key-file folks backend
If folks is built with the 'eds' backend it will get used by default.
During testing the system address book should not be queried.
It might even be impossible if the environment is not set up to
connect to the session bus raising the following warning:

(process:701522): folks-WARNING **: 09:13:54.291: Failed to find primary PersonaStore with type ID 'eds' and ID 'system-address-book'.
Individuals will not be linked properly and creating new links between Personas will not work.
The configured primary PersonaStore's backend may not be installed. If you are unsure, check with your distribution.

Fixes: #427
2023-01-20 17:12:01 +01:00
Evangelos Ribeiro Tzaras 82c3cea464 tests: Remove unused mock-libfeedback.h 2023-01-20 17:12:01 +01:00
Evangelos Ribeiro Tzaras 35953ff4d1 tests: ui-call: Prefer type specific assertions
This will make it easier to see what's going wrong when an assertion fails.
2023-01-20 17:12:01 +01:00
Evangelos Ribeiro Tzaras a7678e496f Document and release 44~alpha.1 2023-01-12 10:50:29 +01:00
Evangelos Ribeiro Tzaras e878fabb27 application: Remove and destroy application windows on shutdown
The windows need to be removed from the GtkApplication because they are
holding references to the application which prevents proper cleanup.

Fixes: #508
2023-01-11 18:50:22 +01:00
Evangelos Ribeiro Tzaras 177199467f application: Set unix signal handler source ID to 0
g_clear_signal_handle_id() will complain about unknown sources otherwise.
2023-01-11 18:47:43 +01:00
Evangelos Ribeiro Tzaras 56891363cb history-box: Fix clearing signal handler
By the time g_clear_signal_handler() was invoked self->model had already
been NULL'ed, so clear the signal before clearing the model.
2023-01-11 18:14:36 +01:00
Evangelos Ribeiro Tzaras b6e0d3dba8 ci: Move flatpak jobs to packaging stage
It is more fitting than the default "test" stage and
has the desirable side effect that the Debian packaging jobs
no longer need to wait for flatpak jobs to finish.
2023-01-11 14:23:12 +00:00
Evangelos Ribeiro Tzaras 0d072e7335 ringer: Remove explicit DBus timeout handling
As libfeedback uses GDbusProxy under the hood which defaults to timing
out after 25 seconds there is no need to handle timeouts explicitly.

Furthermore 1 second seems to not always be enough time to get a
response which leads to endless ringing.

Fixes #543
2023-01-09 16:58:33 +00:00
Evangelos Ribeiro Tzaras a52a2a39f8 record-row: Defer enabling popup actions until displaying
There is no need to enable or disable actions until the popover
is actually presented.

This also get's rid of having to be notified of changes to the
"can-add-contact" property which led to a segfault as the signal handler
was not properly cleared.

Fixes: #535

As the "can-add-contact" property is now always checked,
the menu item will be properly shown.

Fixes: #485
2022-12-31 18:37:08 +01:00
Evangelos Ribeiro Tzaras 8d15f46b3f sip-pipeline: Only use gstreamer debugging if option is set
Fixes build issues when gstreamer has not been compiled with debugging
enabled.

Fixes: #533
2022-12-22 15:08:18 +00:00
Evangelos Ribeiro Tzaras 8b56e817b6 meson: Add option to use gstreamer debugging API
gst_debug_bin_to_dot_data() can only be used if gstreamer
has been compiled with debugging features enabled.
2022-12-22 15:08:18 +00:00
Evangelos Ribeiro Tzaras f997048a38 build: Rename config.h to calls-config.h
This guards against accidentally including configuration from elsewhere.
2022-12-22 15:08:18 +00:00
Evangelos Ribeiro Tzaras 74a7475bb4 Document and release 44~alpha.0 2022-12-03 20:59:30 +01:00
Evangelos Ribeiro Tzaras 21ece5dc5f log: Use feature test macro before any include
_GNU_SOURCE is needed for strcasestr().

The macro should be defined before including any headers. This broke
recently because glib.h seems to include string.h now.
2022-12-03 19:46:25 +01:00
Evangelos Ribeiro Tzaras 3225be22a3 application: Print positive delta when changing verbosity
Since we already take into account if it's increasing or decreasing
we should make the amount (Increased/Decreased by N) positive.
2022-12-03 19:46:25 +01:00
Evangelos Ribeiro Tzaras 707eee51cb log: Fix returned verbosity delta
When we increase verbosity we want values > 0 returned.
2022-12-03 19:46:25 +01:00
Evangelos Ribeiro Tzaras 29c797ebb8 ci: Update image
The new image includes new versions of our dependencies.
This is needed as we require newer feedbackd packages.
2022-12-03 08:52:41 +00:00