Skip to content

feat: plugins for microsoft calendars and contacts#428

Merged
cajus merged 10 commits into
gonicus:mainfrom
abmann82:feat/msgraph
Apr 20, 2026
Merged

feat: plugins for microsoft calendars and contacts#428
cajus merged 10 commits into
gonicus:mainfrom
abmann82:feat/msgraph

Conversation

@abmann82
Copy link
Copy Markdown
Contributor

Both plugins use the msgraph API over OAuth.
The existing contacts plugin is improved and extended, the calendar plugin is newly added with a similar approach to the contacts plugin.

The OAuth code for the microsoft login is refactored out of the plugins, so that we can use the same login for both plugins.

A basic UI is introduced for the OAuth login, that can be re-used for other OAuths, if needed. This is in particular needed to inform the user why a browser window is being opened that requests a login from the user (and also to tell the user when an error occurred).

Various improvements:

  • More logging during authorization
  • Make clientIdentifier and URLs configurable
  • Use custom string in the browser message on authorization success
  • Use explicit /Gonnect path in the redirect url
  • Adding a basic GUI to login to msgraph
  • Persist refresh token and use it on startup

Both plugins use the msgraph API over OAuth.
The existing contacts plugin is improved and extended, the calendar
plugin is newly added with a similar approach to the contacts plugin.

The OAuth code for the microsoft login is refactored out of the plugins,
so that we can use the same login for both plugins.

A basic UI is introduced for the OAuth login, that can be re-used for
other OAuths, if needed. This is in particular needed to inform the user
*why* a browser window is being opened that requests a login from the
user (and also to tell the user when an error occurred).

Various improvements:
- More logging during authorization
- Make clientIdentifier and URLs configurable
- Use custom string in the browser message on authorization success
- Use explicit /Gonnect path in the redirect url
- Adding a basic GUI to login to msgraph
- Persist refresh token and use it on startup
Copy link
Copy Markdown
Contributor

@mbgonicus mbgonicus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't run it to check the the login dialog visually, but aside from the niggling bits (see comments) lgtm.

@cajus Can you please check for CI impact?

Comment thread src/calendar/msgraph/MSGraphEventFeeder.cpp Outdated
Comment thread src/calendar/msgraph/MSGraphEventFeeder.cpp
Comment thread src/calendar/msgraph/MSGraphEventFeeder.cpp Outdated
Comment thread src/contacts/msgraph/MSGraphAddressBookFeeder.cpp Outdated
@mbgonicus mbgonicus requested a review from cajus April 17, 2026 05:52
mbgonicus
mbgonicus previously approved these changes Apr 17, 2026
@cajus cajus merged commit e7e8cd9 into gonicus:main Apr 20, 2026
13 checks passed
semantic-release-tokenizer Bot pushed a commit that referenced this pull request Apr 22, 2026
# [2.2.0-beta.1](v2.1.0...v2.2.0-beta.1) (2026-04-22)

### Bug Fixes

