Skip to content

Commit 2ce63c7

Browse files
committed
Fixed a bug where the cancelled context wasn't being passed back to the SubmitEvent callback
1 parent f526071 commit 2ce63c7

File tree

1 file changed

+25
-27
lines changed

1 file changed

+25
-27
lines changed

src/ExceptionlessClient.ts

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@ import { IConfigurationSettings } from './configuration/IConfigurationSettings';
22
import { Configuration } from './configuration/Configuration';
33
import { EventBuilder } from './EventBuilder';
44
import { IEvent } from './models/IEvent';
5-
import { IError } from './models/IError';
65
import { IUserDescription } from './models/IUserDescription';
76
import { EventPluginContext } from './plugins/EventPluginContext';
87
import { EventPluginManager } from './plugins/EventPluginManager';
98
import { ContextData } from './plugins/ContextData';
109
import { SubmissionResponse } from './submission/SubmissionResponse';
1110

1211
export class ExceptionlessClient {
12+
/**
13+
* The default ExceptionlessClient instance.
14+
* @type {ExceptionlessClient}
15+
* @private
16+
*/
17+
private static _instance:ExceptionlessClient = null;
18+
1319
public config:Configuration;
1420

1521
constructor();
@@ -24,7 +30,7 @@ export class ExceptionlessClient {
2430
}
2531

2632
public createException(exception:Error): EventBuilder {
27-
var pluginContextData = new ContextData();
33+
let pluginContextData = new ContextData();
2834
pluginContextData.setException(exception);
2935
return this.createEvent(pluginContextData).setType('error');
3036
}
@@ -34,7 +40,7 @@ export class ExceptionlessClient {
3440
}
3541

3642
public createUnhandledException(exception:Error, submissionMethod?:string): EventBuilder {
37-
var builder = this.createException(exception);
43+
let builder = this.createException(exception);
3844
builder.pluginContextData.markAsUnhandledError();
3945
builder.pluginContextData.setSubmissionMethod(submissionMethod);
4046

@@ -57,15 +63,15 @@ export class ExceptionlessClient {
5763
public createLog(source:string, message:string): EventBuilder;
5864
public createLog(source:string, message:string, level:string): EventBuilder;
5965
public createLog(sourceOrMessage:string, message?:string, level?:string): EventBuilder {
60-
var builder = this.createEvent().setType('log');
66+
let builder = this.createEvent().setType('log');
6167

6268
if (message && level) {
6369
builder = builder.setSource(sourceOrMessage).setMessage(message).setProperty('@level', level);
6470
} else if (message) {
6571
builder = builder.setSource(sourceOrMessage).setMessage(message);
6672
} else {
6773
// TODO: Look into using https://www.stevefenton.co.uk/Content/Blog/Date/201304/Blog/Obtaining-A-Class-Name-At-Runtime-In-TypeScript/
68-
var caller:any = arguments.callee.caller;
74+
let caller:any = arguments.callee.caller;
6975
builder = builder.setSource(caller && caller.name).setMessage(sourceOrMessage);
7076
}
7177

@@ -114,21 +120,22 @@ export class ExceptionlessClient {
114120
* @param callback
115121
*/
116122
public submitEvent(event:IEvent, pluginContextData?:ContextData, callback?:(context:EventPluginContext) => void): void {
117-
function cancelled() {
123+
function cancelled(context:EventPluginContext) {
118124
if (!!context) {
119125
context.cancelled = true;
120126
}
121127

122128
return !!callback && callback(context);
123129
}
124130

131+
let context = new EventPluginContext(this, event, pluginContextData);
125132
if (!event) {
126-
return cancelled();
133+
return cancelled(context);
127134
}
128135

129136
if (!this.config.enabled) {
130137
this.config.log.info('Event submission is currently disabled.');
131-
return cancelled();
138+
return cancelled(context);
132139
}
133140

134141
if (!event.data) {
@@ -139,10 +146,9 @@ export class ExceptionlessClient {
139146
event.tags = [];
140147
}
141148

142-
var context = new EventPluginContext(this, event, pluginContextData);
143-
EventPluginManager.run(context, function (context:EventPluginContext) {
144-
let ev = context.event;
145-
if (!context.cancelled) {
149+
EventPluginManager.run(context, function (ctx:EventPluginContext) {
150+
let ev = ctx.event;
151+
if (!ctx.cancelled) {
146152
// ensure all required data
147153
if (!ev.type || ev.type.length === 0) {
148154
ev.type = 'log';
@@ -152,16 +158,16 @@ export class ExceptionlessClient {
152158
ev.date = new Date();
153159
}
154160

155-
var config = context.client.config;
161+
let config = ctx.client.config;
156162
config.queue.enqueue(ev);
157163

158164
if (ev.reference_id && ev.reference_id.length > 0) {
159-
context.log.info(`Setting last reference id '${ev.reference_id}'`);
165+
ctx.log.info(`Setting last reference id '${ev.reference_id}'`);
160166
config.lastReferenceIdManager.setLast(ev.reference_id);
161167
}
162168
}
163169

164-
!!callback && callback(context);
170+
!!callback && callback(ctx);
165171
});
166172
}
167173

@@ -176,10 +182,10 @@ export class ExceptionlessClient {
176182
return !!callback && callback(new SubmissionResponse(500, 'cancelled'));
177183
}
178184

179-
var userDescription:IUserDescription = { email_address: email, description: description };
180-
var response = this.config.submissionClient.postUserDescription(referenceId, userDescription, this.config, (response:SubmissionResponse) => {
185+
let userDescription:IUserDescription = { email_address: email, description: description };
186+
this.config.submissionClient.postUserDescription(referenceId, userDescription, this.config, (response:SubmissionResponse) => {
181187
if (!response.success) {
182-
this.config.log.error(`Failed to submit user email and description for event '${referenceId}': ${response.statusCode} ${response.message}`)
188+
this.config.log.error(`Failed to submit user email and description for event '${referenceId}': ${response.statusCode} ${response.message}`);
183189
}
184190

185191
!!callback && callback(response);
@@ -194,20 +200,12 @@ export class ExceptionlessClient {
194200
return this.config.lastReferenceIdManager.getLast();
195201
}
196202

197-
/**
198-
* The default ExceptionlessClient instance.
199-
* @type {ExceptionlessClient}
200-
* @private
201-
*/
202-
private static _instance:ExceptionlessClient = null;
203-
204-
205203
/**
206204
* The default ExceptionlessClient instance.
207205
* @type {ExceptionlessClient}
208206
*/
209207
public static get default() {
210-
if(ExceptionlessClient._instance === null) {
208+
if (ExceptionlessClient._instance === null) {
211209
ExceptionlessClient._instance = new ExceptionlessClient(null);
212210
}
213211

0 commit comments

Comments
 (0)