@@ -60,16 +60,30 @@ namespace OutSystems.Maps.MapAPI.MarkerManager.Events {
6060 * @export
6161 * @param {string } markerId Marker where the events will get attached
6262 * @param {OSFramework.Maps.Event.Marker.MarkerEventType } eventName name of the event to get attached
63- * @param {OSFramework.Maps.Callbacks.Marker.ClickEvent } callback to be invoked when the event occurs
63+ * @param {OSFramework.Maps.Callbacks.Marker.Event } callback to be invoked when the event occurs
6464 */
6565 export function Subscribe (
6666 markerId : string ,
6767 eventName : OSFramework . Maps . Event . Marker . MarkerEventType ,
68- // eslint-disable-next-line
6968 callback : OSFramework . Maps . Callbacks . Marker . Event
70- ) : void {
71- const marker = GetMarkerById ( markerId ) ;
72- marker . markerEvents . addHandler ( eventName , callback , markerId ) ;
69+ ) : string {
70+ const responseObj = {
71+ isSuccess : true ,
72+ message : 'Success' ,
73+ code : '200' ,
74+ } ;
75+ try {
76+ const marker = GetMarkerById ( markerId ) ;
77+ marker . markerEvents . addHandler ( eventName , callback , markerId ) ;
78+ // Let's make sure the events get refreshed on the Marker provider
79+ marker . refreshProviderEvents ( ) ;
80+ } catch ( error ) {
81+ responseObj . isSuccess = false ;
82+ responseObj . message = error . message ;
83+ responseObj . code = OSFramework . Maps . Enum . ErrorCodes . API_FailedSubscribeMarkerEvent ;
84+ }
85+
86+ return JSON . stringify ( responseObj ) ;
7387 }
7488
7589 /**
@@ -78,7 +92,7 @@ namespace OutSystems.Maps.MapAPI.MarkerManager.Events {
7892 * @export
7993 * @param {string } eventUniqueId Id of the Event to be attached
8094 * @param {OSFramework.Maps.Event.Map.MapEventType } eventName name fo the event to be attached
81- * @param {MapAPI. Callbacks.OSMap .Event } callback callback to be invoked when the event occurs
95+ * @param {OSFramework.Maps. Callbacks.Marker .Event } callback callback to be invoked when the event occurs
8296 */
8397 export function SubscribeByUniqueId (
8498 eventUniqueId : string ,
@@ -135,12 +149,11 @@ namespace OutSystems.Maps.MapAPI.MarkerManager.Events {
135149 * @export
136150 * @param {string } eventUniqueId Map where the event will be removed
137151 * @param {OSFramework.Maps.Event.Map.MapEventType } eventName name of the event to be removed
138- * @param {MapAPI. Callbacks.OSMap .Event } callback callback that will be removed
152+ * @param {OSFramework.Maps. Callbacks.Marker .Event } callback callback that will be removed
139153 */
140154 export function Unsubscribe (
141155 eventUniqueId : string ,
142156 eventName : OSFramework . Maps . Event . Marker . MarkerEventType ,
143- // eslint-disable-next-line
144157 callback : OSFramework . Maps . Callbacks . Marker . Event
145158 ) : void {
146159 const markerId = GetMarkerIdByEventUniqueId ( eventUniqueId ) ;
@@ -160,6 +173,32 @@ namespace OutSystems.Maps.MapAPI.MarkerManager.Events {
160173 }
161174 }
162175 }
176+
177+ export function UnsubscribeByMarkerId (
178+ markerId : string ,
179+ eventName : OSFramework . Maps . Event . Marker . MarkerEventType ,
180+ callback : OSFramework . Maps . Callbacks . Marker . Event
181+ ) : string {
182+ const responseObj = {
183+ isSuccess : true ,
184+ message : 'Success' ,
185+ code : '200' ,
186+ } ;
187+ try {
188+ const marker = GetMarkerById ( markerId ) ;
189+ if ( marker !== undefined ) {
190+ marker . markerEvents . removeHandler ( eventName , callback ) ;
191+ // Let's make sure the events get refreshed on the Marker provider
192+ marker . refreshProviderEvents ( ) ;
193+ }
194+ } catch ( error ) {
195+ responseObj . isSuccess = false ;
196+ responseObj . message = error . message ;
197+ responseObj . code = OSFramework . Maps . Enum . ErrorCodes . API_FailedUnsubscribeMarkerEvent ;
198+ }
199+
200+ return JSON . stringify ( responseObj ) ;
201+ }
163202}
164203
165204/// Overrides for the old namespace - calls the new one, lets users know this is no longer in use
0 commit comments