@oneuptime/common 10.0.6 → 10.0.7

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.
@@ -116,6 +116,42 @@ export default class UserMiddleware {
116
116
  }
117
117
  }
118
118
 
119
+ /*
120
+ * Also check x-sso-tokens header (mobile app flow).
121
+ * The header value is a JSON-encoded map of { projectId: ssoToken }.
122
+ */
123
+ const ssoTokensHeader: string | undefined = req.headers["x-sso-tokens"] as
124
+ | string
125
+ | undefined;
126
+
127
+ if (ssoTokensHeader) {
128
+ try {
129
+ const headerTokens: Record<string, string> =
130
+ JSON.parse(ssoTokensHeader);
131
+
132
+ for (const projectId of Object.keys(headerTokens)) {
133
+ const token: string | undefined = headerTokens[projectId];
134
+
135
+ if (!token || typeof token !== "string") {
136
+ continue;
137
+ }
138
+
139
+ try {
140
+ const decoded: JSONWebTokenData = JSONWebToken.decode(token);
141
+
142
+ if (decoded.projectId?.toString() === projectId) {
143
+ ssoTokens[projectId] = token;
144
+ }
145
+ } catch (err) {
146
+ logger.error(err);
147
+ continue;
148
+ }
149
+ }
150
+ } catch (err) {
151
+ logger.error(err);
152
+ }
153
+ }
154
+
119
155
  return ssoTokens;
120
156
  }
121
157
 
@@ -1110,6 +1110,9 @@ export class Service extends DatabaseService<Model> {
1110
1110
  ...(alert.alertNumber !== undefined && {
1111
1111
  alertNumber: alert.alertNumber,
1112
1112
  }),
1113
+ ...(alert.alertNumberWithPrefix && {
1114
+ alertNumberWithPrefix: alert.alertNumberWithPrefix,
1115
+ }),
1113
1116
  alertId: alert.id!.toString(),
1114
1117
  projectId: alert.projectId!.toString(),
1115
1118
  });
@@ -1187,6 +1190,9 @@ export class Service extends DatabaseService<Model> {
1187
1190
  ...(incident.incidentNumber !== undefined && {
1188
1191
  incidentNumber: incident.incidentNumber,
1189
1192
  }),
1193
+ ...(incident.incidentNumberWithPrefix && {
1194
+ incidentNumberWithPrefix: incident.incidentNumberWithPrefix,
1195
+ }),
1190
1196
  incidentId: incident.id!.toString(),
1191
1197
  projectId: incident.projectId!.toString(),
1192
1198
  });
@@ -1309,6 +1315,83 @@ export class Service extends DatabaseService<Model> {
1309
1315
  });
1310
1316
  });
1311
1317
  }
