@oneuptime/common 7.0.3786 → 7.0.3815

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/Server/API/SlackAPI.ts +68 -0
  2. package/Server/Services/AccessTokenService.ts +21 -0
  3. package/Server/Services/AlertFeedService.ts +98 -0
  4. package/Server/Services/AlertInternalNoteService.ts +49 -8
  5. package/Server/Services/AlertOwnerTeamService.ts +50 -2
  6. package/Server/Services/AlertOwnerUserService.ts +52 -2
  7. package/Server/Services/AlertService.ts +236 -37
  8. package/Server/Services/AlertStateService.ts +24 -0
  9. package/Server/Services/AlertStateTimelineService.ts +30 -2
  10. package/Server/Services/IncidentInternalNoteService.ts +6 -6
  11. package/Server/Services/IncidentPublicNoteService.ts +7 -4
  12. package/Server/Services/IncidentStateTimelineService.ts +2 -1
  13. package/Server/Services/ScheduledMaintenanceFeedService.ts +103 -0
  14. package/Server/Services/ScheduledMaintenanceInternalNoteService.ts +50 -6
  15. package/Server/Services/ScheduledMaintenanceOwnerTeamService.ts +37 -0
  16. package/Server/Services/ScheduledMaintenanceOwnerUserService.ts +34 -0
  17. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +49 -7
  18. package/Server/Services/ScheduledMaintenanceService.ts +375 -12
  19. package/Server/Services/ScheduledMaintenanceStateService.ts +122 -34
  20. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +33 -1
  21. package/Server/Services/WorkspaceNotificationRuleService.ts +12 -0
  22. package/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.ts +38 -0
  23. package/Server/Utils/Workspace/MicrosoftTeams/Messages/Alert.ts +116 -0
  24. package/Server/Utils/Workspace/MicrosoftTeams/Messages/Incident.ts +36 -115
  25. package/Server/Utils/Workspace/MicrosoftTeams/Messages/ScheduledMaintenance.ts +108 -0
  26. package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +20 -2
  27. package/Server/Utils/Workspace/Slack/Actions/Alert.ts +697 -0
  28. package/Server/Utils/Workspace/Slack/Actions/Auth.ts +9 -2
  29. package/Server/Utils/Workspace/Slack/Actions/Incident.ts +9 -3
  30. package/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.ts +956 -0
  31. package/Server/Utils/Workspace/Slack/Messages/Alert.ts +116 -0
  32. package/Server/Utils/Workspace/Slack/Messages/ScheduledMaintenance.ts +108 -0
  33. package/Server/Utils/Workspace/Slack/Slack.ts +48 -2
  34. package/Server/Utils/Workspace/Slack/app-manifest.json +3 -3
  35. package/Server/Utils/Workspace/WorkspaceBase.ts +14 -0
  36. package/Server/Utils/Workspace/WorkspaceMessages/Alert.ts +69 -0
  37. package/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.ts +73 -0
  38. package/Types/Date.ts +5 -0
  39. package/Types/Workspace/WorkspaceMessagePayload.ts +9 -0
  40. package/build/dist/Server/API/SlackAPI.js +54 -0
  41. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  42. package/build/dist/Server/Services/AccessTokenService.js +11 -0
  43. package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
  44. package/build/dist/Server/Services/AlertFeedService.js +60 -0
  45. package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
  46. package/build/dist/Server/Services/AlertInternalNoteService.js +39 -8
  47. package/build/dist/Server/Services/AlertInternalNoteService.js.map +1 -1
  48. package/build/dist/Server/Services/AlertOwnerTeamService.js +40 -2
  49. package/build/dist/Server/Services/AlertOwnerTeamService.js.map +1 -1
  50. package/build/dist/Server/Services/AlertOwnerUserService.js +41 -3
  51. package/build/dist/Server/Services/AlertOwnerUserService.js.map +1 -1
  52. package/build/dist/Server/Services/AlertService.js +192 -35
  53. package/build/dist/Server/Services/AlertService.js.map +1 -1
  54. package/build/dist/Server/Services/AlertStateService.js +13 -0
  55. package/build/dist/Server/Services/AlertStateService.js.map +1 -1
  56. package/build/dist/Server/Services/AlertStateTimelineService.js +26 -2
  57. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
  58. package/build/dist/Server/Services/IncidentInternalNoteService.js +6 -6
  59. package/build/dist/Server/Services/IncidentInternalNoteService.js.map +1 -1
  60. package/build/dist/Server/Services/IncidentPublicNoteService.js +5 -4
  61. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  62. package/build/dist/Server/Services/IncidentStateTimelineService.js +1 -1
  63. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  64. package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js +60 -0
  65. package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js.map +1 -1
  66. package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js +36 -6
  67. package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js.map +1 -1
  68. package/build/dist/Server/Services/ScheduledMaintenanceOwnerTeamService.js +24 -0
  69. package/build/dist/Server/Services/ScheduledMaintenanceOwnerTeamService.js.map +1 -1
  70. package/build/dist/Server/Services/ScheduledMaintenanceOwnerUserService.js +22 -0
  71. package/build/dist/Server/Services/ScheduledMaintenanceOwnerUserService.js.map +1 -1
  72. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +36 -7
  73. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  74. package/build/dist/Server/Services/ScheduledMaintenanceService.js +275 -13
  75. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  76. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js +52 -4
  77. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js.map +1 -1
  78. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +28 -1
  79. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  80. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +10 -0
  81. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  82. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js +37 -0
  83. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js.map +1 -0
  84. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Alert.js +82 -0
  85. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Alert.js.map +1 -0
  86. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Incident.js +33 -99
  87. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/Incident.js.map +1 -1
  88. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/ScheduledMaintenance.js +74 -0
  89. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Messages/ScheduledMaintenance.js.map +1 -0
  90. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +20 -2
  91. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -1
  92. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +425 -0
  93. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js.map +1 -0
  94. package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js +2 -0
  95. package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js.map +1 -1
  96. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +5 -2
  97. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js.map +1 -1
  98. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js +599 -0
  99. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js.map +1 -0
  100. package/build/dist/Server/Utils/Workspace/Slack/Messages/Alert.js +82 -0
  101. package/build/dist/Server/Utils/Workspace/Slack/Messages/Alert.js.map +1 -0
  102. package/build/dist/Server/Utils/Workspace/Slack/Messages/ScheduledMaintenance.js +74 -0
  103. package/build/dist/Server/Utils/Workspace/Slack/Messages/ScheduledMaintenance.js.map +1 -0
  104. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +34 -0
  105. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  106. package/build/dist/Server/Utils/Workspace/Slack/app-manifest.json +3 -3
  107. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js +8 -0
  108. package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
  109. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js +48 -0
  110. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js.map +1 -0
  111. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.js +47 -0
  112. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.js.map +1 -0
  113. package/build/dist/Types/Date.js +4 -0
  114. package/build/dist/Types/Date.js.map +1 -1
  115. package/package.json +2 -2
