@@ -23,7 +23,7 @@ angular.module('mm.addons.messages')
2323 * @ngdoc service
2424 * @name $mmaMessagesHandlers
2525 */
26- . factory ( '$mmaMessagesHandlers' , function ( $log , $mmaMessages , $mmSite , $state , $mmUtil ) {
26+ . factory ( '$mmaMessagesHandlers' , function ( $log , $mmaMessages , $mmSite , $state , $mmUtil , $mmContentLinksHelper ) {
2727 $log = $log . getInstance ( '$mmaMessagesHandlers' ) ;
2828
2929 var self = { } ;
@@ -281,5 +281,80 @@ angular.module('mm.addons.messages')
281281 return self ;
282282 } ;
283283
284+ /**
285+ * Content links handler.
286+ *
287+ * @module mm.addons.messages
288+ * @ngdoc method
289+ * @name $mmaMessagesHandlers#linksHandler
290+ */
291+ self . linksHandler = function ( ) {
292+
293+ var self = { } ;
294+
295+ /**
296+ * Whether or not the handler is enabled for the site.
297+ *
298+ * @return {Boolean }
299+ */
300+ self . isEnabled = function ( ) {
301+ return $mmaMessages . isPluginEnabled ( ) ;
302+ } ;
303+
304+ /**
305+ * Get actions to perform with the link.
306+ *
307+ * @param {String } url URL to treat.
308+ * @return {Object[] } List of actions. See {@link $mmContentLinksDelegate#registerLinkHandler}.
309+ */
310+ self . getActions = function ( url ) {
311+ // Check it's a messages URL.
312+ if ( url . indexOf ( '/message/index.php' ) > - 1 ) {
313+ var params = $mmUtil . extractUrlParams ( url ) ;
314+ // Return actions.
315+ return [ {
316+ message : 'mm.core.view' ,
317+ icon : 'ion-eye' ,
318+ action : function ( siteId ) {
319+ var stateName ,
320+ stateParams ;
321+
322+ if ( typeof params . user1 != 'undefined' && typeof params . user2 != 'undefined' ) {
323+ // Check if the current user is in the conversation.
324+ if ( $mmSite . getUserId ( ) == params . user1 ) {
325+ stateName = 'site.messages-discussion' ;
326+ stateParams = { userId : parseInt ( params . user2 , 10 ) } ;
327+ } else if ( $mmSite . getUserId ( ) == params . user2 ) {
328+ stateName = 'site.messages-discussion' ;
329+ stateParams = { userId : parseInt ( params . user1 , 10 ) } ;
330+ } else {
331+ // He isn't, open in browser.
332+ $mmUtil . openInBrowser ( url ) ;
333+ return ;
334+ }
335+ } else if ( typeof params . id != 'undefined' ) {
336+ stateName = 'site.messages-discussion' ;
337+ stateParams = { userId : parseInt ( params . id , 10 ) } ;
338+ }
339+
340+ if ( ! stateName ) {
341+ // Go to messaging index page. We use redirect state to view the side menu.
342+ $state . go ( 'redirect' , {
343+ siteid : siteId ,
344+ state : 'site.messages' ,
345+ params : { }
346+ } ) ;
347+ } else {
348+ $mmContentLinksHelper . goInSite ( stateName , stateParams , siteId ) ;
349+ }
350+ }
351+ } ] ;
352+ }
353+ return [ ] ;
354+ } ;
355+
356+ return self ;
357+ } ;
358+
284359 return self ;
285360} ) ;
0 commit comments