1318
+
1319
+ // send push notification for incident episode
1320
+ if (
1321
+ options.userNotificationEventType ===
1322
+ UserNotificationEventType.IncidentEpisodeCreated &&
1323
+ incidentEpisode
1324
+ ) {
1325
+ logTimelineItem.status = UserNotificationStatus.Sending;
1326
+ logTimelineItem.statusMessage = `Sending push notification to device.`;
1327
+ logTimelineItem.userPushId = notificationRuleItem.userPush.id!;
1328
+
1329
+ const updatedLog: UserOnCallLogTimeline =
1330
+ await UserOnCallLogTimelineService.create({
1331
+ data: logTimelineItem,
1332
+ props: {
1333
+ isRoot: true,
1334
+ },
1335
+ });
1336
+
1337
+ const pushMessage: PushNotificationMessage =
1338
+ PushNotificationUtil.createIncidentEpisodeCreatedNotification({
1339
+ incidentEpisodeTitle: incidentEpisode.title!,
1340
+ projectName: incidentEpisode.project?.name || "OneUptime",
1341
+ incidentEpisodeViewLink: (
1342
+ await IncidentEpisodeService.getEpisodeLinkInDashboard(
1343
+ incidentEpisode.projectId!,
1344
+ incidentEpisode.id!,
1345
+ )
1346
+ ).toString(),
1347
+ ...(incidentEpisode.episodeNumber !== undefined && {
1348
+ episodeNumber: incidentEpisode.episodeNumber,
1349
+ }),
1350
+ ...(incidentEpisode.episodeNumberWithPrefix && {
1351
+ episodeNumberWithPrefix: incidentEpisode.episodeNumberWithPrefix,
1352
+ }),
1353
+ incidentEpisodeId: incidentEpisode.id!.toString(),
1354
+ projectId: incidentEpisode.projectId!.toString(),
1355
+ });
1356
+
1357
+ PushNotificationService.sendPushNotification(
1358
+ {
1359
+ devices: [
1360
+ {
1361
+ token: notificationRuleItem.userPush.deviceToken!,
1362
+ ...(notificationRuleItem.userPush.deviceName && {
1363
+ name: notificationRuleItem.userPush.deviceName,
1364
+ }),
1365
+ },
1366
+ ],
1367
+ message: pushMessage,
1368
+ deviceType: notificationRuleItem.userPush
1369
+ .deviceType! as PushDeviceType,
1370
+ },
1371
+ {
1372
+ projectId: options.projectId,
1373
+ userOnCallLogTimelineId: updatedLog.id!,
1374
+ userId: notificationRuleItem.userId!,
1375
+ onCallPolicyId: options.onCallPolicyId,
1376
+ onCallPolicyEscalationRuleId: options.onCallPolicyEscalationRuleId,
1377
+ teamId: options.userBelongsToTeamId,
1378
+ onCallDutyPolicyExecutionLogTimelineId:
1379
+ options.onCallDutyPolicyExecutionLogTimelineId,
1380
+ onCallScheduleId: options.onCallScheduleId,
1381
+ },
1382
+ ).catch(async (err: Error) => {
1383
+ await UserOnCallLogTimelineService.updateOneById({
1384
+ id: updatedLog.id!,
1385
+ data: {
1386
+ status: UserNotificationStatus.Error,
1387
+ statusMessage: err.message || "Error sending push notification.",
1388
+ },
1389
+ props: {
1390
+ isRoot: true,
1391
+ },
1392
+ });
1393
+ });
1394
+ }
1312
1395
  }
1313
1396
 
