microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
next/core

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/Installs/UnInstallActivity.cs

75lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Api.Activities;
5using Microsoft.Teams.Apps.Routing;
6
7namespace Microsoft.Teams.Apps.Activities;
8
9[AttributeUsage(AttributeTargets.Method, Inherited = true)]
10public class UnInstallAttribute() : InstallUpdateAttribute(InstallUpdateAction.Remove)
11{
12 public override bool Select(IActivity activity)
13 {
14 if (activity is InstallUpdateActivity installUpdate)
15 {
16 return installUpdate.Action.IsRemove;
17 }
18
19 return false;
20 }
21}
22
23public static partial class AppActivityExtensions
24{
25 [Obsolete("Use the handler with the cancellation token")]
26 public static App OnUnInstall(this App app, Func<IContext<InstallUpdateActivity>, Task> handler)
27 {
28 app.Router.Register(new Route()
29 {
30 Name = string.Join("/", [ActivityType.InstallUpdate, InstallUpdateAction.Remove]),
31 Type = app.Status is null ? RouteType.System : RouteType.User,
32 Handler = async context =>
33 {
34 await handler(context.ToActivityType<InstallUpdateActivity>());
35 return null;
36 },
37 Selector = activity =>
38 {
39 if (activity is InstallUpdateActivity installUpdate)
40 {
41 return installUpdate.Action.IsRemove;
42 }
43
44 return false;
45 }
46 });
47
48 return app;
49 }
50
51 public static App OnUnInstall(this App app, Func<IContext<InstallUpdateActivity>, CancellationToken, Task> handler)
52 {
53 app.Router.Register(new Route()
54 {
55 Name = string.Join("/", [ActivityType.InstallUpdate, InstallUpdateAction.Remove]),
56 Type = app.Status is null ? RouteType.System : RouteType.User,
57 Handler = async context =>
58 {
59 await handler(context.ToActivityType<InstallUpdateActivity>(), context.CancellationToken);
60 return null;
61 },
62 Selector = activity =>
63 {
64 if (activity is InstallUpdateActivity installUpdate)
65 {
66 return installUpdate.Action.IsRemove;
67 }
68
69 return false;
70 }
71 });
72
73 return app;
74 }
75}