@@ -0,0 +1,116 @@
1
+ import BadDataException from "../../../../../Types/Exception/BadDataException";
2
+ import ObjectID from "../../../../../Types/ObjectID";
3
+ import {
4
+ WorkspaceMessageBlock,
5
+ WorkspaceMessagePayloadButton,
6
+ WorkspacePayloadButtons,
7
+ WorkspacePayloadDivider,
8
+ } from "../../../../../Types/Workspace/WorkspaceMessagePayload";
9
+ import AlertService from "../../../../Services/AlertService";
10
+ import SlackActionType from "../../../../Utils/Workspace/Slack/Actions/ActionTypes";
11
+
12
+ export default class SlackAlertMessages {
13
+ public static async getAlertCreateMessageBlocks(data: {
14
+ alertId: ObjectID;
15
+ projectId: ObjectID;
16
+ }): Promise<Array<WorkspaceMessageBlock>> {
17
+ if (!data.alertId) {
18
+ throw new BadDataException("Alert ID is required");
19
+ }
20
+
21
+ // Slack.
22
+
23
+ const blockSlack: Array<WorkspaceMessageBlock> = [];
24
+
25
+ // add divider.
26
+
27
+ const dividerBlock: WorkspacePayloadDivider = {
28
+ _type: "WorkspacePayloadDivider",
29
+ };
30
+
31
+ blockSlack.push(dividerBlock);
32
+
33
+ // now add buttons.
34
+ // View data.
35
+ // Execute On Call
36
+ // Acknowledge alert
37
+ // Resolve data.
38
+ // Change Alert State.
39
+ // Add Note.
40
+
41
+ const buttons: Array<WorkspaceMessagePayloadButton> = [];
42
+
43
+ // view data.
44
+ const viewAlertButton: WorkspaceMessagePayloadButton = {
45
+ _type: "WorkspaceMessagePayloadButton",
46
+ title: "🔗 View Alert",
47
+ url: await AlertService.getAlertLinkInDashboard(
48
+ data.projectId!,
49
+ data.alertId!,
50
+ ),
51
+ value: data.alertId?.toString() || "",
52
+ actionId: SlackActionType.ViewAlert,
53
+ };
54
+
55
+ buttons.push(viewAlertButton);
56
+
57
+ // execute on call.
58
+ const executeOnCallButton: WorkspaceMessagePayloadButton = {
59
+ _type: "WorkspaceMessagePayloadButton",
60
+ title: "📞 Execute On Call",
61
+ value: data.alertId?.toString() || "",
62
+ actionId: SlackActionType.ViewExecuteAlertOnCallPolicy,
63
+ };
64
+
65
+ buttons.push(executeOnCallButton);
66
+
67
+ // acknowledge data.
68
+ const acknowledgeAlertButton: WorkspaceMessagePayloadButton = {
69
+ _type: "WorkspaceMessagePayloadButton",
70
+ title: "👀 Acknowledge Alert",
71
+ value: data.alertId?.toString() || "",
72
+ actionId: SlackActionType.AcknowledgeAlert,
73
+ };
74
+
75
+ buttons.push(acknowledgeAlertButton);
76
+
77
+ // resolve data.
78
+ const resolveAlertButton: WorkspaceMessagePayloadButton = {
79
+ _type: "WorkspaceMessagePayloadButton",
80
+ title: "✅ Resolve Alert",
81
+ value: data.alertId?.toString() || "",
82
+ actionId: SlackActionType.ResolveAlert,
83
+ };
84
+
85
+ buttons.push(resolveAlertButton);
86
+
87
+ // change alert state.
88
+ const changeAlertStateButton: WorkspaceMessagePayloadButton = {
89
+ _type: "WorkspaceMessagePayloadButton",
90
+ title: "➡️ Change Alert State",
91
+ value: data.alertId?.toString() || "",
92
+ actionId: SlackActionType.ViewChangeAlertState,
93
+ };
94
+
95
+ buttons.push(changeAlertStateButton);
96
+
97
+ // add note.
98
+ const addNoteButton: WorkspaceMessagePayloadButton = {
99
+ _type: "WorkspaceMessagePayloadButton",
100
+ title: "📄 Add Note",
101
+ value: data.alertId?.toString() || "",
102
+ actionId: SlackActionType.ViewAddAlertNote,
103
+ };
104
+
105
+ buttons.push(addNoteButton);
106
+
107
+ const workspacePayloadButtons: WorkspacePayloadButtons = {
108
+ buttons: buttons,
109
+ _type: "WorkspacePayloadButtons",
110
+ };
111
+
112
+ blockSlack.push(workspacePayloadButtons);
113
+
114
+ return blockSlack;
115
+ }
116
+ }
@@ -0,0 +1,108 @@
1
+ import BadDataException from "../../../../../Types/Exception/BadDataException";
2
+ import ObjectID from "../../../../../Types/ObjectID";
3
+ import {
4
+ WorkspaceMessageBlock,
5
+ WorkspaceMessagePayloadButton,
6
+ WorkspacePayloadButtons,
7
+ WorkspacePayloadDivider,
8
+ } from "../../../../../Types/Workspace/WorkspaceMessagePayload";
9
+ import ScheduledMaintenanceService from "../../../../Services/ScheduledMaintenanceService";
10
+ import SlackActionType from "../../../../Utils/Workspace/Slack/Actions/ActionTypes";
11
+
12
+ export default class SlackScheduledMaintenanceMessages {
13
+ public static async getScheduledMaintenanceCreateMessageBlocks(data: {
14
+ scheduledMaintenanceId: ObjectID;
15
+ projectId: ObjectID;
16
+ }): Promise<Array<WorkspaceMessageBlock>> {
17
+ if (!data.scheduledMaintenanceId) {
18
+ throw new BadDataException("ScheduledMaintenance ID is required");
19
+ }
20
+
21
+ // Slack.
22
+
23
+ const blockSlack: Array<WorkspaceMessageBlock> = [];
24
+
25
+ // add divider.
26
+
27
+ const dividerBlock: WorkspacePayloadDivider = {
28
+ _type: "WorkspacePayloadDivider",
29
+ };
30
+
31
+ blockSlack.push(dividerBlock);
32
+
33
+ // now add buttons.
34
+ // View data.
35
+ // Execute On Call
36
+ // Acknowledge scheduledMaintenance
37
+ // Resolve data.
38
+ // Change ScheduledMaintenance State.
39
+ // Add Note.
40
+
41
+ const buttons: Array<WorkspaceMessagePayloadButton> = [];
42
+
43
+ // view data.
44
+ const viewScheduledMaintenanceButton: WorkspaceMessagePayloadButton = {
45
+ _type: "WorkspaceMessagePayloadButton",
46
+ title: "🔗 View Event",
47
+ url: await ScheduledMaintenanceService.getScheduledMaintenanceLinkInDashboard(
48
+ data.projectId!,
49
+ data.scheduledMaintenanceId!,
50
+ ),
51
+ value: data.scheduledMaintenanceId?.toString() || "",
52
+ actionId: SlackActionType.ViewScheduledMaintenance,
53
+ };
54
+
55
+ buttons.push(viewScheduledMaintenanceButton);
56
+
57
+ // acknowledge data.
58
+ const acknowledgeScheduledMaintenanceButton: WorkspaceMessagePayloadButton =
59
+ {
60
+ _type: "WorkspaceMessagePayloadButton",
61
+ title: "⌛ Mark as Ongoing",
62
+ value: data.scheduledMaintenanceId?.toString() || "",
63
+ actionId: SlackActionType.MarkScheduledMaintenanceAsOngoing,
64
+ };
65
+
66
+ buttons.push(acknowledgeScheduledMaintenanceButton);
67
+
68
+ // resolve data.
69
+ const resolveScheduledMaintenanceButton: WorkspaceMessagePayloadButton = {
70
+ _type: "WorkspaceMessagePayloadButton",
71
+ title: "✅ Mark as Completed",
72
+ value: data.scheduledMaintenanceId?.toString() || "",
73
+ actionId: SlackActionType.MarkScheduledMaintenanceAsComplete,
74
+ };
75
+
76
+ buttons.push(resolveScheduledMaintenanceButton);
77
+
78
+ // change scheduledMaintenance state.
79
+ const changeScheduledMaintenanceStateButton: WorkspaceMessagePayloadButton =
80
+ {
81
+ _type: "WorkspaceMessagePayloadButton",
82
+ title: "➡️ Change State",
83
+ value: data.scheduledMaintenanceId?.toString() || "",
84
+ actionId: SlackActionType.ViewChangeScheduledMaintenanceState,
85
+ };
86
+
87
+ buttons.push(changeScheduledMaintenanceStateButton);
88
+
89
+ // add note.
90
+ const addNoteButton: WorkspaceMessagePayloadButton = {
91
+ _type: "WorkspaceMessagePayloadButton",
92
+ title: "📄 Add Note",
93
+ value: data.scheduledMaintenanceId?.toString() || "",
94
+ actionId: SlackActionType.ViewAddScheduledMaintenanceNote,
95
+ };
96
+
97
+ buttons.push(addNoteButton);
98
+
99
+ const workspacePayloadButtons: WorkspacePayloadButtons = {
100
+ buttons: buttons,
101
+ _type: "WorkspacePayloadButtons",
102
+ };
103
+
104
+ blockSlack.push(workspacePayloadButtons);
105
+
106
+ return blockSlack;
107
+ }
108
+ }
@@ -5,6 +5,7 @@ import { JSONObject } from "Common/Types/JSON";
5
5
  import API from "Common/Utils/API";
