Skip to content

Add [Obsolete] shims for non-cancellation token handlers#405

Merged
rido-min merged 3 commits intomainfrom
rido/obsolete-handlers
Apr 1, 2026
Merged

Add [Obsolete] shims for non-cancellation token handlers#405
rido-min merged 3 commits intomainfrom
rido/obsolete-handlers

Conversation

@rido-min
Copy link
Copy Markdown
Member

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.

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.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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-CancellationToken handler-registration overloads as [Obsolete] across Activity/Invoke/Event extension APIs to preserve backward compatibility while encouraging migration.
  • Update internal sign-in related handlers in AppRouting to accept CancellationToken and begin threading it through downstream calls.
  • Update the TargetedMessages sample to use the cancellation-aware OnActivity handler 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.

Comment thread Libraries/Microsoft.Teams.Apps/AppRouting.cs
Comment thread Libraries/Microsoft.Teams.Apps/AppRouting.cs
Comment thread Libraries/Microsoft.Teams.Apps/AppRouting.cs
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.
Copilot AI review requested due to automatic review settings April 1, 2026 00:03
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.

Comment thread Libraries/Microsoft.Teams.Apps/AppRouting.cs
@rido-min rido-min merged commit ad6b958 into main Apr 1, 2026
12 checks passed
@rido-min rido-min deleted the rido/obsolete-handlers branch April 1, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants