@bringg/dashboard-sdk 9.62.2 → 9.62.3-pre.0

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.
@@ -7,6 +7,6 @@ export default class GeocodingApi {
7
7
  autoComplete(address: string): Promise<AutoCompleteResponse>;
8
8
  getPlaceDetails(placeId: string): Promise<GetPlaceDetailsResponse>;
9
9
  reverseGeocode(lat: number, lng: number): Promise<BringgReverseGeocodedAddress>;
10
- subscribeToEvent(eventHandle: any): void;
11
- unsubscribeToEvent(eventHandle: any): void;
10
+ subscribeToEvent(eventHandle: (event: any) => void): void;
11
+ unsubscribeToEvent(eventHandle: (event: any) => void): void;
12
12
  }
@@ -21,7 +21,7 @@ var GeocodingApi = /** @class */ (function () {
21
21
  return this.geocodingEntity.reverseGeocode(lat, lng);
22
22
  };
23
23
  GeocodingApi.prototype.subscribeToEvent = function (eventHandle) {
24
- return this.realTime.on(Geocoding_consts_1.RealTimeGeocodingEvents.GEOCODING_CHANGED, eventHandle);
24
+ this.realTime.on(Geocoding_consts_1.RealTimeGeocodingEvents.GEOCODING_CHANGED, eventHandle);
25
25
  };
26
26
  GeocodingApi.prototype.unsubscribeToEvent = function (eventHandle) {
27
27
  this.realTime.off(Geocoding_consts_1.RealTimeGeocodingEvents.GEOCODING_CHANGED, eventHandle);
@@ -1 +1 @@
1
- {"version":3,"file":"GeocodingApi.js","sourceRoot":"","sources":["../../src/Geocoding/GeocodingApi.ts"],"names":[],"mappings":";;;;;AAEA,mDAAsD;AAEtD,iEAA2C;AAC3C,uDAA6D;AAE7D;IAIC,sBAAY,OAAgB;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnE,CAAC;IAEM,mCAAY,GAAnB,UAAoB,OAAe;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,sCAAe,GAAtB,UAAuB,OAAe;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAEM,qCAAc,GAArB,UAAsB,GAAW,EAAE,GAAW;QAC7C,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAEM,uCAAgB,GAAvB,UAAwB,WAAgB;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,0CAAuB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IACjF,CAAC;IAEM,yCAAkB,GAAzB,UAA0B,WAAgB;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,0CAAuB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;IACF,mBAAC;AAAD,CAAC,AA5BD,IA4BC"}
1
+ {"version":3,"file":"GeocodingApi.js","sourceRoot":"","sources":["../../src/Geocoding/GeocodingApi.ts"],"names":[],"mappings":";;;;;AAEA,mDAAsD;AAEtD,iEAA2C;AAC3C,uDAA6D;AAE7D;IAIC,sBAAY,OAAgB;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnE,CAAC;IAEM,mCAAY,GAAnB,UAAoB,OAAe;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,sCAAe,GAAtB,UAAuB,OAAe;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAEM,qCAAc,GAArB,UAAsB,GAAW,EAAE,GAAW;QAC7C,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;IAEM,uCAAgB,GAAvB,UAAwB,WAAiC;QACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,0CAAuB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC1E,CAAC;IAEM,yCAAkB,GAAzB,UAA0B,WAAiC;QAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,0CAAuB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;IACF,mBAAC;AAAD,CAAC,AA5BD,IA4BC"}
@@ -3,6 +3,7 @@ import User from './Identity/User';
3
3
  import { PubSubEvent } from './PubSubEvents';
4
4
  import { Notifiable, RealtimeConnection } from './RealtimeConnection';
5
5
  export declare const REALTIME_CONNECTION_RETRY_TIME = 5000;
6
+ export declare const ENABLE_REALTIME_UNSUBSCRIBE_FIX_FEATURE_FLAG = "enable_realtime_unsubscribe_fix";
6
7
  export declare class UserWireMessage {
7
8
  id: number;
8
9
  auth_token: string;
@@ -12,6 +13,7 @@ export declare class UserWireMessage {
12
13
  export default class PersistentConnection implements Notifiable {
13
14
  session: Session;
14
15
  connection: RealtimeConnection;
16
+ private readonly wrappedHandlersByEvent;
15
17
  static wrapEventHandler(eventName: string, initialHandler: any, additionalHandler?: (string: any, any: any) => void): (any: any) => void;
16
18
  static init(session: Session): Promise<PersistentConnection>;
17
19
  private constructor();
@@ -25,4 +27,9 @@ export default class PersistentConnection implements Notifiable {
25
27
  publish<T>(ev: PubSubEvent<T>, mess: T, ackCallback?: (message: any | undefined) => void): void;
26
28
  subscribe<T>(eventType: PubSubEvent<T>, handler: (message: T) => void): void;
27
29
  dispose(): Promise<void>;
30
+ private createWrappedHandler;
31
+ private isUnsubscribeFixEnabled;
32
+ private getOrCreateEventHandlers;
33
+ private subscribeWithWrappedHandler;
34
+ private unsubscribeWrappedHandler;
28
35
  }
@@ -39,12 +39,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.UserWireMessage = exports.REALTIME_CONNECTION_RETRY_TIME = void 0;
42
+ exports.UserWireMessage = exports.ENABLE_REALTIME_UNSUBSCRIBE_FIX_FEATURE_FLAG = exports.REALTIME_CONNECTION_RETRY_TIME = void 0;
43
43
  var Logger_1 = __importDefault(require("../Core/Logger"));
44
44
  var Polly_1 = __importDefault(require("../Core/Polly"));
45
45
  var PubSubEvents_1 = require("./PubSubEvents");
46
46
  var RealtimeConnection_1 = require("./RealtimeConnection");
47
47
  exports.REALTIME_CONNECTION_RETRY_TIME = 5000;
48
+ exports.ENABLE_REALTIME_UNSUBSCRIBE_FIX_FEATURE_FLAG = 'enable_realtime_unsubscribe_fix';
48
49
  var UserWireMessage = /** @class */ (function () {
49
50
  function UserWireMessage(user) {
50
51
  this.id = user.id;
@@ -56,6 +57,7 @@ var UserWireMessage = /** @class */ (function () {
56
57
  exports.UserWireMessage = UserWireMessage;
57
58
  var PersistentConnection = /** @class */ (function () {
58
59
  function PersistentConnection(session) {
60
+ this.wrappedHandlersByEvent = new Map();
59
61
  this.session = session;
60
62
  }
61
63
  PersistentConnection.wrapEventHandler = function (eventName, initialHandler, additionalHandler) {
@@ -138,10 +140,18 @@ var PersistentConnection = /** @class */ (function () {
138
140
  connection.socket.emit(ev.name, mess, ackCallback);
139
141
  };
140
142
  PersistentConnection.prototype.subscribeInternal = function (connection, eventType, handler) {
141
- connection.socket.on(eventType.name, PersistentConnection.wrapEventHandler(eventType.name, handler, this.session.sendDataEvent));
143
+ if (!this.isUnsubscribeFixEnabled()) {
144
+ connection.socket.on(eventType.name, this.createWrappedHandler(eventType.name, handler));
145
+ return;
146
+ }
147
+ this.subscribeWithWrappedHandler(connection, eventType.name, handler);
142
148
  };
143
149
  PersistentConnection.prototype.unsubscribe = function (eventType, handler) {
144
- this.connection.socket.off(eventType.name, handler);
150
+ if (!this.isUnsubscribeFixEnabled()) {
151
+ this.connection.socket.off(eventType.name, handler);
152
+ return;
153
+ }
154
+ this.unsubscribeWrappedHandler(eventType.name, handler);
145
155
  };
146
156
  PersistentConnection.prototype.publish = function (ev, mess, ackCallback) {
147
157
  this.publishInternal(this.connection, ev, mess, ackCallback);
@@ -161,6 +171,52 @@ var PersistentConnection = /** @class */ (function () {
161
171
  });
162
172
  });
163
173
  };
174
+ PersistentConnection.prototype.createWrappedHandler = function (eventName, handler) {
175
+ return PersistentConnection.wrapEventHandler(eventName, handler, this.session.sendDataEvent);
176
+ };
177
+ PersistentConnection.prototype.isUnsubscribeFixEnabled = function () {
178
+ var _a;
179
+ var merchantFeatureFlags = (((_a = this.session.merchant) === null || _a === void 0 ? void 0 : _a.feature_flags) || {});
180
+ return !!merchantFeatureFlags[exports.ENABLE_REALTIME_UNSUBSCRIBE_FIX_FEATURE_FLAG];
181
+ };
182
+ PersistentConnection.prototype.getOrCreateEventHandlers = function (eventName) {
183
+ var eventHandlers = this.wrappedHandlersByEvent.get(eventName);
184
+ if (eventHandlers) {
185
+ return eventHandlers;
186
+ }
187
+ var handlers = new Map();
188
+ this.wrappedHandlersByEvent.set(eventName, handlers);
189
+ return handlers;
190
+ };
191
+ PersistentConnection.prototype.subscribeWithWrappedHandler = function (connection, eventName, handler) {
192
+ var eventHandlers = this.getOrCreateEventHandlers(eventName);
193
+ var originalHandler = handler;
194
+ if (eventHandlers.has(originalHandler)) {
195
+ return;
196
+ }
197
+ var wrappedHandler = this.createWrappedHandler(eventName, handler);
198
+ eventHandlers.set(originalHandler, wrappedHandler);
199
+ connection.socket.on(eventName, wrappedHandler);
200
+ };
201
+ PersistentConnection.prototype.unsubscribeWrappedHandler = function (eventName, handler) {
202
+ if (!handler) {
203
+ this.connection.socket.off(eventName);
204
+ this.wrappedHandlersByEvent.delete(eventName);
205
+ return;
206
+ }
207
+ var eventHandlers = this.wrappedHandlersByEvent.get(eventName);
208
+ var originalHandler = handler;
209
+ var wrappedHandler = eventHandlers === null || eventHandlers === void 0 ? void 0 : eventHandlers.get(originalHandler);
210
+ if (!wrappedHandler) {
211
+ this.connection.socket.off(eventName, handler);
212
+ return;
213
+ }
214
+ this.connection.socket.off(eventName, wrappedHandler);
215
+ eventHandlers.delete(originalHandler);
216
+ if (eventHandlers.size === 0) {
217
+ this.wrappedHandlersByEvent.delete(eventName);
218
+ }
219
+ };
164
220
  return PersistentConnection;
165
221
  }());
166
222
  exports.default = PersistentConnection;
@@ -1 +1 @@
1
- {"version":3,"file":"PersistentConnection.js","sourceRoot":"","sources":["../../src/Services/PersistentConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PersistentConnection.js","sourceRoot":"","sources":["../../src/Services/PersistentConnection.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAoC;AACpC,wDAAkC;AAGlC,+CAA2F;AAC3F,2DAAsE;AAEzD,QAAA,8BAA8B,GAAG,IAAI,CAAC;AACtC,QAAA,4CAA4C,GAAG,iCAAiC,CAAC;AAK9F;IAIC,yBAAY,IAAU;QACrB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;IACF,sBAAC;AAAD,CAAC,AATD,IASC;AATY,0CAAe;AAW5B;IA2BC,8BAAoB,OAAgB;QAxBnB,2BAAsB,GAAoB,IAAI,GAAG,EAAE,CAAC;QAyBpE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAxBa,qCAAgB,GAA9B,UACC,SAAiB,EACjB,cAAc,EACd,iBAAyC;QAEzC,OAAO,UAAA,OAAO;YACb,IAAI,iBAAiB,EAAE;gBACtB,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;aACtC;YAED,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;IACH,CAAC;IAEmB,yBAAI,GAAxB,UAAyB,OAAgB;;;;;;wBAClC,KAAK,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;wBAEhD,KAAA,KAAK,CAAA;wBAAc,qBAAM,uCAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,EAAA;;wBAAlG,GAAM,UAAU,GAAG,SAA+E,CAAC;wBAEnG,sBAAO,KAAK,EAAC;;;;KACb;IAMa,wCAAS,GAAvB,UAAwB,IAAwB;;;;;4BAC/C,qBAAM,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;4BACvC,OAAI,CAAC,eAAe,CAAC,IAAI,EAAE,iCAAkB,EAAE,IAAI,eAAe,CAAC,OAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gCACtF,OAAI,CAAC,eAAe,CAAC,IAAI,EAAE,uCAAwB,EAAE,IAAI,eAAe,CAAC,OAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oCAC5F,OAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;oCACxD,OAAO,EAAE,CAAC;gCACX,CAAC,CAAC,CAAC;4BACJ,CAAC,CAAC,CAAC;wBACJ,CAAC,CAAC,EAAA;;wBAPF,SAOE,CAAC;;;;;KACH;IAEK,wCAAS,GAAf,UAAgB,UAA8B;;;;;4BACtC,qBAAM,IAAI,eAAK,EAAE;6BACtB,MAAM,CAAC,UAAA,EAAE;4BACT,gBAAM,CAAC,KAAK,CACX,gFACC,sCAA8B,GAAG,IAAI,uBACzB,EAAE,CAAE,CACjB,CAAC;4BAEF,OAAO,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC;wBACjC,CAAC,CAAC;6BACD,YAAY,CAAC,CAAC,sCAA8B,CAAC,CAAC;6BAC9C,OAAO,EAAE;6BACT,iBAAiB,CAAC,cAAM,OAAA,OAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAA1B,CAA0B,CAAC,EAAA;4BAZrD,sBAAO,SAY8C,EAAC;;;;KACtD;IAEK,2CAAY,GAAlB,UAAmB,UAA8B;;;;;;KAEhD;IAEK,0CAAW,GAAjB,UAAkB,UAA8B;;;;;;KAE/C;IAEO,8CAAe,GAAvB,UACC,UAA8B,EAC9B,EAAkB,EAClB,IAAO,EACP,WAAgD;QAEhD,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAEO,gDAAiB,GAAzB,UACC,UAA8B,EAC9B,SAAyB,EACzB,OAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;YACpC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAEzF,OAAO;SACP;QAED,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAEM,0CAAW,GAAlB,UAAsB,SAAyB,EAAE,OAA8B;QAC9E,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEpD,OAAO;SACP;QAED,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAEM,sCAAO,GAAd,UAAkB,EAAkB,EAAE,IAAO,EAAE,WAAgD;QAC9F,IAAI,CAAC,eAAe,CAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;IAEM,wCAAS,GAAhB,UAAoB,SAAyB,EAAE,OAA6B;QAC3E,IAAI,CAAC,iBAAiB,CAAI,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAEY,sCAAO,GAApB;;;;4BACC,qBAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAA;;wBAAlC,SAAkC,CAAC;;;;;KACnC;IAEO,mDAAoB,GAA5B,UAAgC,SAAiB,EAAE,OAA6B;QAC/E,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9F,CAAC;IAEO,sDAAuB,GAA/B;;QACC,IAAM,oBAAoB,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,0CAAE,aAAa,KAAI,EAAE,CAGvE,CAAC;QAEF,OAAO,CAAC,CAAC,oBAAoB,CAAC,oDAA4C,CAAC,CAAC;IAC7E,CAAC;IAEO,uDAAwB,GAAhC,UAAiC,SAAiB;QACjD,IAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEjE,IAAI,aAAa,EAAE;YAClB,OAAO,aAAa,CAAC;SACrB;QAED,IAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;QAEzD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAErD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,0DAA2B,GAAnC,UACC,UAA8B,EAC9B,SAAiB,EACjB,OAA6B;QAE7B,IAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAM,eAAe,GAAG,OAAwB,CAAC;QAEjD,IAAI,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACvC,OAAO;SACP;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAkB,CAAC;QAEtF,aAAa,CAAC,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QACnD,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,cAAsC,CAAC,CAAC;IACzE,CAAC;IAEO,wDAAyB,GAAjC,UAAqC,SAAiB,EAAE,OAA8B;QACrF,IAAI,CAAC,OAAO,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE9C,OAAO;SACP;QAED,IAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjE,IAAM,eAAe,GAAG,OAAwB,CAAC;QACjD,IAAM,cAAc,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,EAAE;YACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE/C,OAAO;SACP;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,cAAsC,CAAC,CAAC;QAC9E,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAEtC,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;YAC7B,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC9C;IACF,CAAC;IACF,2BAAC;AAAD,CAAC,AArLD,IAqLC"}
@@ -56,7 +56,7 @@ var lodash_1 = require("lodash");
56
56
  var BringgException_1 = require("../Core/BringgException");
57
57
  var Logger_1 = __importDefault(require("../Core/Logger"));
58
58
  var abort_1 = require("../utils/abort");
59
- var version = '9.62.2';
59
+ var version = '9.62.3-pre.0';
60
60
  function logErrorResponse(response) {
61
61
  var data = response.data, status = response.status;
62
62
  try {
@@ -11234,7 +11234,7 @@ var GeocodingApi = /** @class */ (function () {
11234
11234
  return this.geocodingEntity.reverseGeocode(lat, lng);
11235
11235
  };
11236
11236
  GeocodingApi.prototype.subscribeToEvent = function (eventHandle) {
11237
- return this.realTime.on(Geocoding_consts_1.RealTimeGeocodingEvents.GEOCODING_CHANGED, eventHandle);
11237
+ this.realTime.on(Geocoding_consts_1.RealTimeGeocodingEvents.GEOCODING_CHANGED, eventHandle);
11238
11238
  };
11239
11239
  GeocodingApi.prototype.unsubscribeToEvent = function (eventHandle) {
11240
11240
  this.realTime.off(Geocoding_consts_1.RealTimeGeocodingEvents.GEOCODING_CHANGED, eventHandle);
@@ -22780,12 +22780,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22780
22780
  return (mod && mod.__esModule) ? mod : { "default": mod };
22781
22781
  };
22782
22782
  Object.defineProperty(exports, "__esModule", ({ value: true }));
22783
- exports.UserWireMessage = exports.REALTIME_CONNECTION_RETRY_TIME = void 0;
22783
+ exports.UserWireMessage = exports.ENABLE_REALTIME_UNSUBSCRIBE_FIX_FEATURE_FLAG = exports.REALTIME_CONNECTION_RETRY_TIME = void 0;
22784
22784
  var Logger_1 = __importDefault(__webpack_require__(55860));
22785
22785
  var Polly_1 = __importDefault(__webpack_require__(51987));
22786
22786
  var PubSubEvents_1 = __webpack_require__(74102);
22787
22787
  var RealtimeConnection_1 = __webpack_require__(52944);
22788
22788
  exports.REALTIME_CONNECTION_RETRY_TIME = 5000;
22789
+ exports.ENABLE_REALTIME_UNSUBSCRIBE_FIX_FEATURE_FLAG = 'enable_realtime_unsubscribe_fix';
22789
22790
  var UserWireMessage = /** @class */ (function () {
22790
22791
  function UserWireMessage(user) {
22791
22792
  this.id = user.id;
@@ -22797,6 +22798,7 @@ var UserWireMessage = /** @class */ (function () {
22797
22798
  exports.UserWireMessage = UserWireMessage;
22798
22799
  var PersistentConnection = /** @class */ (function () {
22799
22800
  function PersistentConnection(session) {
22801
+ this.wrappedHandlersByEvent = new Map();
22800
22802
  this.session = session;
22801
22803
  }
22802
22804
  PersistentConnection.wrapEventHandler = function (eventName, initialHandler, additionalHandler) {
@@ -22879,10 +22881,18 @@ var PersistentConnection = /** @class */ (function () {
22879
22881
  connection.socket.emit(ev.name, mess, ackCallback);
22880
22882
  };
22881
22883
  PersistentConnection.prototype.subscribeInternal = function (connection, eventType, handler) {
22882
- connection.socket.on(eventType.name, PersistentConnection.wrapEventHandler(eventType.name, handler, this.session.sendDataEvent));
22884
+ if (!this.isUnsubscribeFixEnabled()) {
22885
+ connection.socket.on(eventType.name, this.createWrappedHandler(eventType.name, handler));
22886
+ return;
22887
+ }
22888
+ this.subscribeWithWrappedHandler(connection, eventType.name, handler);
22883
22889
  };
22884
22890
  PersistentConnection.prototype.unsubscribe = function (eventType, handler) {
22885
- this.connection.socket.off(eventType.name, handler);
22891
+ if (!this.isUnsubscribeFixEnabled()) {
22892
+ this.connection.socket.off(eventType.name, handler);
22893
+ return;
22894
+ }
22895
+ this.unsubscribeWrappedHandler(eventType.name, handler);
22886
22896
  };
22887
22897
  PersistentConnection.prototype.publish = function (ev, mess, ackCallback) {
22888
22898
  this.publishInternal(this.connection, ev, mess, ackCallback);
@@ -22902,6 +22912,52 @@ var PersistentConnection = /** @class */ (function () {
22902
22912
  });
22903
22913
  });
22904
22914
  };
22915
+ PersistentConnection.prototype.createWrappedHandler = function (eventName, handler) {
22916
+ return PersistentConnection.wrapEventHandler(eventName, handler, this.session.sendDataEvent);
22917
+ };
22918
+ PersistentConnection.prototype.isUnsubscribeFixEnabled = function () {
22919
+ var _a;
22920
+ var merchantFeatureFlags = (((_a = this.session.merchant) === null || _a === void 0 ? void 0 : _a.feature_flags) || {});
22921
+ return !!merchantFeatureFlags[exports.ENABLE_REALTIME_UNSUBSCRIBE_FIX_FEATURE_FLAG];
22922
+ };
22923
+ PersistentConnection.prototype.getOrCreateEventHandlers = function (eventName) {
22924
+ var eventHandlers = this.wrappedHandlersByEvent.get(eventName);
22925
+ if (eventHandlers) {
22926
+ return eventHandlers;
22927
+ }
22928
+ var handlers = new Map();
22929
+ this.wrappedHandlersByEvent.set(eventName, handlers);
22930
+ return handlers;
22931
+ };
22932
+ PersistentConnection.prototype.subscribeWithWrappedHandler = function (connection, eventName, handler) {
22933
+ var eventHandlers = this.getOrCreateEventHandlers(eventName);
22934
+ var originalHandler = handler;
22935
+ if (eventHandlers.has(originalHandler)) {
22936
+ return;
22937
+ }
22938
+ var wrappedHandler = this.createWrappedHandler(eventName, handler);
22939
+ eventHandlers.set(originalHandler, wrappedHandler);
22940
+ connection.socket.on(eventName, wrappedHandler);
22941
+ };
22942
+ PersistentConnection.prototype.unsubscribeWrappedHandler = function (eventName, handler) {
22943
+ if (!handler) {
22944
+ this.connection.socket.off(eventName);
22945
+ this.wrappedHandlersByEvent.delete(eventName);
22946
+ return;
22947
+ }
22948
+ var eventHandlers = this.wrappedHandlersByEvent.get(eventName);
22949
+ var originalHandler = handler;
22950
+ var wrappedHandler = eventHandlers === null || eventHandlers === void 0 ? void 0 : eventHandlers.get(originalHandler);
22951
+ if (!wrappedHandler) {
22952
+ this.connection.socket.off(eventName, handler);
22953
+ return;
22954
+ }
22955
+ this.connection.socket.off(eventName, wrappedHandler);
22956
+ eventHandlers.delete(originalHandler);
22957
+ if (eventHandlers.size === 0) {
22958
+ this.wrappedHandlersByEvent.delete(eventName);
22959
+ }
22960
+ };
22905
22961
  return PersistentConnection;
22906
22962
  }());
22907
22963
  exports["default"] = PersistentConnection;
@@ -23291,7 +23347,7 @@ var lodash_1 = __webpack_require__(96486);
23291
23347
  var BringgException_1 = __webpack_require__(43605);
23292
23348
  var Logger_1 = __importDefault(__webpack_require__(55860));
23293
23349
  var abort_1 = __webpack_require__(34179);
23294
- var version = '9.62.2';
23350
+ var version = '9.62.3-pre.0';
23295
23351
  function logErrorResponse(response) {
23296
23352
  var data = response.data, status = response.status;
23297
23353
  try {