6
6
  import WorkspaceMessagePayload, {
7
7
  WorkspaceCheckboxBlock,
8
+ WorkspaceDateTimePickerBlock,
8
9
  WorkspaceDropdownBlock,
9
10
  WorkspaceMessageBlock,
10
11
  WorkspaceMessagePayloadButton,
@@ -27,6 +28,7 @@ import WorkspaceBase, {
27
28
  import WorkspaceType from "../../../../Types/Workspace/WorkspaceType";
28
29
  import SlackifyMarkdown from "slackify-markdown";
29
30
  import { DropdownOption } from "../../../../UI/Components/Dropdown/Dropdown";
31
+ import OneUptimeDate from "../../../../Types/Date";
30
32
 
31
33
  export default class SlackUtil extends WorkspaceBase {
32
34
  public static override async getUsernameFromUserId(data: {
@@ -192,6 +194,18 @@ export default class SlackUtil extends WorkspaceBase {
192
194
  channelId: string;
193
195
  workspaceUserId: string;
194
196
  }): Promise<void> {
197
+ // check if already in channel.
198
+ const isUserInChannel: boolean = await this.isUserInChannel({
199
+ authToken: data.authToken,
200
+ channelId: data.channelId,
201
+ userId: data.workspaceUserId,
202
+ });
203
+
204
+ if (isUserInChannel) {
205
+ logger.debug("User already in channel.");
206
+ return;
207
+ }
208
+
195
209
  logger.debug("Inviting user to channel with data:");
196
210
  logger.debug(data);
197
211
 
@@ -441,12 +455,13 @@ export default class SlackUtil extends WorkspaceBase {
441
455
 
442
456
  public static getValuesFromView(data: {
443
457
  view: JSONObject;
444
- }): Dictionary<string | number | Array<string | number>> {
458
+ }): Dictionary<string | number | Array<string | number> | Date> {
445
459
  logger.debug("Getting values from view with data:");
446
460
  logger.debug(JSON.stringify(data, null, 2));
447
461
 
448
462
  const slackView: JSONObject = data.view;
449
- const values: Dictionary<string | number | Array<string | number>> = {};
463
+ const values: Dictionary<string | number | Array<string | number> | Date> =
464
+ {};
450
465
 
451
466
  if (!slackView["state"] || !(slackView["state"] as JSONObject)["values"]) {
452
467
  return {};
@@ -477,6 +492,13 @@ export default class SlackUtil extends WorkspaceBase {
477
492
  return option["value"] as string | number;
478
493
  });
479
494
  }
495
+
496
+ // if date picker
497
+ if (value["selected_date_time"]) {
498
+ values[blockId] = OneUptimeDate.fromUnixTimestamp(
499
+ value["selected_date_time"] as number,
500
+ );
501
+ }
480
502
  }
481
503
  }
482
504
 
@@ -789,6 +811,30 @@ export default class SlackUtil extends WorkspaceBase {
789
811
  return checkboxBlock;
790
812
  }
791
813
 
814
+ public static override getDateTimePickerBlock(data: {
815
+ payloadDateTimePickerBlock: WorkspaceDateTimePickerBlock;
816
+ }): JSONObject {
817
+ logger.debug("Getting date time picker block with data:");
818
+ logger.debug(data);
819
+
820
+ const dateTimePickerBlock: JSONObject = {
821
+ type: "input",
822
+ element: {
823
+ type: "datetimepicker",
824
+ action_id: data.payloadDateTimePickerBlock.blockId,
825
+ initial_date: data.payloadDateTimePickerBlock.initialValue,
826
+ },
827
+ label: {
828
+ type: "plain_text",
829
+ text: data.payloadDateTimePickerBlock.label,
830
+ },
831
+ };
832
+
833
+ logger.debug("Date time picker block generated:");
834
+ logger.debug(dateTimePickerBlock);
835
+ return dateTimePickerBlock;
836
+ }
837
+
792
838
  public static override getTextAreaBlock(data: {
793
839
  payloadTextAreaBlock: WorkspaceTextAreaBlock;
794
840
  }): JSONObject {
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "features": {
9
9
  "app_home": {
10
- "home_tab_enabled": true,
10
+ "home_tab_enabled": false,
11
11
  "messages_tab_enabled": false,
12
12
  "messages_tab_read_only_enabled": false
13
13
  },
@@ -34,14 +34,14 @@
34
34
  "command": "/incident",
35
35
  "url": "{{SERVER_URL}}/api/slack/interactive",
36
36
  "description": "Create a new Incident in OneUptime",
37
- "usage_hint": "/incident [incident title]",
37
+ "usage_hint": "[incident title]",
38
38
  "should_escape": false
39
39
  },
40
40
  {
41
41
  "command": "/maintenance",
42
42
  "url": "{{SERVER_URL}}/api/slack/interactive",
43
43
  "description": "Create a new Scheduled Maintenance in OneUptime",
44
- "usage_hint": "/maintenance [maintenance title]",
44
+ "usage_hint": "[maintenance title]",
45
45
  "should_escape": false
46
46
  }
47
47
  ]
@@ -6,6 +6,7 @@ import { JSONObject } from "../../../Types/JSON";
6
6
  import WorkspaceChannelInvitationPayload from "../../../Types/Workspace/WorkspaceChannelInvitationPayload";
7
7
  import WorkspaceMessagePayload, {
8
8
  WorkspaceCheckboxBlock,
9
+ WorkspaceDateTimePickerBlock,
9
10
  WorkspaceDropdownBlock,
10
11
  WorkspaceMessageBlock,
11
12
  WorkspaceMessagePayloadButton,
@@ -126,6 +127,12 @@ export default class WorkspaceBase {
126
127
  throw new NotImplementedException();
127
128
  }
128
129
 
130
+ public static getDateTimePickerBlock(_data: {
131
+ payloadDateTimePickerBlock: WorkspaceDateTimePickerBlock;
132
+ }): JSONObject {
133
+ throw new NotImplementedException();
134
+ }
135
+
129
136
  public static async inviteUserToChannelByChannelId(_data: {
130
137
  authToken: string;
131
138
  channelId: string;
@@ -263,6 +270,13 @@ export default class WorkspaceBase {
263
270
  }),
264
271
  );
265
272
  break;
273
+ case "WorkspaceDateTimePickerBlock":
274
+ blocks.push(
275
+ this.getDateTimePickerBlock({
276
+ payloadDateTimePickerBlock: block as WorkspaceDateTimePickerBlock,
277
+ }),
278
+ );
279
+ break;
266
280
  default:
267
281
  logger.error("Unknown block type: " + block._type);
268
282
  break;
@@ -0,0 +1,69 @@
1
+ import ObjectID from "../../../../Types/ObjectID";
2
+ import NotificationRuleEventType from "../../../../Types/Workspace/NotificationRules/EventType";
3
+ import NotificationRuleWorkspaceChannel from "../../../../Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel";
4
+ import { WorkspaceMessageBlock } from "../../../../Types/Workspace/WorkspaceMessagePayload";
5
+ import WorkspaceType from "../../../../Types/Workspace/WorkspaceType";
6
+ import WorkspaceNotificationRuleService, {
7
+ MessageBlocksByWorkspaceType,
8
+ } from "../../../Services/WorkspaceNotificationRuleService";
9
+ import logger from "../../Logger";
10
+ import SlackAlertMessages from "../Slack/Messages/Alert";
11
+
12
+ export default class AlertWorkspaceMessages {
13
+ public static async createChannelsAndInviteUsersToChannels(data: {
14
+ projectId: ObjectID;
15
+ alertId: ObjectID;
16
+ alertNumber: number;
17
+ }): Promise<{
18
+ channelsCreated: NotificationRuleWorkspaceChannel[];
19
+ } | null> {
20
+ try {
21
+ // we will notify the workspace about the alert creation with the bot tokken which is in WorkspaceProjectAuth Table.
22
+ return await WorkspaceNotificationRuleService.createChannelsAndInviteUsersToChannelsBasedOnRules(
23
+ {
24
+ projectId: data.projectId,
25
+ notificationFor: {
26
+ alertId: data.alertId,
27
+ },
28
+ notificationRuleEventType: NotificationRuleEventType.Alert,
29
+ channelNameSiffix: data.alertNumber.toString(),
30
+ },
31
+ );
32
+ } catch (err) {
33
+ // log the error and continue.
34
+ logger.error("Error in createChannelsAndInviteUsersToChannels");
35
+ logger.error(err);
36
+ return null;
37
+ }
38
+ }
39
+
40
+ public static async getAlertCreateMessageBlocks(data: {
41
+ alertId: ObjectID;
42
+ projectId: ObjectID;
43
+ }): Promise<Array<MessageBlocksByWorkspaceType>> {
44
+ const { alertId, projectId } = data;
45
+
46
+ const slackBlocks: WorkspaceMessageBlock[] =
47
+ await SlackAlertMessages.getAlertCreateMessageBlocks({
48
+ alertId: alertId,
49
+ projectId: projectId!,
50
+ });
51
+
52
+ const microsoftTeamsBlocks: WorkspaceMessageBlock[] =
53
+ await SlackAlertMessages.getAlertCreateMessageBlocks({
54
+ alertId: alertId,
55
+ projectId: projectId!,
56
+ });
57
+
58
+ return [
59
+ {
60
+ workspaceType: WorkspaceType.Slack,
61
+ messageBlocks: slackBlocks,
62
+ },
63
+ {
64
+ workspaceType: WorkspaceType.MicrosoftTeams,
65
+ messageBlocks: microsoftTeamsBlocks,
66
+ },
67
+ ];
68
+ }
69
+ }
@@ -0,0 +1,73 @@
1
+ import ObjectID from "../../../../Types/ObjectID";
2
+ import NotificationRuleEventType from "../../../../Types/Workspace/NotificationRules/EventType";
3
+ import NotificationRuleWorkspaceChannel from "../../../../Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel";
4
+ import { WorkspaceMessageBlock } from "../../../../Types/Workspace/WorkspaceMessagePayload";
5
+ import WorkspaceType from "../../../../Types/Workspace/WorkspaceType";
6
+ import WorkspaceNotificationRuleService, {
7
+ MessageBlocksByWorkspaceType,
8
+ } from "../../../Services/WorkspaceNotificationRuleService";
9
+ import logger from "../../Logger";
10
+ import SlackScheduledMaintenanceMessages from "../Slack/Messages/ScheduledMaintenance";
11
+
12
+ export default class ScheduledMaintenanceWorkspaceMessages {
13
+ public static async createChannelsAndInviteUsersToChannels(data: {
14
+ projectId: ObjectID;
15
+ scheduledMaintenanceId: ObjectID;
16
+ scheduledMaintenanceNumber: number;
17
+ }): Promise<{
18
+ channelsCreated: NotificationRuleWorkspaceChannel[];
19
+ } | null> {
20
+ try {
21
+ // we will notify the workspace about the scheduledMaintenance creation with the bot tokken which is in WorkspaceProjectAuth Table.
22
+ return await WorkspaceNotificationRuleService.createChannelsAndInviteUsersToChannelsBasedOnRules(
23
+ {
24
+ projectId: data.projectId,
25
+ notificationFor: {
26
+ scheduledMaintenanceId: data.scheduledMaintenanceId,
27
+ },
28
+ notificationRuleEventType:
29
+ NotificationRuleEventType.ScheduledMaintenance,
30
+ channelNameSiffix: data.scheduledMaintenanceNumber.toString(),
31
+ },
32
+ );
33
+ } catch (err) {
34
+ // log the error and continue.
35
+ logger.error(err);
36
+ return null;
37
+ }
38
+ }
39
+
40
+ public static async getScheduledMaintenanceCreateMessageBlocks(data: {
41
+ scheduledMaintenanceId: ObjectID;
42
+ projectId: ObjectID;
43
+ }): Promise<Array<MessageBlocksByWorkspaceType>> {
44
+ const { scheduledMaintenanceId, projectId } = data;
45
+
46
+ const slackBlocks: WorkspaceMessageBlock[] =
47
+ await SlackScheduledMaintenanceMessages.getScheduledMaintenanceCreateMessageBlocks(
48
+ {
49
+ scheduledMaintenanceId: scheduledMaintenanceId,
50
+ projectId: projectId!,
51
+ },
52
+ );
53
+
54
+ const microsoftTeamsBlocks: WorkspaceMessageBlock[] =
55
+ await SlackScheduledMaintenanceMessages.getScheduledMaintenanceCreateMessageBlocks(
56
+ {
57
+ scheduledMaintenanceId: scheduledMaintenanceId,
58
+ projectId: projectId!,
59
+ },
60
+ );
61
+
62
+ return [
63
+ {
64
+ workspaceType: WorkspaceType.Slack,
65
+ messageBlocks: slackBlocks,
66
+ },
67
+ {
68
+ workspaceType: WorkspaceType.MicrosoftTeams,
69
+ messageBlocks: microsoftTeamsBlocks,
70
+ },
71
+ ];
72
+ }
73
+ }
package/Types/Date.ts CHANGED
@@ -9,6 +9,11 @@ import Timezone from "./Timezone";
9
9
  export const Moment: typeof moment = moment;
10
10
 
11
11
  export default class OneUptimeDate {
12
+ // get date time from unix timestamp
13
+ public static fromUnixTimestamp(timestamp: number): Date {
14
+ return new Date(timestamp * 1000);
15
+ }
16
+
12
17
  public static getInBetweenDatesAsFormattedString(
13
18
  inBetween: InBetween<Date>,
14
19
  ): string {
@@ -39,6 +39,15 @@ export interface WorkspaceTextBoxBlock extends WorkspaceMessageBlock {
39
39
  optional?: boolean | undefined;
40
40
  }
41
41
 
42
+ export interface WorkspaceDateTimePickerBlock extends WorkspaceMessageBlock {
43
+ _type: "WorkspaceDateTimePickerBlock";
44
+ label: string;
45
+ blockId: string;
46
+ initialValue?: string | undefined;
47
+ description?: string | undefined;
48
+ optional?: boolean | undefined;
49
+ }
50
+
42
51
  export interface WorkspacePayloadImage extends WorkspaceMessageBlock {
43
52
  _type: "WorkspacePayloadImage";
44
53
  imageUrl: URL;
@@ -15,6 +15,9 @@ import WorkspaceUserAuthTokenService from "../Services/WorkspaceUserAuthTokenSer
15
15
  import WorkspaceType from "../../Types/Workspace/WorkspaceType";
16
16
  import SlackAuthAction from "../Utils/Workspace/Slack/Actions/Auth";
17
17
  import SlackIncidentActions from "../Utils/Workspace/Slack/Actions/Incident";
18
+ import SlackAlertActions from "../Utils/Workspace/Slack/Actions/Alert";
19
+ import SlackScheduledMaintenanceActions from "../Utils/Workspace/Slack/Actions/ScheduledMaintenance";
20
+ import LIMIT_MAX from "../../Types/Database/LimitMax";
18
21
  export default class SlackAPI {
19
22
  getRouter() {
20
23
  const router = Express.getRouter();
@@ -164,6 +167,37 @@ export default class SlackAPI {
164
167
  });
165
168
  logger.debug("Slack Interactive Auth Result: ");
166
169
  logger.debug(authResult);
170
+ // if slack uninstall app then,
171
+ if (authResult.payloadType === "app_uninstall") {
172
+ logger.debug("Slack App Uninstall Request: ");
173
+ // remove the project auth and user auth.
174
+ // delete all user auth tokens for this project.
175
+ await WorkspaceUserAuthTokenService.deleteBy({
176
+ query: {
177
+ projectId: authResult.projectId,
178
+ workspaceType: WorkspaceType.Slack,
179
+ },
180
+ limit: LIMIT_MAX,
181
+ skip: 0,
182
+ props: {
183
+ isRoot: true,
184
+ },
185
+ });
186
+ await WorkspaceProjectAuthTokenService.deleteBy({
187
+ query: {
188
+ projectId: authResult.projectId,
189
+ workspaceType: WorkspaceType.Slack,
190
+ },
191
+ limit: 1,
192
+ skip: 0,
193
+ props: {
194
+ isRoot: true,
195
+ },
196
+ });
197
+ logger.debug("Slack App Uninstall Request: Deleted all auth tokens.");
198
+ // return empty response.
199
+ return Response.sendTextResponse(req, res, "");
200
+ }
167
201
  if (authResult.isAuthorized === false) {
168
202
  // return empty response if not authorized. Do nothing in this case.
169
203
  return Response.sendTextResponse(req, res, "");
@@ -182,6 +216,26 @@ export default class SlackAPI {
182
216
  res: res,
183
217
  });
184
218
  }
219
+ if (SlackAlertActions.isAlertAction({
220
+ actionType: action.actionType,
221
+ })) {
222
+ return SlackAlertActions.handleAlertAction({
223
+ slackRequest: authResult,
224
+ action: action,
225
+ req: req,
226
+ res: res,
227
+ });
228
+ }
229
+ if (SlackScheduledMaintenanceActions.isScheduledMaintenanceAction({
230
+ actionType: action.actionType,
231
+ })) {
232
+ return SlackScheduledMaintenanceActions.handleScheduledMaintenanceAction({
233
+ slackRequest: authResult,
234
+ action: action,
235
+ req: req,
236
+ res: res,
237
+ });
238
+ }
185
239
  }
186
240
  return Response.sendErrorResponse(req, res, new BadRequestException("Invalid request"));
187
241
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SlackAPI.js","sourceRoot":"","sources":["../../../../Server/API/SlackAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlackAPI.js","sourceRoot":"","sources":["../../../../Server/API/SlackAPI.ts"],"names":[],"mappings":"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"}