1314
1397
  if (
@@ -23,7 +23,9 @@ export default class BrowserUtil {
23
23
  "--disable-dev-shm-usage",
24
24
  "--disable-gpu",
25
25
  "--disable-software-rasterizer",
26
- "--single-process",
26
+ "--disable-dbus", // no D-Bus daemon in containers
27
+ "--disable-features=dbus", // additional D-Bus feature gate
28
+ "--no-zygote", // skip zygote process that fails OOM score adjustments in containers
27
29
  ];
28
30
 
29
31
  // Firefox preferences for stability in containerized environments
@@ -31,8 +33,6 @@ export default class BrowserUtil {
31
33
  string,
32
34
  string | number | boolean
33
35
  > = {
34
- "browser.tabs.remote.autostart": false, // disable multi-process (electrolysis)
35
- "dom.ipc.processCount": 1, // single content process
36
36
  "gfx.webrender.all": false, // disable GPU-based WebRender
37
37
  "media.hardware-video-decoding.enabled": false, // disable hardware video decoding
38
38
  "layers.acceleration.disabled": true, // disable GPU-accelerated layers
@@ -77,22 +77,46 @@ export default class VMRunner {
77
77
  };
78
78
  `);
79
79
 
80
- // axios (get, post, put, delete) - bridged via applySyncPromise
80
+ /*
81
+ * axios (get, head, options, post, put, patch, delete, request)
82
+ * bridged via applySyncPromise.
83
+ *
84
+ * For GET/HEAD/OPTIONS/DELETE: args = [method, url, configJson?]
85
+ * For POST/PUT/PATCH: args = [method, url, bodyJson?, configJson?]
86
+ * For REQUEST: args = ['request', '', configJson]
87
+ */
81
88
  const axiosRef: ivm.Reference<
82
- (method: string, url: string, dataOrConfig?: string) => Promise<string>
89
+ (
90
+ method: string,
91
+ url: string,
92
+ arg1?: string,
93
+ arg2?: string,
94
+ ) => Promise<string>
83
95
  > = new ivm.Reference(
84
96
  async (
85
97
  method: string,
86
98
  url: string,
87
- dataOrConfig?: string,
99
+ arg1?: string,
100
+ arg2?: string,
88
101
  ): Promise<string> => {
89
- const parsed: JSONObject | undefined = dataOrConfig
90
- ? (JSON.parse(dataOrConfig) as JSONObject)
102
+ const methodsWithBody: string[] = ["post", "put", "patch"];
103
+ const hasBody: boolean = methodsWithBody.includes(method);
104
+
105
+ /*
106
+ * For POST/PUT/PATCH: arg1=body, arg2=config
107
+ * For GET/HEAD/OPTIONS/DELETE/REQUEST: arg1=config
108
+ */
109
+ const body: JSONObject | undefined =
110
+ hasBody && arg1 ? (JSON.parse(arg1) as JSONObject) : undefined;
111
+
112
+ const configStr: string | undefined = hasBody ? arg2 : arg1;
113
+ const config: JSONObject | undefined = configStr
114
+ ? (JSON.parse(configStr) as JSONObject)
91
115
  : undefined;
92
116
 
93
117
  // Reconstruct real http/https Agents from serialized markers
94
- if (parsed) {
95
- const httpsAgentConfig: JSONObject | undefined = parsed[
118
+ if (config) {
119
+ const httpsAgentConfig: JSONObject | undefined = config[
96
120
  "httpsAgent"
97
121
  ] as JSONObject | undefined;
98
122
 
@@ -100,12 +124,12 @@ export default class VMRunner {
100
124
  httpsAgentConfig &&
101
125
  httpsAgentConfig["__agentType"] === "__https_agent__"
102
126
  ) {
103
- parsed["httpsAgent"] = new https.Agent(
127
+ config["httpsAgent"] = new https.Agent(
104
128
  httpsAgentConfig["options"] as https.AgentOptions,
105
129
  ) as unknown as JSONObject;
106
130
  }
107
131
 
108
- const httpAgentConfig: JSONObject | undefined = parsed[
132
+ const httpAgentConfig: JSONObject | undefined = config[
109
133
  "httpAgent"
110
134
  ] as JSONObject | undefined;
111
135
 
@@ -113,7 +137,7 @@ export default class VMRunner {
113
137
  httpAgentConfig &&
114
138
  httpAgentConfig["__agentType"] === "__http_agent__"
115
139
  ) {
116
- parsed["httpAgent"] = new http.Agent(
140
+ config["httpAgent"] = new http.Agent(
117
141
  httpAgentConfig["options"] as http.AgentOptions,
118
142
  ) as unknown as JSONObject;
119
143
  }
@@ -123,24 +147,56 @@ export default class VMRunner {
123
147
 
124
148
  switch (method) {
125
149
  case "get":
126
- response = await axios.get(url, parsed);
150
+ response = await axios.get(url, config);
151
+ break;
152
+ case "head":
153
+ response = await axios.head(url, config);
154
+ break;
155
+ case "options":
156
+ response = await axios.options(url, config);
127
157
  break;
128
158
  case "post":
129
- response = await axios.post(url, parsed);
159
+ response = await axios.post(url, body, config);
130
160
  break;
131
161
  case "put":
132
- response = await axios.put(url, parsed);
162
+ response = await axios.put(url, body, config);
163
+ break;
164
+ case "patch":
165
+ response = await axios.patch(url, body, config);
133
166
  break;
134
167
  case "delete":
135
- response = await axios.delete(url, parsed);
168
+ response = await axios.delete(url, config);
169
+ break;
170
+ case "request":
171
+ response = await axios.request(
172
+ config as Parameters<typeof axios.request>[0],
173
+ );
136
174
  break;
137
175
  default:
138
176
  throw new Error(`Unsupported HTTP method: ${method}`);
139
177
  }
140
178
 
179
+ /*
180
+ * Convert AxiosHeaders to a plain object before serializing.
181
+ * JSON.stringify calls AxiosHeaders.toJSON(key) with a truthy key,
182
+ * which makes it join array headers (like set-cookie) with commas.
183
+ * This produces invalid Cookie headers when user code forwards them.
184
+ */
185
+ const plainHeaders: Record<string, unknown> = {};
186
+
187
+ if (response.headers) {
188
+ for (const key of Object.keys(
189
+ response.headers as Record<string, unknown>,
190
+ )) {
191
+ plainHeaders[key] = (response.headers as Record<string, unknown>)[
192
+ key
193
+ ];
194
+ }
195
+ }
196
+
141
197
  return JSON.stringify({
142
198
  status: response.status,
143
- headers: response.headers,
199
+ headers: plainHeaders,
144
200
  data: response.data,
145
201
  });
146
202
  },
@@ -149,24 +205,120 @@ export default class VMRunner {
149
205
  await jail.set("_axiosRef", axiosRef);
150
206
 
151
207
  await context.eval(`
152
- const axios = {
153
- get: async (url, config) => {
154
- const r = await _axiosRef.applySyncPromise(undefined, ['get', url, config ? JSON.stringify(config) : undefined]);
208
+ function _assertNoFunctions(obj, path) {
209
+ if (!obj || typeof obj !== 'object') return;
210
+ if (Array.isArray(obj)) {
211
+ for (let i = 0; i < obj.length; i++) {
212
+ const fullPath = path + '[' + i + ']';
213
+ if (typeof obj[i] === 'function') {
214
+ throw new Error(
215
+ 'Functions are not supported in axios config because of security. ' +
216
+ 'Found a function at "' + fullPath + '". Please remove it or replace it with a plain value.'
217
+ );
218
+ }
219
+ if (obj[i] && typeof obj[i] === 'object') {
220
+ _assertNoFunctions(obj[i], fullPath);
221
+ }
222
+ }
223
+ return;
224
+ }
225
+ for (const key of Object.keys(obj)) {
226
+ const fullPath = path ? path + '.' + key : key;
227
+ if (typeof obj[key] === 'function') {
228
+ throw new Error(
229
+ 'Functions are not supported in axios config because of security. ' +
230
+ 'Found a function at "' + fullPath + '". Please remove it or replace it with a plain value.'
231
+ );
232
+ }
233
+ if (obj[key] && typeof obj[key] === 'object') {
234
+ _assertNoFunctions(obj[key], fullPath);
235
+ }
236
+ }
237
+ }
238
+
239
+ function _makeAxiosInstance(defaults) {
240
+ function mergeConfig(overrides) {
241
+ if (!defaults && !overrides) return undefined;
242
+ if (!defaults) return overrides;
243
+ if (!overrides) return Object.assign({}, defaults);
244
+ const merged = Object.assign({}, defaults, overrides);
245
+ if (defaults.headers && overrides.headers) {
246
+ merged.headers = Object.assign({}, defaults.headers, overrides.headers);
247
+ }
248
+ return merged;
249
+ }
250
+
251
+ async function _request(config) {
252
+ const merged = mergeConfig(config);
253
+ if (merged) _assertNoFunctions(merged, 'config');
254
+ const r = await _axiosRef.applySyncPromise(undefined, ['request', '', merged ? JSON.stringify(merged) : undefined]);
155
255
  return JSON.parse(r);
156
- },
157
- post: async (url, data) => {
158
- const r = await _axiosRef.applySyncPromise(undefined, ['post', url, data ? JSON.stringify(data) : undefined]);
256
+ }
257
+
258
+ // Make instance callable: axios(config) or axios(url, config)
259
+ const instance = async function(urlOrConfig, config) {
260
+ if (typeof urlOrConfig === 'object') {
261
+ return _request(urlOrConfig);
262
+ }
263
+ return _request(Object.assign({}, config || {}, { url: urlOrConfig }));
264
+ };
265
+
266
+ instance.request = _request;
267
+ instance.get = async (url, config) => {
268
+ const merged = mergeConfig(config);
269
+ if (merged) _assertNoFunctions(merged, 'config');
270
+ const r = await _axiosRef.applySyncPromise(undefined, ['get', url, merged ? JSON.stringify(merged) : undefined]);
159
271
  return JSON.parse(r);
160
- },
161
- put: async (url, data) => {
162
- const r = await _axiosRef.applySyncPromise(undefined, ['put', url, data ? JSON.stringify(data) : undefined]);
272
+ };
273
+ instance.head = async (url, config) => {
274
+ const merged = mergeConfig(config);
275
+ if (merged) _assertNoFunctions(merged, 'config');
276
+ const r = await _axiosRef.applySyncPromise(undefined, ['head', url, merged ? JSON.stringify(merged) : undefined]);
163
277
  return JSON.parse(r);
164
- },
165
- delete: async (url, config) => {
166
- const r = await _axiosRef.applySyncPromise(undefined, ['delete', url, config ? JSON.stringify(config) : undefined]);
278
+ };
279
+ instance.options = async (url, config) => {
280
+ const merged = mergeConfig(config);
281
+ if (merged) _assertNoFunctions(merged, 'config');
282
+ const r = await _axiosRef.applySyncPromise(undefined, ['options', url, merged ? JSON.stringify(merged) : undefined]);
167
283
  return JSON.parse(r);
168
- },
169
- };
284
+ };
285
+ instance.post = async (url, data, config) => {
286
+ const merged = mergeConfig(config);
287
+ if (data) _assertNoFunctions(data, 'data');
288
+ if (merged) _assertNoFunctions(merged, 'config');
289
+ const r = await _axiosRef.applySyncPromise(undefined, ['post', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
290
+ return JSON.parse(r);
291
+ };
292
+ instance.put = async (url, data, config) => {
293
+ const merged = mergeConfig(config);
294
+ if (data) _assertNoFunctions(data, 'data');
295
+ if (merged) _assertNoFunctions(merged, 'config');
296
+ const r = await _axiosRef.applySyncPromise(undefined, ['put', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
297
+ return JSON.parse(r);
298
+ };
299
+ instance.patch = async (url, data, config) => {
300
+ const merged = mergeConfig(config);
301
+ if (data) _assertNoFunctions(data, 'data');
302
+ if (merged) _assertNoFunctions(merged, 'config');
303
+ const r = await _axiosRef.applySyncPromise(undefined, ['patch', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
304
+ return JSON.parse(r);
305
+ };
306
+ instance.delete = async (url, config) => {
307
+ const merged = mergeConfig(config);
308
+ if (merged) _assertNoFunctions(merged, 'config');
309
+ const r = await _axiosRef.applySyncPromise(undefined, ['delete', url, merged ? JSON.stringify(merged) : undefined]);
310
+ return JSON.parse(r);
311
+ };
312
+ instance.create = (instanceDefaults) => {
313
+ if (instanceDefaults) _assertNoFunctions(instanceDefaults, 'defaults');
314
+ const combinedDefaults = mergeConfig(instanceDefaults);
315
+ return _makeAxiosInstance(combinedDefaults);
316
+ };
317
+
318
+ return instance;
319
+ }
320
+
321
+ const axios = _makeAxiosInstance(null);
170
322
  `);
171
323
 
172
324
  // crypto (createHash, createHmac, randomBytes) - bridged via applySync
@@ -1,10 +1,11 @@
1
1
  <link rel="preconnect" href="https://fonts.googleapis.com">
2
2
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
3
+ <link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap" as="style">
3
4
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
4
5
  rel="stylesheet">
5
6
  <style>
6
7
  * {
7
- font-family: Inter;
8
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
8
9
  }
9
10
 
10
11
 
@@ -34,6 +35,7 @@
34
35
  width: auto;
35
36
  }
36
37
  </style>
38
+ <link rel="preload" href="https://cdn.tailwindcss.com" as="script">
37
39
  <script src="https://cdn.tailwindcss.com"></script>
38
40
 
39
41
  <!-- Google Tag Manager -->
@@ -93,6 +93,7 @@ describe("UserMiddleware", () => {
93
93
 
94
94
  const req: Partial<ExpressRequest> = {
95
95
  cookies: { "sso-token": mockedAccessToken },
96
+ headers: {},
96
97
  };
97
98
 
98
99
  test("should return an empty object when ssoToken is not passed", () => {
@@ -55,7 +55,7 @@ export default class UserMiddleware {
55
55
  return undefined;
56
56
  }
57
57
  static getSsoTokens(req) {
58
- var _a;
58
+ var _a, _b;
59
59
  const ssoTokens = {};
60
60
  // get sso tokens from cookies.
61
61
  const cookies = CookieUtil.getAllCookies(req);
@@ -78,6 +78,35 @@ export default class UserMiddleware {
78
78
  }
79
79
  }
80
80
  }
81
+ /*
82
+ * Also check x-sso-tokens header (mobile app flow).
83
+ * The header value is a JSON-encoded map of { projectId: ssoToken }.
84
+ */
85
+ const ssoTokensHeader = req.headers["x-sso-tokens"];
86
+ if (ssoTokensHeader) {
87
+ try {
88
+ const headerTokens = JSON.parse(ssoTokensHeader);
89
+ for (const projectId of Object.keys(headerTokens)) {
90
+ const token = headerTokens[projectId];
91
+ if (!token || typeof token !== "string") {
92
+ continue;
93
+ }
94
+ try {
95
+ const decoded = JSONWebToken.decode(token);
96
+ if (((_b = decoded.projectId) === null || _b === void 0 ? void 0 : _b.toString()) === projectId) {
97
+ ssoTokens[projectId] = token;
98
+ }
99
+ }
100
+ catch (err) {
101
+ logger.error(err);
102
+ continue;
103
+ }
104
+ }
105
+ }
106
+ catch (err) {
107
+ logger.error(err);
108
+ }
109
+ }
81
110
  return ssoTokens;
82
111
  }
83
112
  static doesSsoTokenForProjectExist(req, projectId, userId) {
@@ -1 +1 @@
1
- {"version":3,"file":"UserAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/UserAuthorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/UserAuthorization.ts"],"names":[],"mappings":"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"}
@@ -60,7 +60,7 @@ export class Service extends DatabaseService {
60
60
  }
61
61
  async executeNotificationRuleItem(userNotificationRuleId, options) {
62
62
  // get user notification log and see if this rule has already been executed. If so then skip.
63
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
63
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21;
64
64
  const userOnCallLog = await UserOnCallLogService.findOneById({
65
65
  id: options.userNotificationLogId,
66
66
  props: {
@@ -819,8 +819,10 @@ export class Service extends DatabaseService {
819
819
  isRoot: true,
820
820
  },
821
821
  });
822
- const pushMessage = PushNotificationUtil.createAlertCreatedNotification(Object.assign(Object.assign({ alertTitle: alert.title, projectName: ((_16 = alert.project) === null || _16 === void 0 ? void 0 : _16.name) || "OneUptime", alertViewLink: (await AlertService.getAlertLinkInDashboard(alert.projectId, alert.id)).toString() }, (alert.alertNumber !== undefined && {
822
+ const pushMessage = PushNotificationUtil.createAlertCreatedNotification(Object.assign(Object.assign(Object.assign({ alertTitle: alert.title, projectName: ((_16 = alert.project) === null || _16 === void 0 ? void 0 : _16.name) || "OneUptime", alertViewLink: (await AlertService.getAlertLinkInDashboard(alert.projectId, alert.id)).toString() }, (alert.alertNumber !== undefined && {
823
823
  alertNumber: alert.alertNumber,
824
+ })), (alert.alertNumberWithPrefix && {
825
+ alertNumberWithPrefix: alert.alertNumberWithPrefix,
824
826
  })), { alertId: alert.id.toString(), projectId: alert.projectId.toString() }));
825
827
  // send push notification.
826
828
  PushNotificationService.sendPushNotification({
@@ -869,8 +871,10 @@ export class Service extends DatabaseService {
869
871
  isRoot: true,
870
872
  },
871
873
  });
872
- const pushMessage = PushNotificationUtil.createIncidentCreatedNotification(Object.assign(Object.assign({ incidentTitle: incident.title, projectName: ((_17 = incident.project) === null || _17 === void 0 ? void 0 : _17.name) || "OneUptime", incidentViewLink: (await IncidentService.getIncidentLinkInDashboard(incident.projectId, incident.id)).toString() }, (incident.incidentNumber !== undefined && {
874
+ const pushMessage = PushNotificationUtil.createIncidentCreatedNotification(Object.assign(Object.assign(Object.assign({ incidentTitle: incident.title, projectName: ((_17 = incident.project) === null || _17 === void 0 ? void 0 : _17.name) || "OneUptime", incidentViewLink: (await IncidentService.getIncidentLinkInDashboard(incident.projectId, incident.id)).toString() }, (incident.incidentNumber !== undefined && {
873
875
  incidentNumber: incident.incidentNumber,
876
+ })), (incident.incidentNumberWithPrefix && {
877
+ incidentNumberWithPrefix: incident.incidentNumberWithPrefix,
874
878
  })), { incidentId: incident.id.toString(), projectId: incident.projectId.toString() }));
875
879
  // send push notification.
876
880
  PushNotificationService.sendPushNotification({
@@ -955,9 +959,58 @@ export class Service extends DatabaseService {
955
959
  });
956
960
  });
957
961
  }
962
+ // send push notification for incident episode
963
+ if (options.userNotificationEventType ===
964
+ UserNotificationEventType.IncidentEpisodeCreated &&
965
+ incidentEpisode) {
966
+ logTimelineItem.status = UserNotificationStatus.Sending;
967
+ logTimelineItem.statusMessage = `Sending push notification to device.`;
968
+ logTimelineItem.userPushId = notificationRuleItem.userPush.id;
969
+ const updatedLog = await UserOnCallLogTimelineService.create({
970
+ data: logTimelineItem,
971
+ props: {
972
+ isRoot: true,
973
+ },
974
+ });
975
+ const pushMessage = PushNotificationUtil.createIncidentEpisodeCreatedNotification(Object.assign(Object.assign(Object.assign({ incidentEpisodeTitle: incidentEpisode.title, projectName: ((_19 = incidentEpisode.project) === null || _19 === void 0 ? void 0 : _19.name) || "OneUptime", incidentEpisodeViewLink: (await IncidentEpisodeService.getEpisodeLinkInDashboard(incidentEpisode.projectId, incidentEpisode.id)).toString() }, (incidentEpisode.episodeNumber !== undefined && {
976
+ episodeNumber: incidentEpisode.episodeNumber,
977
+ })), (incidentEpisode.episodeNumberWithPrefix && {
978
+ episodeNumberWithPrefix: incidentEpisode.episodeNumberWithPrefix,
979
+ })), { incidentEpisodeId: incidentEpisode.id.toString(), projectId: incidentEpisode.projectId.toString() }));
980
+ PushNotificationService.sendPushNotification({
981
+ devices: [
982
+ Object.assign({ token: notificationRuleItem.userPush.deviceToken }, (notificationRuleItem.userPush.deviceName && {
983
+ name: notificationRuleItem.userPush.deviceName,
984
+ })),
985
+ ],
986
+ message: pushMessage,
987
+ deviceType: notificationRuleItem.userPush
988
+ .deviceType,
989
+ }, {
990
+ projectId: options.projectId,
991
+ userOnCallLogTimelineId: updatedLog.id,
992
+ userId: notificationRuleItem.userId,
993
+ onCallPolicyId: options.onCallPolicyId,
994
+ onCallPolicyEscalationRuleId: options.onCallPolicyEscalationRuleId,
995
+ teamId: options.userBelongsToTeamId,
996
+ onCallDutyPolicyExecutionLogTimelineId: options.onCallDutyPolicyExecutionLogTimelineId,
997
+ onCallScheduleId: options.onCallScheduleId,
998
+ }).catch(async (err) => {
999
+ await UserOnCallLogTimelineService.updateOneById({
1000
+ id: updatedLog.id,
1001
+ data: {
1002
+ status: UserNotificationStatus.Error,
1003
+ statusMessage: err.message || "Error sending push notification.",
1004
+ },
1005
+ props: {
1006
+ isRoot: true,
1007
+ },
1008
+ });
1009
+ });
1010
+ }
958
1011
  }
959
- if (((_19 = notificationRuleItem.userPush) === null || _19 === void 0 ? void 0 : _19.deviceToken) &&
960
- !((_20 = notificationRuleItem.userPush) === null || _20 === void 0 ? void 0 : _20.isVerified)) {
1012
+ if (((_20 = notificationRuleItem.userPush) === null || _20 === void 0 ? void 0 : _20.deviceToken) &&
1013
+ !((_21 = notificationRuleItem.userPush) === null || _21 === void 0 ? void 0 : _21.isVerified)) {
961
1014
  // create a log.
962
1015
  logTimelineItem.status = UserNotificationStatus.Error;
963
1016
  logTimelineItem.statusMessage = `Push notification not sent because device is not verified.`;