* build with certificate patch ([#433](#433)) ([8e8ba1f](8e8ba1f))
* c++ standard and guarding updates ([#422](#422)) ([9e8171b](9e8171b))
* code review loop ([#374](#374)) ([f1c609d](f1c609d))
* disable WMME in pjsip ([#397](#397)) ([a90a80c](a90a80c))
* handle direct pjsip mute again ([#402](#402)) ([0c4609c](0c4609c))
* home/call switch tab notification reset ([#404](#404)) ([95e0a3f](95e0a3f))
* make MWI subscription configurable ([#414](#414)) ([d74c530](d74c530))
* make ReadOnlyConfdSettings treate string lists correctly ([#423](#423)) ([48328e2](48328e2))
* more sip codes lead to auth request ([#379](#379)) ([31ee0cd](31ee0cd))
* mwi recursions ([#405](#405)) ([2a42344](2a42344))
* potential crash on HeadsetDevice destroyed ([#371](#371)) ([65900ab](65900ab))
* raise window after showing it ([#398](#398)) ([4f72dc6](4f72dc6))
* reenable CardDAV plugin ([#406](#406)) ([9b9b136](9b9b136))
* resolve feeder manager deadlock ([#427](#427)) ([9a8d604](9a8d604))
* restore functionality for feeders without network requirements ([#387](#387)) ([01c6494](01c6494))
* tab switch/reset notifications ([9338ed0](9338ed0))
* **ui:** give focus to call screen when startet via enter ([#395](#395)) ([5e5d78e](5e5d78e))

### Features

* adding global shortcuts support for windows ([#399](#399)) ([eb5237e](eb5237e))
* basic MWI support ([#392](#392)) ([8c3c914](8c3c914))
* delete old history entries ([#432](#432)) ([0ee826d](0ee826d))
* display sip registration status ([#375](#375)) ([f9e6567](f9e6567))
* feeder plugin retry mechanism ([#391](#391)) ([e262f3f](e262f3f))
* pause/resume media on windows ([#370](#370)) ([61f3407](61f3407))
* plugins for microsoft calendars and contacts ([#428](#428)) ([e7e8cd9](e7e8cd9))
* pre-fill missing it/es translations ([#377](#377)) ([4428e4e](4428e4e))
* update pjproject to 2.17 ([#435](#435)) ([98c7199](98c7199))
@semantic-release-tokenizer
Copy link
Copy Markdown

🎉 This PR is included in version 2.2.0-beta.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

semantic-release-tokenizer Bot pushed a commit that referenced this pull request Jun 1, 2026
# [2.2.0](v2.1.0...v2.2.0) (2026-06-01)

### Bug Fixes

* base edits on SSL default configuration ([#459](#459)) ([6dcbf78](6dcbf78))
* build with certificate patch ([#433](#433)) ([8e8ba1f](8e8ba1f))
* c++ standard and guarding updates ([#422](#422)) ([9e8171b](9e8171b))
* clear out URI encoded number input ([#475](#475)) ([cd1c126](cd1c126))
* code review loop ([#374](#374)) ([f1c609d](f1c609d))
* disable WMME in pjsip ([#397](#397)) ([a90a80c](a90a80c))
* do not show favorites in "most called" list ([#456](#456)) ([8ee676d](8ee676d))
* do not wipe all contact sources on by-source removals ([#450](#450)) ([f89882f](f89882f))
* Ensure correct `tag` value type in flatpak manifest ([#466](#466)) ([3c5412a](3c5412a))
* handle direct pjsip mute again ([#402](#402)) ([0c4609c](0c4609c))
* home/call switch tab notification reset ([#404](#404)) ([95e0a3f](95e0a3f))
* if so configured, do not verify CA even if they are state ([#455](#455)) ([f45a1d8](f45a1d8))
* ignore certain ssl errors when verifyServer is false (webdav) ([#451](#451)) ([428860a](428860a))
* ignore verification ssl errors if verifyServer=false ([#453](#453)) ([be3d71c](be3d71c))
* make MWI subscription configurable ([#414](#414)) ([d74c530](d74c530))
* make ReadOnlyConfdSettings treate string lists correctly ([#423](#423)) ([48328e2](48328e2))
* more sip codes lead to auth request ([#379](#379)) ([31ee0cd](31ee0cd))
* mwi recursions ([#405](#405)) ([2a42344](2a42344))
* potential crash on HeadsetDevice destroyed ([#371](#371)) ([65900ab](65900ab))
* prevent unhold on currently changing call ([#439](#439)) ([f1a05f5](f1a05f5))
* raise window after showing it ([#398](#398)) ([4f72dc6](4f72dc6))
* reenable CardDAV plugin ([#406](#406)) ([9b9b136](9b9b136))
* resolve feeder manager deadlock ([#427](#427)) ([9a8d604](9a8d604))
* restore functionality for feeders without network requirements ([#387](#387)) ([01c6494](01c6494))
* robustness for media and contacts cache ([#471](#471)) ([d879e1b](d879e1b))
* tab switch/reset notifications ([9338ed0](9338ed0))
* **ui:** do not treat room names beginning with digits as phone numbers ([#461](#461)) ([75ed3f2](75ed3f2))
* **ui:** give focus to call screen when startet via enter ([#395](#395)) ([5e5d78e](5e5d78e))
* use verifyServer flag for CA verification with webdav ([#437](#437)) ([c1ab98f](c1ab98f))

### Features

* add Blinkstick busylight support ([#474](#474)) ([af400bd](af400bd))
* add template for 1&1 ([#465](#465)) ([865fcd9](865fcd9))
* adding global shortcuts support for windows ([#399](#399)) ([eb5237e](eb5237e))
* basic MWI support ([#392](#392)) ([8c3c914](8c3c914))
* delete old history entries ([#432](#432)) ([0ee826d](0ee826d))
* display sip registration status ([#375](#375)) ([f9e6567](f9e6567))
* feeder plugin retry mechanism ([#391](#391)) ([e262f3f](e262f3f))
* ical rrule parsing optimization ([#457](#457)) ([c46f066](c46f066))
* **ldap:** configurable contact attribute mapping ([#445](#445)) ([4113384](4113384))
* pause/resume media on windows ([#370](#370)) ([61f3407](61f3407))
* plugins for microsoft calendars and contacts ([#428](#428)) ([e7e8cd9](e7e8cd9))
* pre-fill missing it/es translations ([#377](#377)) ([4428e4e](4428e4e))
* rtt ui integration ([#443](#443)) ([62d48f3](62d48f3))
* **ui:** leave conference via systray menu ([#438](#438)) ([b973bb6](b973bb6))
* update pjproject to 2.17 ([#435](#435)) ([98c7199](98c7199))
* windows signing ([#462](#462)) ([f7dd63a](f7dd63a))
@semantic-release-tokenizer
Copy link
Copy Markdown

🎉 This PR is included in version 2.2.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants