Add [Obsolete] shims for non-cancellation token handlers#405
Merged
Conversation
Introduce [Obsolete] overloads for OnActivity, OnInvoke, and related handler registration methods without CancellationToken to maintain backward compatibility. Update internal handler methods and usage examples to use cancellation-aware signatures. Encourages migration to new handler signatures for improved cancellation support.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds [Obsolete] shims for handler-registration overloads that don’t accept a CancellationToken, while updating internal/default handler paths and a sample to use cancellation-aware signatures to improve cancellation propagation.
Changes:
- Mark non-
CancellationTokenhandler-registration overloads as[Obsolete]across Activity/Invoke/Event extension APIs to preserve backward compatibility while encouraging migration. - Update internal sign-in related handlers in
AppRoutingto acceptCancellationTokenand begin threading it through downstream calls. - Update the TargetedMessages sample to use the cancellation-aware
OnActivityhandler signature.
Reviewed changes
Copilot reviewed 64 out of 64 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Samples/Samples.TargetedMessages/Program.cs | Updates OnActivity usage to the cancellation-aware handler signature. |
| Libraries/Microsoft.Teams.Apps/AppRouting.cs | Updates internal sign-in handlers to accept CancellationToken and (partially) forward it to downstream operations/events. |
| Libraries/Microsoft.Teams.Apps/Activities/Activity.cs | Marks non-CT OnActivity overloads as [Obsolete] in favor of CT-aware handlers. |
| Libraries/Microsoft.Teams.Apps/Activities/TypingActivity.cs | Marks non-CT OnTyping overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Messages/MessageActivity.cs | Marks non-CT OnMessage overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Messages/MessageUpdateActivity.cs | Marks non-CT OnMessageUpdate overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Messages/MessageDeleteActivity.cs | Marks non-CT OnMessageDelete overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Messages/MessageReactionActivity.cs | Marks non-CT message reaction handler overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/InvokeActivity.cs | Marks non-CT OnInvoke overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/HandoffActivity.cs | Marks non-CT OnHandoff overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/FileConsentActivity.cs | Marks non-CT OnFileConsent overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/ExecuteActionActivity.cs | Marks non-CT OnExecuteAction overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/AdaptiveCards/ActionActivity.cs | Marks non-CT OnAdaptiveCardAction overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Configs/FetchActivity.cs | Marks non-CT OnConfigFetch overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Configs/SubmitActivity.cs | Marks non-CT OnConfigSubmit overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Tasks/FetchActivity.cs | Marks non-CT OnTaskFetch overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Tasks/SubmitActivity.cs | Marks non-CT OnTaskSubmit overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Tabs/FetchActivity.cs | Marks non-CT OnTabFetch overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Tabs/SubmitActivity.cs | Marks non-CT OnTabSubmit overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/SignIn/FailureActivity.cs | Marks non-CT OnSignInFailure overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/SignIn/TokenExchangeActivity.cs | Marks non-CT OnTokenExchange overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/SignIn/VerifyStateAcitivity.cs | Marks non-CT OnVerifyState overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Search/SearchActivity.cs | Marks non-CT OnSearch overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Search/TypeaheadSearchActivity.cs | Marks non-CT OnTypeaheadSearch overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Search/AnswerSearchActivity.cs | Marks non-CT OnAnswerSearch overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Messages/SubmitActionActivity.cs | Marks non-CT OnSubmitAction overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/Messages/FeedbackActivity.cs | Marks non-CT OnFeedback overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/SubmitActionActivity.cs | Marks non-CT message extension submit-action overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/SettingsActivity.cs | Marks non-CT OnSetting overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/SelectItemActivity.cs | Marks non-CT OnSelectItem overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/QueryActivity.cs | Marks non-CT OnQuery overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/QueryLinkActivity.cs | Marks non-CT OnQueryLink overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/QuerySettingsUrlActivity.cs | Marks non-CT OnQuerySettingsUrl overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/FetchTaskActivity.cs | Marks non-CT OnFetchTask overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/CardButtonClickedActivity.cs | Marks non-CT OnCardButtonClicked overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Invokes/MessageExtensions/AnonQueryLinkActivity.cs | Marks non-CT OnAnonQueryLink overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Installs/InstallActivity.cs | Marks non-CT OnInstall overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Installs/InstallUpdateActivity.cs | Marks non-CT OnInstallUpdate overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Installs/UnInstallActivity.cs | Marks non-CT OnUnInstall overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Events/EventActivity.cs | Marks non-CT OnEvent overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Events/ReadReceiptActivity.cs | Marks non-CT OnReadReceipt overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Events/MeetingStartActivity.cs | Marks non-CT OnMeetingStart overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Events/MeetingJoinActivity.cs | Marks non-CT OnMeetingJoin overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Events/MeetingLeaveActivity.cs | Marks non-CT OnMeetingLeave overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Events/MeetingEndActivity.cs | Marks non-CT OnMeetingEnd overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ConversationUpdateActivity.cs | Marks non-CT OnConversationUpdate overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ConversationEndActivity.cs | Marks non-CT OnConversationEnd overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/MembersAddedActivity.cs | Marks non-CT OnMembersAdded overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/MembersRemovedActivity.cs | Marks non-CT OnMembersRemoved overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelCreatedActivity.cs | Marks non-CT OnChannelCreated overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelDeletedActivity.cs | Marks non-CT OnChannelDeleted overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelMemberAddedActivity.cs | Marks non-CT OnChannelMemberAdded overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelMemberRemovedActivity.cs | Marks non-CT OnChannelMemberRemoved overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelRenamedActivity.cs | Marks non-CT OnChannelRenamed overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelRestoredActivity.cs | Marks non-CT OnChannelRestored overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelSharedActivity.cs | Marks non-CT OnChannelShared overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/ChannelUnsharedActivity.cs | Marks non-CT OnChannelUnShared overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/TeamArchivedActivity.cs | Marks non-CT OnTeamArchived overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/TeamDeletedActivity.cs | Marks non-CT OnTeamDeleted/OnTeamHardDeleted overloads as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/TeamRenamedActivity.cs | Marks non-CT OnTeamRenamed overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/TeamRestoredActivity.cs | Marks non-CT OnTeamRestored overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/Conversations/TeamUnArchivedActivity.cs | Marks non-CT OnTeamUnArchived overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/CommandActivity.cs | Marks non-CT OnCommand overload as [Obsolete]. |
| Libraries/Microsoft.Teams.Apps/Activities/CommandResultActivity.cs | Marks non-CT OnCommandResult overload as [Obsolete]. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Updated async method calls to include a cancellationToken parameter, allowing operations to be cancelled when needed. This enhances the application's responsiveness and robustness by supporting cooperative cancellation in token exchange and event emission processes.
Replaced usage of context.CancellationToken with the cancellationToken parameter when handling error events, improving clarity and consistency in cancellation token management. No other logic was changed.
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 64 out of 64 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
Samples/Samples.TargetedMessages/Program.cs:18
- The OnActivity handler now includes a CancellationToken parameter but it isn’t used in this middleware (only context.Next() is called, which has no token). To avoid an unused-parameter analyzer finding in the sample, rename the parameter to
_/__or otherwise use the token where applicable.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
MehakBindra
approved these changes
Apr 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduce [Obsolete] overloads for OnActivity, OnInvoke, and related handler registration methods without CancellationToken to maintain backward compatibility. Update internal handler methods and usage examples to use cancellation-aware signatures. Encourages migration to new handler signatures for improved cancellation support.