diff --git a/message/amd/build/message_drawer_view_conversation.min.js b/message/amd/build/message_drawer_view_conversation.min.js index f681f92188d..21837f57b83 100644 --- a/message/amd/build/message_drawer_view_conversation.min.js +++ b/message/amd/build/message_drawer_view_conversation.min.js @@ -1 +1 @@ -define(["jquery","core/auto_rows","core/backoff_timer","core/custom_interaction_events","core/notification","core/pubsub","core/str","core_message/message_repository","core_message/message_drawer_events","core_message/message_drawer_view_conversation_constants","core_message/message_drawer_view_conversation_patcher","core_message/message_drawer_view_conversation_renderer","core_message/message_drawer_view_conversation_state_manager","core_message/message_drawer_router","core_message/message_drawer_routes"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p={},q=null,r=!1,s=0,t=null,u=!0,v=!1,w=null,x=[],y=j.NEWEST_MESSAGES_FIRST,z=j.LOAD_MESSAGE_LIMIT,A=j.INITIAL_NEW_MESSAGE_POLL_TIMEOUT,B=j.SELECTORS,C=j.CONVERSATION_TYPES,D=function(){if(!q||q.type!=C.PRIVATE&&q.type!=C.SELF)return null;var a=q.loggedInUserId;if(q.type==C.SELF)return a;var b=Object.keys(q.members).filter(function(b){return a!=b});return b.length?b[0]:null},E=function(a){return Object.keys(p).reduce(function(b,c){if(!b){var d=p[c].state;d.type!=C.PRIVATE&&d.type!=C.SELF||a in d.members&&(b=d.id)}return b},null)},F=function(a){return{id:parseInt(a.attr("data-user-id"),10),fullname:null,profileimageurl:null,profileimageurlsmall:null,isonline:null,showonlinestatus:null,isblocked:null,iscontact:null,isdeleted:null,canmessage:null,requirescontact:null,contactrequests:[]}},G=function(){return s},H=function(a){s=a,p[q.id].messagesOffset=a},I=function(){return r},J=function(a){r=a,p[q.id].loadedAllMessages=a},K=function(a){return a.find(B.MESSAGES_CONTAINER)},L=function(b){return{id:b.id,name:b.name,subname:b.subname,imageUrl:b.imageUrl,isFavourite:b.isFavourite,isMuted:b.isMuted,type:b.type,totalMemberCount:b.totalMemberCount,loggedInUserId:b.loggedInUserId,messages:b.messages.map(function(b){return a.extend({},b)}),members:Object.keys(b.members).reduce(function(c,d){return c[d]=a.extend({},b.members[d]),c[d].contactrequests=b.members[d].contactrequests.map(function(b){return a.extend({},b)}),c},{})}},M=function(a,b){var c=a.id,d=m.setLoadingMembers(q,!0);return d=m.setLoadingMessages(d,!0),w(d).then(function(){return h.getMemberInfo(c,[b],!0,!0)}).then(function(a){if(a.length)return a[0];throw new Error("Unable to load other user profile")}).then(function(b){var c=m.addMembers(q,[b,a]);return c=m.setLoadingMembers(c,!1),c=m.setLoadingMessages(c,!1),c=m.setName(c,b.fullname),c=m.setType(c,C.PRIVATE),c=m.setImageUrl(c,b.profileimageurl),c=m.setTotalMemberCount(c,2),w(c).then(function(){return b})})["catch"](function(a){var b=m.setLoadingMembers(q,!1);w(b),e.exception(a)})},N=function(a){var b=a.id,c=m.setLoadingMembers(q,!0);return c=m.setLoadingMessages(c,!0),w(c).then(function(){return h.getMemberInfo(b,[b],!0,!0)}).then(function(a){if(a.length)return a[0];throw new Error("Unable to load other user profile")}).then(function(b){var c=m.addMembers(q,[b,a]);return c=m.setLoadingMembers(c,!1),c=m.setLoadingMessages(c,!1),c=m.setName(c,b.fullname),c=m.setType(c,C.SELF),c=m.setImageUrl(c,b.profileimageurl),c=m.setTotalMemberCount(c,1),w(c).then(function(){return b})})["catch"](function(a){var b=m.setLoadingMembers(q,!1);w(b),e.exception(a)})},O=function(a,b){var c=null;if(a.type==C.PRIVATE){var d=a.members.filter(function(a){return a.id!=b});c=d.length?d[0]:null}else a.type==C.SELF&&(c=a.members[0]);var e=a.name,f=a.imageurl;a.type!=C.PRIVATE&&a.type!=C.SELF||(e=e||c?c.fullname:"",f=f||c?c.profileimageurl:"");var g=m.addMembers(q,a.members);return g=m.setName(g,e),g=m.setSubname(g,a.subname),g=m.setType(g,a.type),g=m.setImageUrl(g,f),g=m.setTotalMemberCount(g,a.membercount),g=m.setIsFavourite(g,a.isfavourite),g=m.setIsMuted(g,a.ismuted),g=m.addMessages(g,a.messages)},P=function(a,b,c,d,f){var g=b.id,i=m.setLoadingMembers(q,!0);return i=m.setLoadingMessages(i,!0),w(i).then(function(){return h.getConversation(g,a,!0,!0,0,0,c+1,d,f)}).then(function(a){return a.messages.length>c?a.messages=a.messages.slice(1):J(!0),H(d+c),a}).then(function(a){var c=a.members.filter(function(a){return a.id==b.id});c.length<1&&(a.members=a.members.concat([b]));var d=O(a,b.id);return d=m.setLoadingMembers(d,!1),d=m.setLoadingMessages(d,!1),w(d).then(function(){return a})}).then(function(){return T(a)})["catch"](function(a){var b=m.setLoadingMembers(q,!1);b=m.setLoadingMessages(b,!1),w(b),e.exception(a)})},Q=function(a,b,c,d){var f=a.members.filter(function(a){return a.id==b.id});f.length<1&&(a.members=a.members.concat([b]));var g=O(a,b.id);g=m.setLoadingMembers(g,!1),g=m.setLoadingMessages(g,!0);var h=a.messages.length;return w(g).then(function(){if(hb?a.messages=a.messages.slice(0,-1):J(!0),a):a}).then(function(a){var b=a.members.filter(function(a){return!(a.id in q.members)}),c=m.addMembers(q,b);return c=m.addMessages(c,a.messages),c=m.setLoadingMessages(c,!1),w(c).then(function(){return a})})["catch"](function(a){var b=m.setLoadingMessages(q,!1);throw w(b),a})},S=function(b,c){return function(){var d=q.messages,e=d.length?d[d.length-1]:null;if(e&&!u&&!v){for(var g=[],h=d.length-1;h>=0;h--){var j=d[h];if(j.timeCreated!==e.timeCreated)break;g.push(j.id)}return R(b,0,0,c,g,e.timeCreated).then(function(a){if(a.messages.length){t.restart();var c=L(q);return f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c),T(b)}return a})}return a.Deferred().resolve().promise()}},T=function(a){var b=q.loggedInUserId;return h.markAllConversationMessagesAsRead(b,a).then(function(){var b=m.markMessagesAsRead(q,q.messages);return f.publish(i.CONVERSATION_READ,a),w(b)})},U=function(a){return ia(a).then(function(){var b=m.addPendingBlockUsersById(q,[a]);return w(b)})},V=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.blockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingBlockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_BLOCKED,a),w(c)})},W=function(a){return ia(a).then(function(){var b=m.addPendingUnblockUsersById(q,[a]);return w(b)})},X=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.unblockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingUnblockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_UNBLOCKED,a),w(c)})},Y=function(a){return ia(a).then(function(){var b=m.addPendingRemoveContactsById(q,[a]);return w(b)})},Z=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.deleteContacts(q.loggedInUserId,[a])}).then(function(b){var c=m.addMembers(q,b);return c=m.removePendingRemoveContactsById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_REMOVED,a),w(c)})},$=function(a){return ia(a).then(function(){var b=m.addPendingAddContactsById(q,[a]);return w(b)})},_=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.createContactRequest(q.loggedInUserId,a)}).then(function(a){if(!a.request)throw new Error(a.warnings[0].message);return a.request}).then(function(b){var c=m.removePendingAddContactsById(q,[a]);return c=m.addContactRequests(c,[b]),c=m.setLoadingConfirmAction(c,!1),w(c)})},aa=function(){var a=q.loggedInUserId,b=q.id;return h.setFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!0);return w(a)}).then(function(){return f.publish(i.CONVERSATION_SET_FAVOURITE,L(q))})},ba=function(){var a=q.loggedInUserId,b=q.id;return h.unsetFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!1);return w(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_FAVOURITE,L(q))})},ca=function(){var a=q.loggedInUserId,b=q.id;return h.setMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!0);return w(a)}).then(function(){return f.publish(i.CONVERSATION_SET_MUTED,L(q))})},da=function(){var a=q.loggedInUserId,b=q.id;return h.unsetMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!1);return w(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_MUTED,L(q))})},ea=function(a){var b=q.selectedMessageIds;return ia(a).then(function(){var a=m.addPendingDeleteMessagesById(q,b);return w(a)})},fa=function(){var a=q.pendingDeleteMessageIds,b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.deleteMessages(q.loggedInUserId,a)}).then(function(){var b=m.removeMessagesById(q,a);b=m.removePendingDeleteMessagesById(b,a),b=m.removeSelectedMessagesById(b,a),b=m.setLoadingConfirmAction(b,!1);var c=q.messages[q.messages.length-1],d=b.messages.length?b.messages[b.messages.length-1]:null;if(d&&d.id!=c.id){var e=L(b);f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,e)}else b.messages.length||f.publish(i.CONVERSATION_DELETED,b.id);return w(b)})},ga=function(a){return ia(a).then(function(){var a=m.setPendingDeleteConversation(q,!0);return w(a)})},ha=function(){var a=m.setLoadingConfirmAction(q,!0);return w(a).then(function(){return h.deleteConversation(q.loggedInUserId,q.id)}).then(function(){var a=m.removeMessages(q,q.messages);return a=m.removeSelectedMessagesById(a,q.selectedMessageIds),a=m.setPendingDeleteConversation(a,!1),a=m.setLoadingConfirmAction(a,!1),f.publish(i.CONVERSATION_DELETED,a.id),w(a)})},ia=function(a){var b=q.pendingDeleteMessageIds,c=m.removePendingAddContactsById(q,[a]);return c=m.removePendingRemoveContactsById(c,[a]),c=m.removePendingUnblockUsersById(c,[a]),c=m.removePendingBlockUsersById(c,[a]),c=m.removePendingDeleteMessagesById(c,b),c=m.setPendingDeleteConversation(c,!1),w(c)},ja=function(a){var b=q.loggedInUserId,c=q.members[a].contactrequests.filter(function(a){return a.requesteduserid==b}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return w(e).then(function(){return h.acceptContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),w(b)}).then(function(){f.publish(i.CONTACT_ADDED,q.members[a]),f.publish(i.CONTACT_REQUEST_ACCEPTED,d)})},ka=function(a){var b=q.loggedInUserId,c=q.members[a].contactrequests.filter(function(a){return a.requesteduserid==b}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return w(e).then(function(){return h.declineContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),w(b)}).then(function(){f.publish(i.CONTACT_REQUEST_DECLINED,d)})},la=function(a,b){v=!0;var c=m.setSendingMessage(q,!0),d=null;return w(c).then(function(){if(a||q.type!=C.PRIVATE&&q.type!=C.SELF)return h.sendMessageToConversation(a,b);var c=D();return h.sendMessageToUser(c,b).then(function(a){return d=parseInt(a.conversationid,10),a})}).then(function(a){var b=m.addMessages(q,[a]);b=m.setSendingMessage(b,!1);var c=L(b);return b.id||(b=m.setId(b,d),c.id=d,Aa(d),f.publish(i.CONVERSATION_CREATED,c)),w(b).then(function(){v=!1,f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c)})})["catch"](function(a){v=!1;var b=m.setSendingMessage(q,!1);w(b),e.exception(a)})},ma=function(a){var b=q;return b=q.selectedMessageIds.indexOf(a)>-1?m.removeSelectedMessagesById(q,[a]):m.addSelectedMessagesById(q,[a]),w(b)},na=function(){return ia(D()).then(function(){var a=m.removeSelectedMessagesById(q,q.selectedMessageIds);return w(a)})},oa=function(b,c,d,e){var f=function(a){return l.render(b,c,d,a)};if(!e){var g=m.buildInitialState(q.midnight,q.loggedInUserId,q.id),h=k.buildPatch(g,q);f(h)}return x.push(f),function(b){var c=k.buildPatch(q,b),d=x.map(function(a){return a(c)});return a.when.apply(null,d).then(function(){q=b,b.id&&(p[b.id]={state:b,messagesOffset:G(),loadedAllMessages:I()})})}},pa=function(a){return function(b,c){q.loadingConfirmAction||a(D())["catch"](function(a){var b=m.setLoadingConfirmAction(q,!1);w(b),e.exception(a)}),c.originalEvent.preventDefault()}},qa=function(b,c){var d=a(b.target),e=d.closest(B.FOOTER_CONTAINER),f=e.find(B.MESSAGE_TEXT_AREA),g=f.val().trim();""!==g&&la(q.id,g),c.originalEvent.preventDefault()},ra=function(b,c){var d=window.getSelection(),f=a(b.target);if(""==d.toString()&&!f.is("a")){var g=f.closest(B.MESSAGE),h=parseInt(g.attr("data-message-id"),10);ma(h)["catch"](e.exception),c.originalEvent.preventDefault()}},sa=function(a,b){na()["catch"](e.exception),b.originalEvent.preventDefault()},ta=function(a){return function(b,c){var d=D(),e=q.members[d];n.go(a,o.VIEW_CONTACT,e),c.originalEvent.preventDefault()}},ua=function(a,b){aa()["catch"](e.exception),b.originalEvent.preventDefault()},va=function(a,b){ba()["catch"](e.exception),b.originalEvent.preventDefault()},wa=function(a,b){ca()["catch"](e.exception),b.originalEvent.preventDefault()},xa=function(a,b){da()["catch"](e.exception),b.originalEvent.preventDefault()},ya=function(a){return function(b,c){n.go(a,o.VIEW_GROUP_INFO,{id:q.id,name:q.name,subname:q.subname,imageUrl:q.imageUrl,totalMemberCount:q.totalMemberCount},q.loggedInUserId),c.originalEvent.preventDefault()}},za=function(a,c,g,h){var j=!1,k=K(g),l=[[B.ACTION_REQUEST_BLOCK,pa(U)],[B.ACTION_REQUEST_UNBLOCK,pa(W)],[B.ACTION_REQUEST_ADD_CONTACT,pa($)],[B.ACTION_REQUEST_REMOVE_CONTACT,pa(Y)],[B.ACTION_REQUEST_DELETE_CONVERSATION,pa(ga)],[B.ACTION_CANCEL_EDIT_MODE,sa],[B.ACTION_VIEW_CONTACT,ta(a)],[B.ACTION_VIEW_GROUP_INFO,ya(a)],[B.ACTION_CONFIRM_FAVOURITE,ua],[B.ACTION_CONFIRM_MUTE,wa],[B.ACTION_CONFIRM_UNFAVOURITE,va],[B.ACTION_CONFIRM_UNMUTE,xa]],n=[[B.ACTION_CANCEL_CONFIRM,pa(ia)],[B.ACTION_CONFIRM_BLOCK,pa(V)],[B.ACTION_CONFIRM_UNBLOCK,pa(X)],[B.ACTION_CONFIRM_ADD_CONTACT,pa(_)],[B.ACTION_CONFIRM_REMOVE_CONTACT,pa(Z)],[B.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES,pa(fa)],[B.ACTION_CONFIRM_DELETE_CONVERSATION,pa(ha)],[B.ACTION_REQUEST_ADD_CONTACT,pa($)],[B.ACTION_ACCEPT_CONTACT_REQUEST,pa(ja)],[B.ACTION_DECLINE_CONTACT_REQUEST,pa(ka)],[B.MESSAGE,ra]],p=[[B.SEND_MESSAGE_BUTTON,qa],[B.ACTION_REQUEST_DELETE_SELECTED_MESSAGES,pa(ea)],[B.ACTION_REQUEST_ADD_CONTACT,pa($)],[B.ACTION_REQUEST_UNBLOCK,pa(W)]];b.init(h),d.define(c,[d.events.activate]),d.define(g,[d.events.activate]),d.define(h,[d.events.activate,d.events.enter]),d.define(k,[d.events.scrollTop,d.events.scrollLock]),k.on(d.events.scrollTop,function(a,b){var c=Object.keys(q.members).length>1;if(!u&&!j&&!I()&&c){j=!0;var d=m.setLoadingMessages(q,!0);w(d).then(function(){return R(q.id,z,G(),y,[])}).then(function(){j=!1,H(G()+z)})["catch"](function(a){j=!1,e.exception(a)})}b.originalEvent.preventDefault()}),l.forEach(function(a){var b=a[0],e=a[1];c.on(d.events.activate,b,e)}),n.forEach(function(a){var b=a[0],c=a[1];g.on(d.events.activate,b,c)}),p.forEach(function(a){var b=a[0],c=a[1];h.on(d.events.activate,b,c)}),h.on(d.events.enter,B.MESSAGE_TEXT_AREA,function(a,b){var c=h.attr("data-enter-to-send");c&&"false"!=c&&"0"!=c&&qa(a,b)}),f.subscribe(i.ROUTE_CHANGED,function(a){t&&a.route!=o.VIEW_CONVERSATION&&t.stop()})},Aa=function(a){t&&t.stop(),t=new c(S(a,y),function(a){return a?2*a:A}),t.start()},Ba=function(a,b,c){var d=c.id,e=parseInt(a.attr("data-midnight"),10),f=m.buildInitialState(e,d,b);return q||(q=f),t&&t.stop(),w(f)},Ca=function(a,b,c){return b.id!=c?Ba(a,null,b).then(function(){return h.getConversationBetweenUsers(b.id,c,!0,!0,0,0,z,0,y).then(function(c){return Ea(a,c,b)})["catch"](function(){return M(b,c)})}):Ba(a,null,b).then(function(){return h.getSelfConversation(b.id,z,0,y).then(function(c){return Ea(a,c,b)})["catch"](function(){return N(b)})})},Da=function(a,b,c){var d=null;return b in p&&(d=p[b]),Ba(a,b,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),H(d.messagesOffset),J(d.loadedAllMessages),w(a)}return P(b,c,z,0,y)}).then(function(){return Aa(b)})},Ea=function(a,b,c){var d=null;return b.id in p&&(d=p[b.id]),Ba(a,b.id,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),H(d.messagesOffset),J(d.loadedAllMessages),w(a)}return Q(b,c,z,y)}).then(function(){return Aa(b.id)})},Fa=function(b,c,d,f,g,h,i){var k=null,l=null;g&&null!==g&&"object"==typeof g?(k=g,l=parseInt(k.id,10)):(k=null,l=parseInt(g,10),l=isNaN(l)?null:l),!l&&h&&i&&(l=E(i));var m=!q||q.id!=l||i&&i!=D();if(d.attr("data-init")||(w=oa(c,d,f,m),za(b,c,d,f),d.attr("data-init",!0)),m){u=!0;var n=null,o=F(d);return n=k?Ea(d,k,o,i):l?Da(d,l,o,i):Ca(d,o,i),n.then(function(){u=!1,c.find(j.SELECTORS.CAN_RECEIVE_FOCUS).first().focus()})["catch"](function(a){u=!1,e.exception(a)})}if(Aa(l),q.type==C.PRIVATE&&h){var p=D();switch(h){case"block":return U(p);case"unblock":return W(p);case"add-contact":return $(p);case"remove-contact":return Y(p)}}return a.Deferred().resolve().promise()},Ga=function(){return g.get_string("messagedrawerviewconversation","core_message",q.name)};return{show:Fa,description:Ga}}); \ No newline at end of file +define(["jquery","core/auto_rows","core/backoff_timer","core/custom_interaction_events","core/notification","core/pubsub","core/str","core_message/message_repository","core_message/message_drawer_events","core_message/message_drawer_view_conversation_constants","core_message/message_drawer_view_conversation_patcher","core_message/message_drawer_view_conversation_renderer","core_message/message_drawer_view_conversation_state_manager","core_message/message_drawer_router","core_message/message_drawer_routes"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p={},q=null,r=!1,s=0,t=null,u=!0,v=!1,w=null,x=[],y=j.NEWEST_MESSAGES_FIRST,z=j.LOAD_MESSAGE_LIMIT,A=j.INITIAL_NEW_MESSAGE_POLL_TIMEOUT,B=j.SELECTORS,C=j.CONVERSATION_TYPES,D=function(){if(!q||q.type==C.PUBLIC)return null;var a=q.loggedInUserId;if(q.type==C.SELF)return a;var b=Object.keys(q.members).filter(function(b){return a!=b});return b.length?b[0]:null},E=function(a){return Object.keys(p).reduce(function(b,c){if(!b){var d=p[c].state;d.type!=C.PUBLIC&&a in d.members&&(b=d.id)}return b},null)},F=function(a){return{id:parseInt(a.attr("data-user-id"),10),fullname:null,profileimageurl:null,profileimageurlsmall:null,isonline:null,showonlinestatus:null,isblocked:null,iscontact:null,isdeleted:null,canmessage:null,requirescontact:null,contactrequests:[]}},G=function(){return s},H=function(a){s=a,p[q.id].messagesOffset=a},I=function(){return r},J=function(a){r=a,p[q.id].loadedAllMessages=a},K=function(a){return a.find(B.MESSAGES_CONTAINER)},L=function(b){return{id:b.id,name:b.name,subname:b.subname,imageUrl:b.imageUrl,isFavourite:b.isFavourite,isMuted:b.isMuted,type:b.type,totalMemberCount:b.totalMemberCount,loggedInUserId:b.loggedInUserId,messages:b.messages.map(function(b){return a.extend({},b)}),members:Object.keys(b.members).reduce(function(c,d){return c[d]=a.extend({},b.members[d]),c[d].contactrequests=b.members[d].contactrequests.map(function(b){return a.extend({},b)}),c},{})}},M=function(a,b){var c=a.id,d=c==b?C.SELF:C.PRIVATE,f=m.setLoadingMembers(q,!0);return f=m.setLoadingMessages(f,!0),w(f).then(function(){return h.getMemberInfo(c,[b],!0,!0)}).then(function(a){if(a.length)return a[0];throw new Error("Unable to load other user profile")}).then(function(b){var c=d==C.SELF?[b]:[b,a],e=m.addMembers(q,c);return e=m.setLoadingMembers(e,!1),e=m.setLoadingMessages(e,!1),e=m.setName(e,b.fullname),e=m.setType(e,d),e=m.setImageUrl(e,b.profileimageurl),e=m.setTotalMemberCount(e,c.length),w(e).then(function(){return b})})["catch"](function(a){var b=m.setLoadingMembers(q,!1);w(b),e.exception(a)})},N=function(a,b){var c=null;if(a.type==C.PRIVATE){var d=a.members.filter(function(a){return a.id!=b});c=d.length?d[0]:null}else a.type==C.SELF&&(c=a.members[0]);var e=a.name,f=a.imageurl;a.type!=C.PUBLIC&&(e=e||c?c.fullname:"",f=f||c?c.profileimageurl:"");var g=m.addMembers(q,a.members);return g=m.setName(g,e),g=m.setSubname(g,a.subname),g=m.setType(g,a.type),g=m.setImageUrl(g,f),g=m.setTotalMemberCount(g,a.membercount),g=m.setIsFavourite(g,a.isfavourite),g=m.setIsMuted(g,a.ismuted),g=m.addMessages(g,a.messages)},O=function(a,b,c,d,f){var g=b.id,i=m.setLoadingMembers(q,!0);return i=m.setLoadingMessages(i,!0),w(i).then(function(){return h.getConversation(g,a,!0,!0,0,0,c+1,d,f)}).then(function(a){return a.messages.length>c?a.messages=a.messages.slice(1):J(!0),H(d+c),a}).then(function(a){var c=a.members.filter(function(a){return a.id==b.id});c.length<1&&(a.members=a.members.concat([b]));var d=N(a,b.id);return d=m.setLoadingMembers(d,!1),d=m.setLoadingMessages(d,!1),w(d).then(function(){return a})}).then(function(){return S(a)})["catch"](function(a){var b=m.setLoadingMembers(q,!1);b=m.setLoadingMessages(b,!1),w(b),e.exception(a)})},P=function(a,b,c,d){var f=a.members.filter(function(a){return a.id==b.id});f.length<1&&(a.members=a.members.concat([b]));var g=N(a,b.id);g=m.setLoadingMembers(g,!1),g=m.setLoadingMessages(g,!0);var h=a.messages.length;return w(g).then(function(){if(hb?a.messages=a.messages.slice(0,-1):J(!0),a):a}).then(function(a){var b=a.members.filter(function(a){return!(a.id in q.members)}),c=m.addMembers(q,b);return c=m.addMessages(c,a.messages),c=m.setLoadingMessages(c,!1),w(c).then(function(){return a})})["catch"](function(a){var b=m.setLoadingMessages(q,!1);throw w(b),a})},R=function(b,c){return function(){var d=q.messages,e=d.length?d[d.length-1]:null;if(e&&!u&&!v){for(var g=[],h=d.length-1;h>=0;h--){var j=d[h];if(j.timeCreated!==e.timeCreated)break;g.push(j.id)}return Q(b,0,0,c,g,e.timeCreated).then(function(a){if(a.messages.length){t.restart();var c=L(q);return f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c),S(b)}return a})}return a.Deferred().resolve().promise()}},S=function(a){var b=q.loggedInUserId;return h.markAllConversationMessagesAsRead(b,a).then(function(){var b=m.markMessagesAsRead(q,q.messages);return f.publish(i.CONVERSATION_READ,a),w(b)})},T=function(a){return ha(a).then(function(){var b=m.addPendingBlockUsersById(q,[a]);return w(b)})},U=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.blockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingBlockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_BLOCKED,a),w(c)})},V=function(a){return ha(a).then(function(){var b=m.addPendingUnblockUsersById(q,[a]);return w(b)})},W=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.unblockUser(q.loggedInUserId,a)}).then(function(b){var c=m.addMembers(q,[b]);return c=m.removePendingUnblockUsersById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_UNBLOCKED,a),w(c)})},X=function(a){return ha(a).then(function(){var b=m.addPendingRemoveContactsById(q,[a]);return w(b)})},Y=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.deleteContacts(q.loggedInUserId,[a])}).then(function(b){var c=m.addMembers(q,b);return c=m.removePendingRemoveContactsById(c,[a]),c=m.setLoadingConfirmAction(c,!1),f.publish(i.CONTACT_REMOVED,a),w(c)})},Z=function(a){return ha(a).then(function(){var b=m.addPendingAddContactsById(q,[a]);return w(b)})},$=function(a){var b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.createContactRequest(q.loggedInUserId,a)}).then(function(a){if(!a.request)throw new Error(a.warnings[0].message);return a.request}).then(function(b){var c=m.removePendingAddContactsById(q,[a]);return c=m.addContactRequests(c,[b]),c=m.setLoadingConfirmAction(c,!1),w(c)})},_=function(){var a=q.loggedInUserId,b=q.id;return h.setFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!0);return w(a)}).then(function(){return f.publish(i.CONVERSATION_SET_FAVOURITE,L(q))})},aa=function(){var a=q.loggedInUserId,b=q.id;return h.unsetFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!1);return w(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_FAVOURITE,L(q))})},ba=function(){var a=q.loggedInUserId,b=q.id;return h.setMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!0);return w(a)}).then(function(){return f.publish(i.CONVERSATION_SET_MUTED,L(q))})},ca=function(){var a=q.loggedInUserId,b=q.id;return h.unsetMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!1);return w(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_MUTED,L(q))})},da=function(a){var b=q.selectedMessageIds;return ha(a).then(function(){var a=m.addPendingDeleteMessagesById(q,b);return w(a)})},ea=function(){var a=q.pendingDeleteMessageIds,b=m.setLoadingConfirmAction(q,!0);return w(b).then(function(){return h.deleteMessages(q.loggedInUserId,a)}).then(function(){var b=m.removeMessagesById(q,a);b=m.removePendingDeleteMessagesById(b,a),b=m.removeSelectedMessagesById(b,a),b=m.setLoadingConfirmAction(b,!1);var c=q.messages[q.messages.length-1],d=b.messages.length?b.messages[b.messages.length-1]:null;if(d&&d.id!=c.id){var e=L(b);f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,e)}else b.messages.length||f.publish(i.CONVERSATION_DELETED,b.id);return w(b)})},fa=function(a){return ha(a).then(function(){var a=m.setPendingDeleteConversation(q,!0);return w(a)})},ga=function(){var a=m.setLoadingConfirmAction(q,!0);return w(a).then(function(){return h.deleteConversation(q.loggedInUserId,q.id)}).then(function(){var a=m.removeMessages(q,q.messages);return a=m.removeSelectedMessagesById(a,q.selectedMessageIds),a=m.setPendingDeleteConversation(a,!1),a=m.setLoadingConfirmAction(a,!1),f.publish(i.CONVERSATION_DELETED,a.id),w(a)})},ha=function(a){var b=q.pendingDeleteMessageIds,c=m.removePendingAddContactsById(q,[a]);return c=m.removePendingRemoveContactsById(c,[a]),c=m.removePendingUnblockUsersById(c,[a]),c=m.removePendingBlockUsersById(c,[a]),c=m.removePendingDeleteMessagesById(c,b),c=m.setPendingDeleteConversation(c,!1),w(c)},ia=function(a){var b=q.loggedInUserId,c=q.members[a].contactrequests.filter(function(a){return a.requesteduserid==b}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return w(e).then(function(){return h.acceptContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),w(b)}).then(function(){f.publish(i.CONTACT_ADDED,q.members[a]),f.publish(i.CONTACT_REQUEST_ACCEPTED,d)})},ja=function(a){var b=q.loggedInUserId,c=q.members[a].contactrequests.filter(function(a){return a.requesteduserid==b}),d=c[0],e=m.setLoadingConfirmAction(q,!0);return w(e).then(function(){return h.declineContactRequest(a,b)}).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),w(b)}).then(function(){f.publish(i.CONTACT_REQUEST_DECLINED,d)})},ka=function(a,b){v=!0;var c=m.setSendingMessage(q,!0),d=null;return w(c).then(function(){if(a||q.type==C.PUBLIC)return h.sendMessageToConversation(a,b);var c=D();return h.sendMessageToUser(c,b).then(function(a){return d=parseInt(a.conversationid,10),a})}).then(function(a){var b=m.addMessages(q,[a]);b=m.setSendingMessage(b,!1);var c=L(b);return b.id||(b=m.setId(b,d),c.id=d,za(d),f.publish(i.CONVERSATION_CREATED,c)),w(b).then(function(){v=!1,f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c)})})["catch"](function(a){v=!1;var b=m.setSendingMessage(q,!1);w(b),e.exception(a)})},la=function(a){var b=q;return b=q.selectedMessageIds.indexOf(a)>-1?m.removeSelectedMessagesById(q,[a]):m.addSelectedMessagesById(q,[a]),w(b)},ma=function(){return ha(D()).then(function(){var a=m.removeSelectedMessagesById(q,q.selectedMessageIds);return w(a)})},na=function(b,c,d,e){var f=function(a){return l.render(b,c,d,a)};if(!e){var g=m.buildInitialState(q.midnight,q.loggedInUserId,q.id),h=k.buildPatch(g,q);f(h)}return x.push(f),function(b){var c=k.buildPatch(q,b),d=x.map(function(a){return a(c)});return a.when.apply(null,d).then(function(){q=b,b.id&&(p[b.id]={state:b,messagesOffset:G(),loadedAllMessages:I()})})}},oa=function(a){return function(b,c){q.loadingConfirmAction||a(D())["catch"](function(a){var b=m.setLoadingConfirmAction(q,!1);w(b),e.exception(a)}),c.originalEvent.preventDefault()}},pa=function(b,c){var d=a(b.target),e=d.closest(B.FOOTER_CONTAINER),f=e.find(B.MESSAGE_TEXT_AREA),g=f.val().trim();""!==g&&ka(q.id,g),c.originalEvent.preventDefault()},qa=function(b,c){var d=window.getSelection(),f=a(b.target);if(""==d.toString()&&!f.is("a")){var g=f.closest(B.MESSAGE),h=parseInt(g.attr("data-message-id"),10);la(h)["catch"](e.exception),c.originalEvent.preventDefault()}},ra=function(a,b){ma()["catch"](e.exception),b.originalEvent.preventDefault()},sa=function(a){return function(b,c){var d=D(),e=q.members[d];n.go(a,o.VIEW_CONTACT,e),c.originalEvent.preventDefault()}},ta=function(a,b){_()["catch"](e.exception),b.originalEvent.preventDefault()},ua=function(a,b){aa()["catch"](e.exception),b.originalEvent.preventDefault()},va=function(a,b){ba()["catch"](e.exception),b.originalEvent.preventDefault()},wa=function(a,b){ca()["catch"](e.exception),b.originalEvent.preventDefault()},xa=function(a){return function(b,c){n.go(a,o.VIEW_GROUP_INFO,{id:q.id,name:q.name,subname:q.subname,imageUrl:q.imageUrl,totalMemberCount:q.totalMemberCount},q.loggedInUserId),c.originalEvent.preventDefault()}},ya=function(a,c,g,h){var j=!1,k=K(g),l=[[B.ACTION_REQUEST_BLOCK,oa(T)],[B.ACTION_REQUEST_UNBLOCK,oa(V)],[B.ACTION_REQUEST_ADD_CONTACT,oa(Z)],[B.ACTION_REQUEST_REMOVE_CONTACT,oa(X)],[B.ACTION_REQUEST_DELETE_CONVERSATION,oa(fa)],[B.ACTION_CANCEL_EDIT_MODE,ra],[B.ACTION_VIEW_CONTACT,sa(a)],[B.ACTION_VIEW_GROUP_INFO,xa(a)],[B.ACTION_CONFIRM_FAVOURITE,ta],[B.ACTION_CONFIRM_MUTE,va],[B.ACTION_CONFIRM_UNFAVOURITE,ua],[B.ACTION_CONFIRM_UNMUTE,wa]],n=[[B.ACTION_CANCEL_CONFIRM,oa(ha)],[B.ACTION_CONFIRM_BLOCK,oa(U)],[B.ACTION_CONFIRM_UNBLOCK,oa(W)],[B.ACTION_CONFIRM_ADD_CONTACT,oa($)],[B.ACTION_CONFIRM_REMOVE_CONTACT,oa(Y)],[B.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES,oa(ea)],[B.ACTION_CONFIRM_DELETE_CONVERSATION,oa(ga)],[B.ACTION_REQUEST_ADD_CONTACT,oa(Z)],[B.ACTION_ACCEPT_CONTACT_REQUEST,oa(ia)],[B.ACTION_DECLINE_CONTACT_REQUEST,oa(ja)],[B.MESSAGE,qa]],p=[[B.SEND_MESSAGE_BUTTON,pa],[B.ACTION_REQUEST_DELETE_SELECTED_MESSAGES,oa(da)],[B.ACTION_REQUEST_ADD_CONTACT,oa(Z)],[B.ACTION_REQUEST_UNBLOCK,oa(V)]];b.init(h),d.define(c,[d.events.activate]),d.define(g,[d.events.activate]),d.define(h,[d.events.activate,d.events.enter]),d.define(k,[d.events.scrollTop,d.events.scrollLock]),k.on(d.events.scrollTop,function(a,b){var c=Object.keys(q.members).length>1;if(!u&&!j&&!I()&&c){j=!0;var d=m.setLoadingMessages(q,!0);w(d).then(function(){return Q(q.id,z,G(),y,[])}).then(function(){j=!1,H(G()+z)})["catch"](function(a){j=!1,e.exception(a)})}b.originalEvent.preventDefault()}),l.forEach(function(a){var b=a[0],e=a[1];c.on(d.events.activate,b,e)}),n.forEach(function(a){var b=a[0],c=a[1];g.on(d.events.activate,b,c)}),p.forEach(function(a){var b=a[0],c=a[1];h.on(d.events.activate,b,c)}),h.on(d.events.enter,B.MESSAGE_TEXT_AREA,function(a,b){var c=h.attr("data-enter-to-send");c&&"false"!=c&&"0"!=c&&pa(a,b)}),f.subscribe(i.ROUTE_CHANGED,function(a){t&&a.route!=o.VIEW_CONVERSATION&&t.stop()})},za=function(a){t&&t.stop(),t=new c(R(a,y),function(a){return a?2*a:A}),t.start()},Aa=function(a,b,c){var d=c.id,e=parseInt(a.attr("data-midnight"),10),f=m.buildInitialState(e,d,b);return q||(q=f),t&&t.stop(),w(f)},Ba=function(a,b,c){return Aa(a,null,b).then(function(){return b.id!=c?h.getConversationBetweenUsers(b.id,c,!0,!0,0,0,z,0,y):h.getSelfConversation(b.id,z,0,y)}).then(function(c){return Da(a,c,b)})["catch"](function(){return M(b,c)})},Ca=function(a,b,c){var d=null;return b in p&&(d=p[b]),Aa(a,b,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),H(d.messagesOffset),J(d.loadedAllMessages),w(a)}return O(b,c,z,0,y)}).then(function(){return za(b)})},Da=function(a,b,c){var d=null;return b.id in p&&(d=p[b.id]),Aa(a,b.id,c).then(function(){if(d){var a=d.state;return a=m.setLoadingMessages(a,!1),a=m.setLoadingMembers(a,!1),H(d.messagesOffset),J(d.loadedAllMessages),w(a)}return P(b,c,z,y)}).then(function(){return za(b.id)})},Ea=function(b,c,d,f,g,h,i){var k=null,l=null;g&&null!==g&&"object"==typeof g?(k=g,l=parseInt(k.id,10)):(k=null,l=parseInt(g,10),l=isNaN(l)?null:l),!l&&h&&i&&(l=E(i));var m=!q||q.id!=l||i&&i!=D();if(d.attr("data-init")||(w=na(c,d,f,m),ya(b,c,d,f),d.attr("data-init",!0)),m){u=!0;var n=null,o=F(d);return n=k?Da(d,k,o,i):l?Ca(d,l,o,i):Ba(d,o,i),n.then(function(){u=!1,c.find(j.SELECTORS.CAN_RECEIVE_FOCUS).first().focus()})["catch"](function(a){u=!1,e.exception(a)})}if(za(l),q.type==C.PRIVATE&&h){var p=D();switch(h){case"block":return T(p);case"unblock":return V(p);case"add-contact":return Z(p);case"remove-contact":return X(p)}}return a.Deferred().resolve().promise()},Fa=function(){return g.get_string("messagedrawerviewconversation","core_message",q.name)};return{show:Ea,description:Fa}}); \ No newline at end of file diff --git a/message/amd/build/message_drawer_view_conversation_constants.min.js b/message/amd/build/message_drawer_view_conversation_constants.min.js index 464ad1e42f6..2c2761d12ed 100644 --- a/message/amd/build/message_drawer_view_conversation_constants.min.js +++ b/message/amd/build/message_drawer_view_conversation_constants.min.js @@ -1 +1 @@ -define([],function(){var a={ACTION_ACCEPT_CONTACT_REQUEST:'[data-action="accept-contact-request"]',ACTION_CANCEL_CONFIRM:'[data-action="cancel-confirm"]',ACTION_CANCEL_EDIT_MODE:'[data-action="cancel-edit-mode"]',ACTION_CONFIRM_ADD_CONTACT:'[data-action="confirm-add-contact"]',ACTION_CONFIRM_BLOCK:'[data-action="confirm-block"]',ACTION_CONFIRM_DELETE_SELECTED_MESSAGES:'[data-action="confirm-delete-selected-messages"]',ACTION_CONFIRM_DELETE_CONVERSATION:'[data-action="confirm-delete-conversation"]',ACTION_CONFIRM_FAVOURITE:'[data-action="confirm-favourite"]',ACTION_CONFIRM_MUTE:'[data-action="confirm-mute"]',ACTION_CONFIRM_UNFAVOURITE:'[data-action="confirm-unfavourite"]',ACTION_CONFIRM_REMOVE_CONTACT:'[data-action="confirm-remove-contact"]',ACTION_CONFIRM_UNBLOCK:'[data-action="confirm-unblock"]',ACTION_CONFIRM_UNMUTE:'[data-action="confirm-unmute"]',ACTION_DECLINE_CONTACT_REQUEST:'[data-action="decline-contact-request"]',ACTION_REQUEST_ADD_CONTACT:'[data-action="request-add-contact"]',ACTION_REQUEST_BLOCK:'[data-action="request-block"]',ACTION_REQUEST_DELETE_CONVERSATION:'[data-action="request-delete-conversation"]',ACTION_REQUEST_DELETE_SELECTED_MESSAGES:'[data-action="delete-selected-messages"]',ACTION_REQUEST_REMOVE_CONTACT:'[data-action="request-remove-contact"]',ACTION_REQUEST_UNBLOCK:'[data-action="request-unblock"]',ACTION_VIEW_CONTACT:'[data-action="view-contact"]',ACTION_VIEW_GROUP_INFO:'[data-action="view-group-info"]',CAN_RECEIVE_FOCUS:'input:not([type="hidden"]), a[href], button, textarea, select, [tabindex]',CONFIRM_DIALOGUE_BUTTON_TEXT:'[data-region="dialogue-button-text"]',CONFIRM_DIALOGUE_CANCEL_BUTTON:'[data-action="cancel-confirm"]',CONFIRM_DIALOGUE_CONTAINER:'[data-region="confirm-dialogue-container"]',CONFIRM_DIALOGUE_HEADER:'[data-region="dialogue-header"]',CONFIRM_DIALOGUE_TEXT:'[data-region="dialogue-text"]',CONTACT_REQUEST_SENT_MESSAGE_CONTAINER:'[data-region="contact-request-sent-message-container"]',CONTENT_PLACEHOLDER_CONTAINER:'[data-region="content-placeholder"]',CONTENT_CONTAINER:'[data-region="content-container"]',CONTENT_MESSAGES_CONTAINER:'[data-region="content-message-container"]',CONTENT_MESSAGES_FOOTER_CONTAINER:'[data-region="content-messages-footer-container"]',CONTENT_MESSAGES_FOOTER_EDIT_MODE_CONTAINER:'[data-region="content-messages-footer-edit-mode-container"]',CONTENT_MESSAGES_FOOTER_REQUIRE_CONTACT_CONTAINER:'[data-region="content-messages-footer-require-contact-container"]',CONTENT_MESSAGES_FOOTER_REQUIRE_UNBLOCK_CONTAINER:'[data-region="content-messages-footer-require-unblock-container"]',CONTENT_MESSAGES_FOOTER_UNABLE_TO_MESSAGE_CONTAINER:'[data-region="content-messages-footer-unable-to-message"]',DAY_MESSAGES_CONTAINER:'[data-region="day-messages-container"]',FAVOURITE_ICON_CONTAINER:'[data-region="favourite-icon-container"]',FOOTER_CONTAINER:'[data-region="content-messages-footer-container"]',HEADER:'[data-region="header-content"]',HEADER_EDIT_MODE:'[data-region="header-edit-mode"]',HEADER_PLACEHOLDER_CONTAINER:'[data-region="header-placeholder"]',LOADING_ICON_CONTAINER:'[data-region="loading-icon-container"]',MESSAGE:'[data-region="message"]',MESSAGE_NOT_SELECTED:'[data-region="message"][aria-checked="false"]',MESSAGE_NOT_SELECTED_ICON:'[data-region="not-selected-icon"]',MESSAGE_SELECTED_ICON:'[data-region="selected-icon"]',MESSAGES:'[data-region="content-message-container"]',MESSAGES_CONTAINER:'[data-region="content-message-container"]',MESSAGES_SELECTED_COUNT:'[data-region="message-selected-court"]',MESSAGE_TEXT_AREA:'[data-region="send-message-txt"]',MORE_MESSAGES_LOADING_ICON_CONTAINER:'[data-region="more-messages-loading-icon-container"]',MUTED_ICON_CONTAINER:'[data-region="muted-icon-container"]',PLACEHOLDER_CONTAINER:'[data-region="placeholder-container"]',SELF_CONVERSATION_MESSAGE_CONTAINER:'[data-region="self-conversation-message-container"]',SEND_MESSAGE_BUTTON:'[data-action="send-message"]',SEND_MESSAGE_ICON_CONTAINER:'[data-region="send-icon-container"]',TEXT:'[data-region="text"]',TITLE:'[data-region="title"]'},b={HEADER_PRIVATE:"core_message/message_drawer_view_conversation_header_content_type_private",HEADER_PRIVATE_NO_CONTROLS:"core_message/message_drawer_view_conversation_header_content_type_private_no_controls",HEADER_PUBLIC:"core_message/message_drawer_view_conversation_header_content_type_public",HEADER_SELF:"core_message/message_drawer_view_conversation_header_content_type_self",DAY:"core_message/message_drawer_view_conversation_body_day",MESSAGE:"core_message/message_drawer_view_conversation_body_message",MESSAGES:"core_message/message_drawer_view_conversation_body_messages"},c={PRIVATE:1,PUBLIC:2,SELF:3},d={PRIVATE:1,PUBLIC:2,FAVOURITE:null};return{SELECTORS:a,TEMPLATES:b,CONVERSATION_TYPES:c,CONVERSATION_CATEGORY_TYPES:d,NEWEST_MESSAGES_FIRST:!0,LOAD_MESSAGE_LIMIT:100,INITIAL_NEW_MESSAGE_POLL_TIMEOUT:1e3}}); \ No newline at end of file +define([],function(){var a={ACTION_ACCEPT_CONTACT_REQUEST:'[data-action="accept-contact-request"]',ACTION_CANCEL_CONFIRM:'[data-action="cancel-confirm"]',ACTION_CANCEL_EDIT_MODE:'[data-action="cancel-edit-mode"]',ACTION_CONFIRM_ADD_CONTACT:'[data-action="confirm-add-contact"]',ACTION_CONFIRM_BLOCK:'[data-action="confirm-block"]',ACTION_CONFIRM_DELETE_SELECTED_MESSAGES:'[data-action="confirm-delete-selected-messages"]',ACTION_CONFIRM_DELETE_CONVERSATION:'[data-action="confirm-delete-conversation"]',ACTION_CONFIRM_FAVOURITE:'[data-action="confirm-favourite"]',ACTION_CONFIRM_MUTE:'[data-action="confirm-mute"]',ACTION_CONFIRM_UNFAVOURITE:'[data-action="confirm-unfavourite"]',ACTION_CONFIRM_REMOVE_CONTACT:'[data-action="confirm-remove-contact"]',ACTION_CONFIRM_UNBLOCK:'[data-action="confirm-unblock"]',ACTION_CONFIRM_UNMUTE:'[data-action="confirm-unmute"]',ACTION_DECLINE_CONTACT_REQUEST:'[data-action="decline-contact-request"]',ACTION_REQUEST_ADD_CONTACT:'[data-action="request-add-contact"]',ACTION_REQUEST_BLOCK:'[data-action="request-block"]',ACTION_REQUEST_DELETE_CONVERSATION:'[data-action="request-delete-conversation"]',ACTION_REQUEST_DELETE_SELECTED_MESSAGES:'[data-action="delete-selected-messages"]',ACTION_REQUEST_REMOVE_CONTACT:'[data-action="request-remove-contact"]',ACTION_REQUEST_UNBLOCK:'[data-action="request-unblock"]',ACTION_VIEW_CONTACT:'[data-action="view-contact"]',ACTION_VIEW_GROUP_INFO:'[data-action="view-group-info"]',CAN_RECEIVE_FOCUS:'input:not([type="hidden"]), a[href], button, textarea, select, [tabindex]',CONFIRM_DIALOGUE_BUTTON_TEXT:'[data-region="dialogue-button-text"]',CONFIRM_DIALOGUE_CANCEL_BUTTON:'[data-action="cancel-confirm"]',CONFIRM_DIALOGUE_CONTAINER:'[data-region="confirm-dialogue-container"]',CONFIRM_DIALOGUE_HEADER:'[data-region="dialogue-header"]',CONFIRM_DIALOGUE_TEXT:'[data-region="dialogue-text"]',CONTACT_REQUEST_SENT_MESSAGE_CONTAINER:'[data-region="contact-request-sent-message-container"]',CONTENT_PLACEHOLDER_CONTAINER:'[data-region="content-placeholder"]',CONTENT_CONTAINER:'[data-region="content-container"]',CONTENT_MESSAGES_CONTAINER:'[data-region="content-message-container"]',CONTENT_MESSAGES_FOOTER_CONTAINER:'[data-region="content-messages-footer-container"]',CONTENT_MESSAGES_FOOTER_EDIT_MODE_CONTAINER:'[data-region="content-messages-footer-edit-mode-container"]',CONTENT_MESSAGES_FOOTER_REQUIRE_CONTACT_CONTAINER:'[data-region="content-messages-footer-require-contact-container"]',CONTENT_MESSAGES_FOOTER_REQUIRE_UNBLOCK_CONTAINER:'[data-region="content-messages-footer-require-unblock-container"]',CONTENT_MESSAGES_FOOTER_UNABLE_TO_MESSAGE_CONTAINER:'[data-region="content-messages-footer-unable-to-message"]',DAY_MESSAGES_CONTAINER:'[data-region="day-messages-container"]',FAVOURITE_ICON_CONTAINER:'[data-region="favourite-icon-container"]',FOOTER_CONTAINER:'[data-region="content-messages-footer-container"]',HEADER:'[data-region="header-content"]',HEADER_EDIT_MODE:'[data-region="header-edit-mode"]',HEADER_PLACEHOLDER_CONTAINER:'[data-region="header-placeholder"]',LOADING_ICON_CONTAINER:'[data-region="loading-icon-container"]',MESSAGE:'[data-region="message"]',MESSAGE_NOT_SELECTED:'[data-region="message"][aria-checked="false"]',MESSAGE_NOT_SELECTED_ICON:'[data-region="not-selected-icon"]',MESSAGE_SELECTED_ICON:'[data-region="selected-icon"]',MESSAGES:'[data-region="content-message-container"]',MESSAGES_CONTAINER:'[data-region="content-message-container"]',MESSAGES_SELECTED_COUNT:'[data-region="message-selected-court"]',MESSAGE_TEXT_AREA:'[data-region="send-message-txt"]',MORE_MESSAGES_LOADING_ICON_CONTAINER:'[data-region="more-messages-loading-icon-container"]',MUTED_ICON_CONTAINER:'[data-region="muted-icon-container"]',PLACEHOLDER_CONTAINER:'[data-region="placeholder-container"]',SELF_CONVERSATION_MESSAGE_CONTAINER:'[data-region="self-conversation-message-container"]',SEND_MESSAGE_BUTTON:'[data-action="send-message"]',SEND_MESSAGE_ICON_CONTAINER:'[data-region="send-icon-container"]',TEXT:'[data-region="text"]',TITLE:'[data-region="title"]'},b={HEADER_PRIVATE:"core_message/message_drawer_view_conversation_header_content_type_private",HEADER_PRIVATE_NO_CONTROLS:"core_message/message_drawer_view_conversation_header_content_type_private_no_controls",HEADER_PUBLIC:"core_message/message_drawer_view_conversation_header_content_type_public",HEADER_SELF:"core_message/message_drawer_view_conversation_header_content_type_self",DAY:"core_message/message_drawer_view_conversation_body_day",MESSAGE:"core_message/message_drawer_view_conversation_body_message",MESSAGES:"core_message/message_drawer_view_conversation_body_messages"},c={PRIVATE:1,PUBLIC:2,SELF:3};return{SELECTORS:a,TEMPLATES:b,CONVERSATION_TYPES:c,NEWEST_MESSAGES_FIRST:!0,LOAD_MESSAGE_LIMIT:100,INITIAL_NEW_MESSAGE_POLL_TIMEOUT:1e3}}); \ No newline at end of file diff --git a/message/amd/build/message_drawer_view_conversation_patcher.min.js b/message/amd/build/message_drawer_view_conversation_patcher.min.js index c818b038a64..1fdea1f222e 100644 --- a/message/amd/build/message_drawer_view_conversation_patcher.min.js +++ b/message/amd/build/message_drawer_view_conversation_patcher.min.js @@ -1 +1 @@ -define(["jquery","core/user_date","core_message/message_drawer_view_conversation_constants"],function(a,b,c){var d=function(a,c){var d=a.reduce(function(a,d){var e=b.getUserMidnightForTimestamp(d.timeCreated,c);return a.hasOwnProperty(e)?a[e].push(d):a[e]=[d],a},{});return Object.keys(d).map(function(a){return{timestamp:a,messages:d[a]}})},e=function(a,b,c){b=b.slice();var d=[],e=[],f=[];return a.forEach(function(a){for(var d=!1,g=0;g0,i=g.length>0;return d||e?h&&i?null:h||!i||e.iscontact?!d&&e?e.iscontact?"contact":null:!e&&d?d.iscontact?"non-contact":null:d.iscontact&&!e.iscontact?i?"pending-contact":"non-contact":!d.iscontact&&e.iscontact?"contact":null:"pending-contact":null},D=function(a,b){return!(a.loadingConfirmAction||!b.loadingConfirmAction)||!(a.loadingConfirmAction&&!b.loadingConfirmAction)&&null},E=function(a,b){var c=a.selectedMessageIds.length>0,d=b.selectedMessageIds.length>0,e=a.messages.length!=b.messages.length;return!(c||!d)||!(c&&!d)&&(!(!c||!e)||null)},F=function(a,b){var c=a.selectedMessageIds,d=b.selectedMessageIds;if(g(c,d))return null;var f=e(c,d,function(a,b){return a==b});return{count:d.length,add:f.missingFromA,remove:f.missingFromB}},G=function(a){return Object.keys(a.members).reduce(function(b,c){return c==a.loggedInUserId||b||(b=a.members[c]),b},null)},H=function(a,b){var c=b.contactrequests.filter(function(b){return b.userid==a||b.requesteduserid}),d=c.length>0;return b.requirescontact&&!b.iscontact&&!d},I=function(a,b){var c=G(a),d=G(b),e=a.messages.length>0,f=b.messages.length>0,g=b.loggedInUserId,h=c&&H(g,c),i=d&&H(g,d),j=u(a,b),k=j===!1;if(!a.hasTriedToLoadMessages&&!b.hasTriedToLoadMessages)return null;if(!c&&!d)return null;if(!c&&i)return{show:!0,hasMessages:f,user:d};if(k&&i)return{show:!0,hasMessages:f,user:d};if(a.hasTriedToLoadMessages&&b.hasTriedToLoadMessages){if(!h&&i)return{show:!0,hasMessages:f,user:d};if(h&&!i)return{show:!1,hasMessages:f}}return!a.hasTriedToLoadMessages&&b.hasTriedToLoadMessages&&i?{show:!0,hasMessages:f,user:d}:a.hasTriedToLoadMessages&&!b.hasTriedToLoadMessages&&h?{show:!1,hasMessages:e}:null},J=function(a,b){var c=G(a),d=G(b);return c||d?c&&!d?!c.isblocked&&null:!c&&d?!!d.isblocked||null:!(c.isblocked||!d.isblocked)||!(c.isblocked&&!d.isblocked)&&null:null},K=function(a,b){var d=G(a),e=G(b);return b.type==c.CONVERSATION_TYPES.SELF?null:d||e?d&&!e?!d.canmessage||null:!d&&e?!e.canmessage||null:!(!d.canmessage&&e.canmessage)&&(!(!d.canmessage||e.canmessage)||null):null},L=function(a,b){var c=p(a,b),d=E(a,b),e=I(a,b),f=J(a,b),g=K(a,b),h=null!==e?e.show&&e.hasMessages:null,i=G(b),j=function(a,c){if(a)return c;if(null!==a&&!a){if(!i)return{type:"content"};if(i.isblocked)return{type:"unblock"};if(b.messages.length&&H(b.loggedInUserId,i))return{type:"add-contact",user:i};if(!i.canmessage||i.requirescontact&&!i.iscontact)return{type:"unable-to-message"}}return null};if(null===c&&null===d&&null===e&&null===f)return null;for(var k=[[c,{type:"placeholder"}],[d,{type:"edit-mode"}],[g,{type:"unable-to-message"}],[f,{type:"unblock"}],[h,{type:"add-contact",user:i}]],l=0;l0,i=g.length>0,j=a.messages.length>0,k=a.messages.length>0;return h||!i||e.iscontact||k?!(d&&!d.iscontact&&i&&e.iscontact)&&(!(h&&!i)&&(!(!j&&k)&&null)):e.fullname},Q=function(b,d){var e={all:{reset:N,conversation:j,scrollToMessage:n,loadingMembers:o,loadingFirstMessages:p,loadingMessages:q,sendingMessage:r,confirmDeleteSelectedMessages:w,inEditMode:E,selectedMessages:F,isFavourite:A,isMuted:B}};e[c.CONVERSATION_TYPES.PRIVATE]={header:k,footer:L,confirmBlockUser:s,confirmUnblockUser:t,confirmAddContact:u,confirmRemoveContact:v,confirmContactRequest:y,confirmDeleteConversation:x,isBlocked:z,isContact:C,loadingConfirmAction:D,requireAddContact:I,contactRequestSent:P},e[c.CONVERSATION_TYPES.PUBLIC]={header:m,footer:M},e[c.CONVERSATION_TYPES.SELF]={header:l,footer:M,confirmDeleteConversation:x,selfConversationMessage:O};var f=a.extend({},e.all);return d.type&&d.type in e&&(f=a.extend(f,e[d.type])),Object.keys(f).reduce(function(a,c){var e=f[c],g=e(b,d);return null!==g&&(a[c]=g),a},{})};return{buildPatch:Q}}); \ No newline at end of file +define(["jquery","core/user_date","core_message/message_drawer_view_conversation_constants"],function(a,b,c){var d=function(a,c){var d=a.reduce(function(a,d){var e=b.getUserMidnightForTimestamp(d.timeCreated,c);return a.hasOwnProperty(e)?a[e].push(d):a[e]=[d],a},{});return Object.keys(d).map(function(a){return{timestamp:a,messages:d[a]}})},e=function(a,b,c){b=b.slice();var d=[],e=[],f=[];return a.forEach(function(a){for(var d=!1,g=0;g0,i=g.length>0;return d||e?h&&i?null:h||!i||e.iscontact?!d&&e?e.iscontact?"contact":null:!e&&d?d.iscontact?"non-contact":null:d.iscontact&&!e.iscontact?i?"pending-contact":"non-contact":!d.iscontact&&e.iscontact?"contact":null:"pending-contact":null},D=function(a,b){return!(a.loadingConfirmAction||!b.loadingConfirmAction)||!(a.loadingConfirmAction&&!b.loadingConfirmAction)&&null},E=function(a,b){var c=a.selectedMessageIds.length>0,d=b.selectedMessageIds.length>0,e=a.messages.length!=b.messages.length;return!(c||!d)||!(c&&!d)&&(!(!c||!e)||null)},F=function(a,b){var c=a.selectedMessageIds,d=b.selectedMessageIds;if(g(c,d))return null;var f=e(c,d,function(a,b){return a==b});return{count:d.length,add:f.missingFromA,remove:f.missingFromB}},G=function(a){return Object.keys(a.members).reduce(function(b,c){return c==a.loggedInUserId||b||(b=a.members[c]),b},null)},H=function(a,b){var c=b.contactrequests.filter(function(b){return b.userid==a||b.requesteduserid}),d=c.length>0;return b.requirescontact&&!b.iscontact&&!d},I=function(a,b){var c=G(a),d=G(b),e=a.messages.length>0,f=b.messages.length>0,g=b.loggedInUserId,h=c&&H(g,c),i=d&&H(g,d),j=u(a,b),k=j===!1;if(!a.hasTriedToLoadMessages&&!b.hasTriedToLoadMessages)return null;if(!c&&!d)return null;if(!c&&i)return{show:!0,hasMessages:f,user:d};if(k&&i)return{show:!0,hasMessages:f,user:d};if(a.hasTriedToLoadMessages&&b.hasTriedToLoadMessages){if(!h&&i)return{show:!0,hasMessages:f,user:d};if(h&&!i)return{show:!1,hasMessages:f}}return!a.hasTriedToLoadMessages&&b.hasTriedToLoadMessages&&i?{show:!0,hasMessages:f,user:d}:a.hasTriedToLoadMessages&&!b.hasTriedToLoadMessages&&h?{show:!1,hasMessages:e}:null},J=function(a,b){var c=G(a),d=G(b);return c||d?c&&!d?!c.isblocked&&null:!c&&d?!!d.isblocked||null:!(c.isblocked||!d.isblocked)||!(c.isblocked&&!d.isblocked)&&null:null},K=function(a,b){var d=G(a),e=G(b);return b.type==c.CONVERSATION_TYPES.SELF?null:d||e?d&&!e?!d.canmessage||null:!d&&e?!e.canmessage||null:!(!d.canmessage&&e.canmessage)&&(!(!d.canmessage||e.canmessage)||null):null},L=function(a,b){var c=p(a,b),d=E(a,b),e=I(a,b),f=J(a,b),g=K(a,b),h=null!==e?e.show&&e.hasMessages:null,i=G(b),j=function(a,c){if(a)return c;if(null!==a&&!a){if(!i)return{type:"content"};if(i.isblocked)return{type:"unblock"};if(b.messages.length&&H(b.loggedInUserId,i))return{type:"add-contact",user:i};if(!i.canmessage||i.requirescontact&&!i.iscontact)return{type:"unable-to-message"}}return null};if(null===c&&null===d&&null===e&&null===f)return null;for(var k=[[c,{type:"placeholder"}],[d,{type:"edit-mode"}],[g,{type:"unable-to-message"}],[f,{type:"unblock"}],[h,{type:"add-contact",user:i}]],l=0;l0,i=g.length>0,j=a.messages.length>0,k=a.messages.length>0;return h||!i||e.iscontact||k?!(d&&!d.iscontact&&i&&e.iscontact)&&(!(h&&!i)&&(!(!j&&k)&&null)):e.fullname},Q=function(b,d){var e={all:{reset:N,conversation:j,scrollToMessage:n,loadingMembers:o,loadingFirstMessages:p,loadingMessages:q,sendingMessage:r,confirmDeleteSelectedMessages:w,inEditMode:E,selectedMessages:F,isFavourite:A,isMuted:B}};e[c.CONVERSATION_TYPES.PRIVATE]={header:k,footer:L,confirmBlockUser:s,confirmUnblockUser:t,confirmAddContact:u,confirmRemoveContact:v,confirmContactRequest:y,confirmDeleteConversation:x,isBlocked:z,isContact:C,loadingConfirmAction:D,requireAddContact:I,contactRequestSent:P},e[c.CONVERSATION_TYPES.PUBLIC]={header:m,footer:M},e[c.CONVERSATION_TYPES.SELF]={header:l,footer:M,confirmDeleteConversation:x,selfConversationMessage:O};var f=a.extend({},e.all);return d.type&&d.type in e&&(f=a.extend(f,e[d.type])),Object.keys(f).reduce(function(a,c){var e=f[c],g=e(b,d);return null!==g&&(a[c]=g),a},{})};return{buildPatch:Q}}); \ No newline at end of file diff --git a/message/amd/build/message_drawer_view_overview.min.js b/message/amd/build/message_drawer_view_overview.min.js index aa0cdedb8e9..304ea701524 100644 --- a/message/amd/build/message_drawer_view_overview.min.js +++ b/message/amd/build/message_drawer_view_overview.min.js @@ -1 +1 @@ -define(["jquery","core/key_codes","core/pubsub","core/str","core_message/message_drawer_router","core_message/message_drawer_routes","core_message/message_drawer_events","core_message/message_drawer_view_overview_section","core_message/message_repository","core_message/message_drawer_view_conversation_constants"],function(a,b,c,d,e,f,g,h,i,j){var k={CONTACT_REQUEST_COUNT:'[data-region="contact-request-count"]',FAVOURITES:'[data-region="view-overview-favourites"]',GROUP_MESSAGES:'[data-region="view-overview-group-messages"]',MESSAGES:'[data-region="view-overview-messages"]',SEARCH_INPUT:'[data-region="view-overview-search-input"]',SECTION_TOGGLE_BUTTON:"[data-toggle]"},l=null,m=function(a){return null===l&&(l=i.getAllConversationCounts(a)),l},n=function(a,b){var c=0;return c=b===j.CONVERSATION_CATEGORY_TYPES.PRIVATE&&a.types[j.CONVERSATION_TYPES.SELF]?a.types[j.CONVERSATION_TYPES.PRIVATE]+a.types[j.CONVERSATION_TYPES.SELF]:b===j.CONVERSATION_CATEGORY_TYPES.FAVOURITE?a.favourites:a.types[b]},o=function(a){var b=a.some(function(a){var b=a[0];return h.isVisible(b)});if(!b){a.sort(function(a,b){var c=a[1],d=a[2],e=b[1],f=b[2];return d>0&&0==f?-1:0==d&&f>0?1:c>0&&0==e?-1:0==c&&e>0?1:0});var c=a[0][0],d=c.find(k.SECTION_TOGGLE_BUTTON);d.click()}},p=function(a){return a.find(k.SEARCH_INPUT)},q=function(a){return a.attr("data-user-id")},r=function(a){return function(){var b=a.find(k.CONTACT_REQUEST_COUNT),c=parseInt(b.text(),10);c=isNaN(c)?0:c-1,c<=0?b.addClass("hidden"):b.text(c)}},s=function(a,d){var h=p(d),i=[b.tab,b.shift,b.ctrl,b.alt];h.on("click",function(){e.go(a,f.VIEW_SEARCH)}),h.on("keydown",function(b){i.indexOf(b.keyCode)<0&&"Meta"!=b.key&&e.go(a,f.VIEW_SEARCH)}),c.subscribe(g.CONTACT_REQUEST_ACCEPTED,r(d)),c.subscribe(g.CONTACT_REQUEST_DECLINED,r(d))},t=function(a,b,c){b.attr("data-init")||(s(a,b),b.attr("data-init",!0)),p(b).val("");var d=q(c),e=m(d),f=[[c.find(k.FAVOURITES),j.CONVERSATION_CATEGORY_TYPES.FAVOURITE,!0],[c.find(k.GROUP_MESSAGES),j.CONVERSATION_CATEGORY_TYPES.PUBLIC,!1],[c.find(k.MESSAGES),j.CONVERSATION_CATEGORY_TYPES.PRIVATE,!1]];return f.forEach(function(b){var c=b[0],d=b[1],f=b[2],g=e.then(function(a){return n(a.total,d)}),i=e.then(function(a){return n(a.unread,d)});h.show(a,null,c,null,d,f,g,i)}),e.then(function(a){var b=f.map(function(b){var c=b[0],d=b[1],e=n(a.total,d),f=n(a.unread,d);return[c,e,f]});return o(b)})},u=function(){return d.get_string("messagedrawerviewoverview","core_message")};return{show:t,description:u}}); \ No newline at end of file +define(["jquery","core/key_codes","core/pubsub","core/str","core_message/message_drawer_router","core_message/message_drawer_routes","core_message/message_drawer_events","core_message/message_drawer_view_overview_section","core_message/message_repository","core_message/message_drawer_view_conversation_constants"],function(a,b,c,d,e,f,g,h,i,j){var k={CONTACT_REQUEST_COUNT:'[data-region="contact-request-count"]',FAVOURITES:'[data-region="view-overview-favourites"]',GROUP_MESSAGES:'[data-region="view-overview-group-messages"]',MESSAGES:'[data-region="view-overview-messages"]',SEARCH_INPUT:'[data-region="view-overview-search-input"]',SECTION_TOGGLE_BUTTON:"[data-toggle]"},l={PRIVATE:[j.CONVERSATION_TYPES.PRIVATE,j.CONVERSATION_TYPES.SELF],PUBLIC:[j.CONVERSATION_TYPES.PUBLIC],FAVOURITE:null},m=null,n=function(a){return null===m&&(m=i.getAllConversationCounts(a)),m},o=function(a,b,c){var d=0;return b&&b.length&&(d=b.reduce(function(b,c){return b+a.types[c]},d)),c&&(d+=a.favourites),d},p=function(a){var b=a.some(function(a){var b=a[0];return h.isVisible(b)});if(!b){a.sort(function(a,b){var c=a[1],d=a[2],e=b[1],f=b[2];return d>0&&0==f?-1:0==d&&f>0?1:c>0&&0==e?-1:0==c&&e>0?1:0});var c=a[0][0],d=c.find(k.SECTION_TOGGLE_BUTTON);d.click()}},q=function(a){return a.find(k.SEARCH_INPUT)},r=function(a){return a.attr("data-user-id")},s=function(a){return function(){var b=a.find(k.CONTACT_REQUEST_COUNT),c=parseInt(b.text(),10);c=isNaN(c)?0:c-1,c<=0?b.addClass("hidden"):b.text(c)}},t=function(a,d){var h=q(d),i=[b.tab,b.shift,b.ctrl,b.alt];h.on("click",function(){e.go(a,f.VIEW_SEARCH)}),h.on("keydown",function(b){i.indexOf(b.keyCode)<0&&"Meta"!=b.key&&e.go(a,f.VIEW_SEARCH)}),c.subscribe(g.CONTACT_REQUEST_ACCEPTED,s(d)),c.subscribe(g.CONTACT_REQUEST_DECLINED,s(d))},u=function(a,b,c){b.attr("data-init")||(t(a,b),b.attr("data-init",!0)),q(b).val("");var d=r(c),e=n(d),f=[[c.find(k.FAVOURITES),l.FAVOURITE,!0],[c.find(k.GROUP_MESSAGES),l.PUBLIC,!1],[c.find(k.MESSAGES),l.PRIVATE,!1]];return f.forEach(function(b){var c=b[0],d=b[1],f=b[2],g=e.then(function(a){return o(a.total,d,f)}),i=e.then(function(a){return o(a.unread,d,f)});h.show(a,null,c,null,d,f,g,i)}),e.then(function(a){var b=f.map(function(b){var c=b[0],d=b[1],e=b[2],f=o(a.total,d,e),g=o(a.unread,d,e);return[c,f,g]});return p(b)})},v=function(){return d.get_string("messagedrawerviewoverview","core_message")};return{show:u,description:v}}); \ No newline at end of file diff --git a/message/amd/build/message_drawer_view_overview_section.min.js b/message/amd/build/message_drawer_view_overview_section.min.js index 77172647eac..9b2bbce0a33 100644 --- a/message/amd/build/message_drawer_view_overview_section.min.js +++ b/message/amd/build/message_drawer_view_overview_section.min.js @@ -1 +1 @@ -define(["jquery","core/custom_interaction_events","core/notification","core/pubsub","core/str","core/templates","core/user_date","core_message/message_repository","core_message/message_drawer_events","core_message/message_drawer_router","core_message/message_drawer_routes","core_message/message_drawer_lazy_load_list","core_message/message_drawer_view_conversation_constants"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n={TOGGLE:'[data-region="toggle"]',CONVERSATION:"[data-conversation-id]",BLOCKED_ICON_CONTAINER:'[data-region="contact-icon-blocked"]',LAST_MESSAGE:'[data-region="last-message"]',LAST_MESSAGE_DATE:'[data-region="last-message-date"]',MUTED_ICON_CONTAINER:'[data-region="muted-icon-container"]',UNREAD_COUNT:'[data-region="unread-count"]',SECTION_TOTAL_COUNT:'[data-region="section-total-count"]',SECTION_TOTAL_COUNT_CONTAINER:'[data-region="section-total-count-container"]',SECTION_UNREAD_COUNT:'[data-region="section-unread-count"]',PLACEHOLDER_CONTAINER:'[data-region="placeholder-container"]'},o={CONVERSATIONS_LIST:"core_message/message_drawer_conversations_list",CONVERSATIONS_LIST_ITEMS_PLACEHOLDER:"core_message/message_drawer_conversations_list_items_placeholder"},p=50,q={},r=!1,s=!1,t=function(a){return l.getRoot(a).hasClass("show")},u=function(a){a.addClass("expanded")},v=function(a){a.removeClass("expanded")},w=function(a,b){var c=a.find(n.SECTION_TOTAL_COUNT_CONTAINER),d=c.find(n.SECTION_TOTAL_COUNT);d.text(b),c.removeClass("hidden"),e.get_string("totalconversations","core_message",b).done(function(a){c.attr("aria-label",a)});var g=b>20?20:b,h=Array.apply(null,Array(g)).map(function(){return!0});f.render(o.CONVERSATIONS_LIST_ITEMS_PLACEHOLDER,{placeholders:h}).then(function(b){var c=a.find(n.PLACEHOLDER_CONTAINER);c.html(b)})["catch"](function(){})},x=function(a,b){var c=a.find(n.SECTION_UNREAD_COUNT);c.text(b),e.get_string("unreadconversations","core_message",b).done(function(a){c.attr("aria-label",a)}),b>0&&c.removeClass("hidden")},y=function(b,d,e){var g=d.map(function(b){var c=b.messages.length?b.messages[b.messages.length-1]:null,d={id:b.id,imageurl:b.imageurl,name:b.name,subname:b.subname,unreadcount:b.unreadcount,ismuted:b.ismuted,lastmessagedate:c?c.timecreated:null,sentfromcurrentuser:c?c.useridfrom==e:null,lastmessage:c?a(c.text).text()||c.text:null},f=null;return b.type==m.CONVERSATION_TYPES.SELF?f=b.members[0]:b.type==m.CONVERSATION_TYPES.PRIVATE&&(f=b.members.reduce(function(a,b){return a||b.id==e||(a=b),a},null)),null!==f&&(d.userid=f.id,d.showonlinestatus=f.showonlinestatus,d.isonline=f.isonline,d.isblocked=f.isblocked),b.type==m.CONVERSATION_TYPES.PUBLIC&&(d.lastsendername=b.members.reduce(function(a,b){return a||b.id!=c.useridfrom||(a=b.fullname),a},null)),d});return g.forEach(function(a){(new Date).toDateString()==new Date(1e3*a.lastmessagedate).toDateString()&&(a.istoday=!0)}),f.render(o.CONVERSATIONS_LIST,{conversations:g}).then(function(a){return b.append(a),a})["catch"](c.exception)},z=function(a,b,d){return function(e,f){return h.getConversations(f,a,p+1,d,b,!0).then(function(a){var b=a.conversations;return b.length>p?b=b.slice(0,-1):l.setLoadedAll(e,!0),d+=p,b.forEach(function(a){q[a.id]=a}),b})["catch"](c.exception)}},A=function(a){return a.find(n.SECTION_TOTAL_COUNT)},B=function(a){return a.find(n.SECTION_UNREAD_COUNT)},C=function(a){if(r){var b=A(a),c=parseInt(b.text());c+=1,b.text(c)}},D=function(a){if(r){var b=A(a),c=parseInt(b.text());c-=1,b.text(c)}},E=function(a){if(s){var b=B(a),c=parseInt(b.text());c-=1,b.text(c),c<1&&b.addClass("hidden")}},F=function(a,b){return a.find('[data-conversation-id="'+b+'"]')},G=function(a,b){return a.find('[data-user-id="'+b+'"]')},H=function(a){a.find(n.MUTED_ICON_CONTAINER).removeClass("hidden")},I=function(a){a.find(n.MUTED_ICON_CONTAINER).addClass("hidden")},J=function(a){a.find(n.BLOCKED_ICON_CONTAINER).removeClass("hidden")},K=function(a){a.find(n.BLOCKED_ICON_CONTAINER).addClass("hidden")},L=function(b,c){var d,f=c.messages[c.messages.length-1],h="";d=f.fromLoggedInUser?{key:"you",component:"core_message"}:{key:"sender",component:"core_message",param:f.userFrom.fullname};var i=[d,{key:"strftimetime24",component:"core_langconfig"}];return e.get_strings(i).then(function(a){return h=a[0],g.get([{timestamp:f.timeCreated,format:a[1]}])}).then(function(a){return a[0]}).then(function(d){b.find(n.LAST_MESSAGE_DATE).text(d).removeClass("hidden"),f.fromLoggedInUser||c.type!==m.CONVERSATION_TYPES.PRIVATE||(h="");var e=h+" "+a(f.text).text()+"";return b.find(n.LAST_MESSAGE).html(e)})},M=function(b,d){var e=b.find(n.CONVERSATION),g="";if(!e.length){var h=l.getRoot(b);l.showContent(h),l.hideEmptyMessage(h)}var i=d.messages.length,j=i?d.messages[i-1]:null;j&&(g=a(j.text).text()||j.text);var k={id:d.id,name:d.name,subname:d.subname,lastmessagedate:j?j.timeCreated:null,sentfromcurrentuser:j?j.fromLoggedInUser:null,lastmessage:g,imageurl:d.imageUrl};return q[d.id]=d,(new Date).toDateString()==new Date(1e3*k.lastmessagedate).toDateString()&&(k.istoday=!0),f.render(o.CONVERSATIONS_LIST,{conversations:[k]}).then(function(a){var c=l.getContentContainer(b);return c.prepend(a)}).then(function(){return C(b)})["catch"](c.exception)},N=function(a,b){b.remove(),D(a);var c=a.find(n.CONVERSATION);if(!c.length){var d=l.getRoot(a);l.hideContent(d),l.showEmptyMessage(d)}},O=function(a,b){var c=b.find(n.UNREAD_COUNT);c.text("0"),c.addClass("hidden"),E(a)},P=function(c,e,f,g,h){var o=l.getRoot(e),p=e.find(n.TOGGLE);e.css("min-height",p.outerHeight()),e.on("show.bs.collapse",function(){u(e),l.show(o,f,y)}),e.on("hidden.bs.collapse",function(){v(e)}),d.subscribe(i.CONTACT_BLOCKED,function(a){var b=G(e,a);b.length&&J(b)}),d.subscribe(i.CONTACT_UNBLOCKED,function(a){var b=G(e,a);b.length&&K(b)}),d.subscribe(i.CONVERSATION_SET_MUTED,function(a){var b=a.id,c=F(e,b);c.length&&H(c)}),d.subscribe(i.CONVERSATION_UNSET_MUTED,function(a){var b=a.id,c=F(e,b);c.length&&I(c)}),d.subscribe(i.CONVERSATION_NEW_LAST_MESSAGE,function(a){if(!(g&&a.type==m.CONVERSATION_TYPES.SELF&&g!=m.CONVERSATION_TYPES.PRIVATE&&!a.isFavourite||g&&a.type!=m.CONVERSATION_TYPES.SELF&&g!=a.type||h&&!a.isFavourite||!h&&a.isFavourite)){var b=a.id,c=F(e,b);c.length?L(c,a):M(e,a)}}),d.subscribe(i.CONVERSATION_DELETED,function(a){var b=F(e,a);b.length&&N(e,b)}),d.subscribe(i.CONVERSATION_READ,function(a){var b=F(e,a);b.length&&O(e,b)}),d.subscribe(i.CONVERSATION_SET_FAVOURITE,function(a){var b=null;!h||g&&g!=a.type?(g==a.type||g==m.CONVERSATION_TYPES.PRIVATE&&a.type==m.CONVERSATION_TYPES.SELF)&&(b=F(e,a.id),b.length&&N(e,b)):(b=F(e,a.id),b.length||M(e,a))}),d.subscribe(i.CONVERSATION_UNSET_FAVOURITE,function(a){var b=null;h?(b=F(e,a.id),b.length&&N(e,b)):(g==a.type||g==m.CONVERSATION_TYPES.PRIVATE&&a.type==m.CONVERSATION_TYPES.SELF)&&(b=F(e,a.id),b.length||M(e,a))}),b.define(e,[b.events.activate]),e.on(b.events.activate,n.CONVERSATION,function(b,d){var e=a(b.target).closest(n.CONVERSATION),f=e.attr("data-conversation-id"),g=q[f];j.go(c,k.VIEW_CONVERSATION,g),d.originalEvent.preventDefault()})},Q=function(b,c,d,e,f,g,h,i){var j=a(d);if(!j.attr("data-init")){var k=z(f,g,0);if(P(b,j,k,f,g),t(j)){u(j);var m=l.getRoot(j);l.show(m,k,y)}h.then(function(a){w(j,a),r=!0})["catch"](function(){}),i.then(function(a){x(j,a),s=!0})["catch"](function(){}),j.attr("data-init",!0)}};return{show:Q,isVisible:t}}); \ No newline at end of file +define(["jquery","core/custom_interaction_events","core/notification","core/pubsub","core/str","core/templates","core/user_date","core_message/message_repository","core_message/message_drawer_events","core_message/message_drawer_router","core_message/message_drawer_routes","core_message/message_drawer_lazy_load_list","core_message/message_drawer_view_conversation_constants"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n={TOGGLE:'[data-region="toggle"]',CONVERSATION:"[data-conversation-id]",BLOCKED_ICON_CONTAINER:'[data-region="contact-icon-blocked"]',LAST_MESSAGE:'[data-region="last-message"]',LAST_MESSAGE_DATE:'[data-region="last-message-date"]',MUTED_ICON_CONTAINER:'[data-region="muted-icon-container"]',UNREAD_COUNT:'[data-region="unread-count"]',SECTION_TOTAL_COUNT:'[data-region="section-total-count"]',SECTION_TOTAL_COUNT_CONTAINER:'[data-region="section-total-count-container"]',SECTION_UNREAD_COUNT:'[data-region="section-unread-count"]',PLACEHOLDER_CONTAINER:'[data-region="placeholder-container"]'},o={CONVERSATIONS_LIST:"core_message/message_drawer_conversations_list",CONVERSATIONS_LIST_ITEMS_PLACEHOLDER:"core_message/message_drawer_conversations_list_items_placeholder"},p=50,q={},r=!1,s=!1,t=function(a){return l.getRoot(a).hasClass("show")},u=function(a){a.addClass("expanded")},v=function(a){a.removeClass("expanded")},w=function(a,b){var c=a.find(n.SECTION_TOTAL_COUNT_CONTAINER),d=c.find(n.SECTION_TOTAL_COUNT);d.text(b),c.removeClass("hidden"),e.get_string("totalconversations","core_message",b).done(function(a){c.attr("aria-label",a)});var g=b>20?20:b,h=Array.apply(null,Array(g)).map(function(){return!0});f.render(o.CONVERSATIONS_LIST_ITEMS_PLACEHOLDER,{placeholders:h}).then(function(b){var c=a.find(n.PLACEHOLDER_CONTAINER);c.html(b)})["catch"](function(){})},x=function(a,b){var c=a.find(n.SECTION_UNREAD_COUNT);c.text(b),e.get_string("unreadconversations","core_message",b).done(function(a){c.attr("aria-label",a)}),b>0&&c.removeClass("hidden")},y=function(b,d,e){var g=d.map(function(b){var c=b.messages.length?b.messages[b.messages.length-1]:null,d={id:b.id,imageurl:b.imageurl,name:b.name,subname:b.subname,unreadcount:b.unreadcount,ismuted:b.ismuted,lastmessagedate:c?c.timecreated:null,sentfromcurrentuser:c?c.useridfrom==e:null,lastmessage:c?a(c.text).text()||c.text:null},f=null;return b.type==m.CONVERSATION_TYPES.SELF?f=b.members[0]:b.type==m.CONVERSATION_TYPES.PRIVATE&&(f=b.members.reduce(function(a,b){return a||b.id==e||(a=b),a},null)),null!==f&&(d.userid=f.id,d.showonlinestatus=f.showonlinestatus,d.isonline=f.isonline,d.isblocked=f.isblocked),b.type==m.CONVERSATION_TYPES.PUBLIC&&(d.lastsendername=b.members.reduce(function(a,b){return a||b.id!=c.useridfrom||(a=b.fullname),a},null)),d});return g.forEach(function(a){(new Date).toDateString()==new Date(1e3*a.lastmessagedate).toDateString()&&(a.istoday=!0)}),f.render(o.CONVERSATIONS_LIST,{conversations:g}).then(function(a){return b.append(a),a})["catch"](c.exception)},z=function(a,b,d){var e=null,f=!0;if(a&&a.length){var g=a.filter(function(a){return a!=m.CONVERSATION_TYPES.SELF});f=a.length!=g.length,e=g[0]}return function(a,g){return h.getConversations(g,e,p+1,d,b,f).then(function(b){var c=b.conversations;return c.length>p?c=c.slice(0,-1):l.setLoadedAll(a,!0),d+=p,c.forEach(function(a){q[a.id]=a}),c})["catch"](c.exception)}},A=function(a){return a.find(n.SECTION_TOTAL_COUNT)},B=function(a){return a.find(n.SECTION_UNREAD_COUNT)},C=function(a){if(r){var b=A(a),c=parseInt(b.text());c+=1,b.text(c)}},D=function(a){if(r){var b=A(a),c=parseInt(b.text());c-=1,b.text(c)}},E=function(a){if(s){var b=B(a),c=parseInt(b.text());c-=1,b.text(c),c<1&&b.addClass("hidden")}},F=function(a,b){return a.find('[data-conversation-id="'+b+'"]')},G=function(a,b){return a.find('[data-user-id="'+b+'"]')},H=function(a){a.find(n.MUTED_ICON_CONTAINER).removeClass("hidden")},I=function(a){a.find(n.MUTED_ICON_CONTAINER).addClass("hidden")},J=function(a){a.find(n.BLOCKED_ICON_CONTAINER).removeClass("hidden")},K=function(a){a.find(n.BLOCKED_ICON_CONTAINER).addClass("hidden")},L=function(b,c){var d,f=c.messages[c.messages.length-1],h="";d=f.fromLoggedInUser?{key:"you",component:"core_message"}:{key:"sender",component:"core_message",param:f.userFrom.fullname};var i=[d,{key:"strftimetime24",component:"core_langconfig"}];return e.get_strings(i).then(function(a){return h=a[0],g.get([{timestamp:f.timeCreated,format:a[1]}])}).then(function(a){return a[0]}).then(function(d){b.find(n.LAST_MESSAGE_DATE).text(d).removeClass("hidden"),f.fromLoggedInUser||c.type!==m.CONVERSATION_TYPES.PRIVATE||(h="");var e=h+" "+a(f.text).text()+"";return b.find(n.LAST_MESSAGE).html(e)})},M=function(b,d){var e=b.find(n.CONVERSATION),g="";if(!e.length){var h=l.getRoot(b);l.showContent(h),l.hideEmptyMessage(h)}var i=d.messages.length,j=i?d.messages[i-1]:null;j&&(g=a(j.text).text()||j.text);var k={id:d.id,name:d.name,subname:d.subname,lastmessagedate:j?j.timeCreated:null,sentfromcurrentuser:j?j.fromLoggedInUser:null,lastmessage:g,imageurl:d.imageUrl};return q[d.id]=d,(new Date).toDateString()==new Date(1e3*k.lastmessagedate).toDateString()&&(k.istoday=!0),f.render(o.CONVERSATIONS_LIST,{conversations:[k]}).then(function(a){var c=l.getContentContainer(b);return c.prepend(a)}).then(function(){return C(b)})["catch"](c.exception)},N=function(a,b){b.remove(),D(a);var c=a.find(n.CONVERSATION);if(!c.length){var d=l.getRoot(a);l.hideContent(d),l.showEmptyMessage(d)}},O=function(a,b){var c=b.find(n.UNREAD_COUNT);c.text("0"),c.addClass("hidden"),E(a)},P=function(c,e,f,g,h){var m=l.getRoot(e),o=function(a){var b=parseInt(a.type,10);return!(g&&g.indexOf(b)<0||h&&!a.isFavourite||!h&&a.isFavourite)},p=e.find(n.TOGGLE);e.css("min-height",p.outerHeight()),e.on("show.bs.collapse",function(){u(e),l.show(m,f,y)}),e.on("hidden.bs.collapse",function(){v(e)}),d.subscribe(i.CONTACT_BLOCKED,function(a){var b=G(e,a);b.length&&J(b)}),d.subscribe(i.CONTACT_UNBLOCKED,function(a){var b=G(e,a);b.length&&K(b)}),d.subscribe(i.CONVERSATION_SET_MUTED,function(a){var b=a.id,c=F(e,b);c.length&&H(c)}),d.subscribe(i.CONVERSATION_UNSET_MUTED,function(a){var b=a.id,c=F(e,b);c.length&&I(c)}),d.subscribe(i.CONVERSATION_NEW_LAST_MESSAGE,function(a){if(o(a)){var b=a.id,c=F(e,b);c.length?L(c,a):M(e,a)}}),d.subscribe(i.CONVERSATION_DELETED,function(a){var b=F(e,a);b.length&&N(e,b)}),d.subscribe(i.CONVERSATION_READ,function(a){var b=F(e,a);b.length&&O(e,b)}),d.subscribe(i.CONVERSATION_SET_FAVOURITE,function(a){var b=null;o(a)?(b=F(e,a.id),b.length||M(e,a)):(b=F(e,a.id),b.length&&N(e,b))}),d.subscribe(i.CONVERSATION_UNSET_FAVOURITE,function(a){var b=null;o(a)?(b=F(e,a.id),b.length||M(e,a)):(b=F(e,a.id),b.length&&N(e,b))}),b.define(e,[b.events.activate]),e.on(b.events.activate,n.CONVERSATION,function(b,d){var e=a(b.target).closest(n.CONVERSATION),f=e.attr("data-conversation-id"),g=q[f];j.go(c,k.VIEW_CONVERSATION,g),d.originalEvent.preventDefault()})},Q=function(b,c,d,e,f,g,h,i){var j=a(d);if(!j.attr("data-init")){var k=z(f,g,0);if(P(b,j,k,f,g),t(j)){u(j);var m=l.getRoot(j);l.show(m,k,y)}h.then(function(a){w(j,a),r=!0})["catch"](function(){}),i.then(function(a){x(j,a),s=!0})["catch"](function(){}),j.attr("data-init",!0)}};return{show:Q,isVisible:t}}); \ No newline at end of file diff --git a/message/amd/src/message_drawer_view_conversation.js b/message/amd/src/message_drawer_view_conversation.js index 60810511940..1b4050b66bd 100644 --- a/message/amd/src/message_drawer_view_conversation.js +++ b/message/amd/src/message_drawer_view_conversation.js @@ -120,7 +120,7 @@ function( * @return {Number} Userid. */ var getOtherUserId = function() { - if (!viewState || (viewState.type != CONVERSATION_TYPES.PRIVATE && viewState.type != CONVERSATION_TYPES.SELF)) { + if (!viewState || viewState.type == CONVERSATION_TYPES.PUBLIC) { return null; } @@ -149,7 +149,7 @@ function( if (!carry) { var state = stateCache[id].state; - if (state.type == CONVERSATION_TYPES.PRIVATE || state.type == CONVERSATION_TYPES.SELF) { + if (state.type != CONVERSATION_TYPES.PUBLIC) { if (userId in state.members) { // We've found a cached conversation for this user! carry = state.id; @@ -274,6 +274,9 @@ function( */ var loadEmptyPrivateConversation = function(loggedInUserProfile, otherUserId) { var loggedInUserId = loggedInUserProfile.id; + // If the other user id is the same as the logged in user then this is a self + // conversation. + var conversationType = loggedInUserId == otherUserId ? CONVERSATION_TYPES.SELF : CONVERSATION_TYPES.PRIVATE; var newState = StateManager.setLoadingMembers(viewState, true); newState = StateManager.setLoadingMessages(newState, true); return render(newState) @@ -288,57 +291,16 @@ function( } }) .then(function(profile) { - var newState = StateManager.addMembers(viewState, [profile, loggedInUserProfile]); + // If the conversation is a self conversation then the profile loaded is the + // logged in user so only add that to the members array. + var members = conversationType == CONVERSATION_TYPES.SELF ? [profile] : [profile, loggedInUserProfile]; + var newState = StateManager.addMembers(viewState, members); newState = StateManager.setLoadingMembers(newState, false); newState = StateManager.setLoadingMessages(newState, false); newState = StateManager.setName(newState, profile.fullname); - newState = StateManager.setType(newState, CONVERSATION_TYPES.PRIVATE); + newState = StateManager.setType(newState, conversationType); newState = StateManager.setImageUrl(newState, profile.profileimageurl); - newState = StateManager.setTotalMemberCount(newState, 2); - return render(newState) - .then(function() { - return profile; - }); - }) - .catch(function(error) { - var newState = StateManager.setLoadingMembers(viewState, false); - render(newState); - Notification.exception(error); - }); - }; - - /** - * Load up an empty self-conversation for the logged in user. - * Sets all of the conversation details based on the current user. - * - * A conversation isn't created until the user sends the first message. - * - * @param {Object} loggedInUserProfile The logged in user profile. - * @return {Object} Profile returned from repository. - */ - var loadEmptySelfConversation = function(loggedInUserProfile) { - var loggedInUserId = loggedInUserProfile.id; - var newState = StateManager.setLoadingMembers(viewState, true); - newState = StateManager.setLoadingMessages(newState, true); - return render(newState) - .then(function() { - return Repository.getMemberInfo(loggedInUserId, [loggedInUserId], true, true); - }) - .then(function(profiles) { - if (profiles.length) { - return profiles[0]; - } else { - throw new Error('Unable to load other user profile'); - } - }) - .then(function(profile) { - var newState = StateManager.addMembers(viewState, [profile, loggedInUserProfile]); - newState = StateManager.setLoadingMembers(newState, false); - newState = StateManager.setLoadingMessages(newState, false); - newState = StateManager.setName(newState, profile.fullname); - newState = StateManager.setType(newState, CONVERSATION_TYPES.SELF); - newState = StateManager.setImageUrl(newState, profile.profileimageurl); - newState = StateManager.setTotalMemberCount(newState, 1); + newState = StateManager.setTotalMemberCount(newState, members.length); return render(newState) .then(function() { return profile; @@ -373,7 +335,8 @@ function( var name = conversation.name; var imageUrl = conversation.imageurl; - if (conversation.type == CONVERSATION_TYPES.PRIVATE || conversation.type == CONVERSATION_TYPES.SELF) { + + if (conversation.type != CONVERSATION_TYPES.PUBLIC) { name = name || otherUser ? otherUser.fullname : ''; imageUrl = imageUrl || otherUser ? otherUser.profileimageurl : ''; } @@ -1076,8 +1039,7 @@ function( var newConversationId = null; return render(newState) .then(function() { - if (!conversationId && - (viewState.type == CONVERSATION_TYPES.PRIVATE || viewState.type == CONVERSATION_TYPES.SELF)) { + if (!conversationId && (viewState.type != CONVERSATION_TYPES.PUBLIC)) { // If it's a new private conversation then we need to use the old // web service function to create the conversation. var otherUserId = getOtherUserId(); @@ -1539,50 +1501,39 @@ function( var resetNoConversation = function(body, loggedInUserProfile, otherUserId) { // Always reset the state back to the initial state so that the // state manager and patcher can work correctly. - if (loggedInUserProfile.id != otherUserId) { - // This is a private conversation between two users. - return resetState(body, null, loggedInUserProfile) - .then(function() { + return resetState(body, null, loggedInUserProfile) + .then(function() { + if (loggedInUserProfile.id != otherUserId) { + // Private conversation between two different users. return Repository.getConversationBetweenUsers( - loggedInUserProfile.id, - otherUserId, - true, - true, - 0, - 0, - LOAD_MESSAGE_LIMIT, - 0, - NEWEST_FIRST - ) - .then(function(conversation) { - // Looks like we have a conversation after all! Let's use that. - return resetByConversation(body, conversation, loggedInUserProfile); - }) - .catch(function() { - // Can't find a conversation. Oh well. Just load up a blank one. - return loadEmptyPrivateConversation(loggedInUserProfile, otherUserId); - }); - }); - } else { - // This is a self-conversation. - return resetState(body, null, loggedInUserProfile) - .then(function() { + loggedInUserProfile.id, + otherUserId, + true, + true, + 0, + 0, + LOAD_MESSAGE_LIMIT, + 0, + NEWEST_FIRST + ); + } else { + // Self conversation. return Repository.getSelfConversation( - loggedInUserProfile.id, - LOAD_MESSAGE_LIMIT, - 0, - NEWEST_FIRST - ) - .then(function(conversation) { - // Looks like we have a conversation after all! Let's use that. - return resetByConversation(body, conversation, loggedInUserProfile); - }) - .catch(function() { - // Can't find a conversation. Oh well. Just load up a blank one. - return loadEmptySelfConversation(loggedInUserProfile); - }); - }); - } + loggedInUserProfile.id, + LOAD_MESSAGE_LIMIT, + 0, + NEWEST_FIRST + ); + } + }) + .then(function(conversation) { + // Looks like we have a conversation after all! Let's use that. + return resetByConversation(body, conversation, loggedInUserProfile); + }) + .catch(function() { + // Can't find a conversation. Oh well. Just load up a blank one. + return loadEmptyPrivateConversation(loggedInUserProfile, otherUserId); + }); }; /** diff --git a/message/amd/src/message_drawer_view_conversation_constants.js b/message/amd/src/message_drawer_view_conversation_constants.js index 5c1e4f08a57..04b6584a273 100644 --- a/message/amd/src/message_drawer_view_conversation_constants.js +++ b/message/amd/src/message_drawer_view_conversation_constants.js @@ -102,19 +102,10 @@ define([], function() { SELF: 3 }; - // Categories displayed in the message drawer. Some methods (such as filterCountsByType) are expecting their value - // will be the same as the defined in the CONVERSATION_TYPES, except for the favourite. - var CONVERSATION_CATEGORY_TYPES = { - PRIVATE: 1, - PUBLIC: 2, - FAVOURITE: null - }; - return { SELECTORS: SELECTORS, TEMPLATES: TEMPLATES, CONVERSATION_TYPES: CONVERSATION_TYPES, - CONVERSATION_CATEGORY_TYPES: CONVERSATION_CATEGORY_TYPES, NEWEST_MESSAGES_FIRST: true, LOAD_MESSAGE_LIMIT: 100, INITIAL_NEW_MESSAGE_POLL_TIMEOUT: 1000 diff --git a/message/amd/src/message_drawer_view_conversation_patcher.js b/message/amd/src/message_drawer_view_conversation_patcher.js index a0a297ce142..1d59260d508 100644 --- a/message/amd/src/message_drawer_view_conversation_patcher.js +++ b/message/amd/src/message_drawer_view_conversation_patcher.js @@ -322,7 +322,7 @@ function( * @return {Object} patch */ var buildHeaderPatchTypeSelf = function(state, newState) { - var shouldRenderHeader = (state.name === null); + var shouldRenderHeader = (state.name === null && newState.name !== null); if (shouldRenderHeader) { return { @@ -1150,7 +1150,11 @@ function( * @return {bool} */ var buildSelfConversationMessage = function(state, newState) { - return (newState.type == Constants.CONVERSATION_TYPES.SELF); + if (state.type != newState.type) { + return (newState.type == Constants.CONVERSATION_TYPES.SELF); + } + + return null; }; /** diff --git a/message/amd/src/message_drawer_view_overview.js b/message/amd/src/message_drawer_view_overview.js index d126748cb62..320fc38d830 100644 --- a/message/amd/src/message_drawer_view_overview.js +++ b/message/amd/src/message_drawer_view_overview.js @@ -55,6 +55,14 @@ function( SECTION_TOGGLE_BUTTON: '[data-toggle]' }; + // Categories displayed in the message drawer. Some methods (such as filterCountsByType) are expecting their value + // will be the same as the defined in the CONVERSATION_TYPES, except for the favourite. + var OVERVIEW_SECTION_TYPES = { + PRIVATE: [Constants.CONVERSATION_TYPES.PRIVATE, Constants.CONVERSATION_TYPES.SELF], + PUBLIC: [Constants.CONVERSATION_TYPES.PUBLIC], + FAVOURITE: null + }; + var loadAllCountsPromise = null; /** @@ -81,18 +89,23 @@ function( * This is used on the result returned by the loadAllCounts function. * * @param {Object} counts Conversation counts indexed by conversation type. - * @param {String|null} type The conversation type (null for favourites only). + * @param {Array|null} types The conversation types handlded by this section (null for all conversation types). + * @param {bool} includeFavourites If this section includes favourites * @return {Number} */ - var filterCountsByType = function(counts, type) { + var filterCountsByTypes = function(counts, types, includeFavourites) { var total = 0; - if (type === Constants.CONVERSATION_CATEGORY_TYPES.PRIVATE && counts.types[Constants.CONVERSATION_TYPES.SELF]) { - // As private and self conversations are displayed together, we need to add the counts for the self-conversations - // to the private ones, when there is any self-conversation. - total = counts.types[Constants.CONVERSATION_TYPES.PRIVATE] + counts.types[Constants.CONVERSATION_TYPES.SELF]; - } else { - total = type === Constants.CONVERSATION_CATEGORY_TYPES.FAVOURITE ? counts.favourites : counts.types[type]; + + if (types && types.length) { + total = types.reduce(function(carry, type) { + return carry + counts.types[type]; + }, total); } + + if (includeFavourites) { + total += counts.favourites; + } + return total; }; @@ -230,34 +243,35 @@ function( var sections = [ // Favourite conversations section. - [body.find(SELECTORS.FAVOURITES), Constants.CONVERSATION_CATEGORY_TYPES.FAVOURITE, true], + [body.find(SELECTORS.FAVOURITES), OVERVIEW_SECTION_TYPES.FAVOURITE, true], // Group conversations section. - [body.find(SELECTORS.GROUP_MESSAGES), Constants.CONVERSATION_CATEGORY_TYPES.PUBLIC, false], + [body.find(SELECTORS.GROUP_MESSAGES), OVERVIEW_SECTION_TYPES.PUBLIC, false], // Private conversations section. - [body.find(SELECTORS.MESSAGES), Constants.CONVERSATION_CATEGORY_TYPES.PRIVATE, false] + [body.find(SELECTORS.MESSAGES), OVERVIEW_SECTION_TYPES.PRIVATE, false] ]; sections.forEach(function(args) { var sectionRoot = args[0]; - var sectionType = args[1]; + var sectionTypes = args[1]; var includeFavourites = args[2]; var totalCountPromise = allCounts.then(function(result) { - return filterCountsByType(result.total, sectionType); + return filterCountsByTypes(result.total, sectionTypes, includeFavourites); }); var unreadCountPromise = allCounts.then(function(result) { - return filterCountsByType(result.unread, sectionType); + return filterCountsByTypes(result.unread, sectionTypes, includeFavourites); }); - Section.show(namespace, null, sectionRoot, null, sectionType, includeFavourites, + Section.show(namespace, null, sectionRoot, null, sectionTypes, includeFavourites, totalCountPromise, unreadCountPromise); }); return allCounts.then(function(result) { var sectionParams = sections.map(function(section) { var sectionRoot = section[0]; - var sectionType = section[1]; - var totalCount = filterCountsByType(result.total, sectionType); - var unreadCount = filterCountsByType(result.unread, sectionType); + var sectionTypes = section[1]; + var includeFavourites = section[2]; + var totalCount = filterCountsByTypes(result.total, sectionTypes, includeFavourites); + var unreadCount = filterCountsByTypes(result.unread, sectionTypes, includeFavourites); return [sectionRoot, totalCount, unreadCount]; }); diff --git a/message/amd/src/message_drawer_view_overview_section.js b/message/amd/src/message_drawer_view_overview_section.js index a0ab83c79bb..da585eb13ea 100644 --- a/message/amd/src/message_drawer_view_overview_section.js +++ b/message/amd/src/message_drawer_view_overview_section.js @@ -233,12 +233,34 @@ function( /** * Build the callback to load conversations. * - * @param {Number} type The conversation type. + * @param {Array|null} types The conversation types for this section. * @param {bool} includeFavourites Include/exclude favourites. * @param {Number} offset Result offset * @return {Function} */ - var getLoadCallback = function(type, includeFavourites, offset) { + var getLoadCallback = function(types, includeFavourites, offset) { + // Note: This function is a bit messy because we've added the concept of loading + // multiple conversations types (e.g. private + self) at once but haven't properly + // updated the web service to accept an array of types. Instead we've added a new + // parameter for the self type which means we can only ever load self + other type. + // This should be improved to make it more extensible in the future. Adding new params + // for each type isn't very scalable. + var type = null; + // Include self conversations in the results by default. + var includeSelfConversations = true; + if (types && types.length) { + // Just get the conversation types that aren't "self" for now. + var nonSelfConversationTypes = types.filter(function(candidate) { + return candidate != MessageDrawerViewConversationContants.CONVERSATION_TYPES.SELF; + }); + // If we're specifically asking for a list of types that doesn't include the self + // conversations then we don't need to include them. + includeSelfConversations = types.length != nonSelfConversationTypes.length; + // As mentioned above the webservice is currently limited to loading one type at a + // time (plus self conversations) so let's hope we never change this. + type = nonSelfConversationTypes[0]; + } + return function(root, userId) { return MessageRepository.getConversations( userId, @@ -246,7 +268,7 @@ function( LOAD_LIMIT + 1, offset, includeFavourites, - true // Always merge self-conversations with private conversations, to display them together. + includeSelfConversations ) .then(function(response) { var conversations = response.conversations; @@ -531,11 +553,27 @@ function( * @param {String} namespace Unique identifier for the Routes * @param {Object} root The section container element. * @param {Function} loadCallback The callback to load items. - * @param {Number} type The conversation type for this section + * @param {Array|null} type The conversation types for this section * @param {bool} includeFavourites If this section includes favourites */ - var registerEventListeners = function(namespace, root, loadCallback, type, includeFavourites) { + var registerEventListeners = function(namespace, root, loadCallback, types, includeFavourites) { var listRoot = LazyLoadList.getRoot(root); + var conversationBelongsToThisSection = function(conversation) { + // Make sure the type is an int so that the index of check matches correctly. + var conversationType = parseInt(conversation.type, 10); + if ( + // If the conversation type isn't one this section cares about then we can ignore it. + (types && types.indexOf(conversationType) < 0) || + // If this is the favourites section and the conversation isn't a favourite then ignore it. + (includeFavourites && !conversation.isFavourite) || + // If this section doesn't include favourites and the conversation is a favourite then ignore it. + (!includeFavourites && conversation.isFavourite) + ) { + return false; + } + + return true; + }; // Set the minimum height of the section to the height of the toggle. This // smooths out the collapse animation. @@ -583,16 +621,7 @@ function( }); PubSub.subscribe(MessageDrawerEvents.CONVERSATION_NEW_LAST_MESSAGE, function(conversation) { - // Self-conversations could be displayed as private conversations when they are not starred. So we need to exclude - // them from the following check to make sure last messages are updated properly for them. - if ( - (type && conversation.type == MessageDrawerViewConversationContants.CONVERSATION_TYPES.SELF && - type != MessageDrawerViewConversationContants.CONVERSATION_TYPES.PRIVATE && !conversation.isFavourite) || - (type && conversation.type != MessageDrawerViewConversationContants.CONVERSATION_TYPES.SELF && - type != conversation.type) || - (includeFavourites && !conversation.isFavourite) || - (!includeFavourites && conversation.isFavourite) - ) { + if (!conversationBelongsToThisSection(conversation)) { return; } @@ -621,16 +650,12 @@ function( PubSub.subscribe(MessageDrawerEvents.CONVERSATION_SET_FAVOURITE, function(conversation) { var conversationElement = null; - if (includeFavourites && (!type || type == conversation.type)) { + if (conversationBelongsToThisSection(conversation)) { conversationElement = getConversationElement(root, conversation.id); if (!conversationElement.length) { createNewConversation(root, conversation); } - } else if (type == conversation.type || - (type == MessageDrawerViewConversationContants.CONVERSATION_TYPES.PRIVATE && - conversation.type == MessageDrawerViewConversationContants.CONVERSATION_TYPES.SELF)) { - // Self-conversations are displayed in the private conversations section, so they should be removed from - // there when they are favourited. + } else { conversationElement = getConversationElement(root, conversation.id); if (conversationElement.length) { deleteConversation(root, conversationElement); @@ -640,20 +665,16 @@ function( PubSub.subscribe(MessageDrawerEvents.CONVERSATION_UNSET_FAVOURITE, function(conversation) { var conversationElement = null; - if (includeFavourites) { - conversationElement = getConversationElement(root, conversation.id); - if (conversationElement.length) { - deleteConversation(root, conversationElement); - } - } else if (type == conversation.type || - (type == MessageDrawerViewConversationContants.CONVERSATION_TYPES.PRIVATE && - conversation.type == MessageDrawerViewConversationContants.CONVERSATION_TYPES.SELF)) { - // Self-conversations are displayed in the private conversations section, so they should be added - // there when they are unfavourited. + if (conversationBelongsToThisSection(conversation)) { conversationElement = getConversationElement(root, conversation.id); if (!conversationElement.length) { createNewConversation(root, conversation); } + } else { + conversationElement = getConversationElement(root, conversation.id); + if (conversationElement.length) { + deleteConversation(root, conversationElement); + } } }); @@ -675,17 +696,17 @@ function( * @param {Object} header The header container element. * @param {Object} body The section container element. * @param {Object} footer The footer container element. - * @param {Number} type The conversation type for this section + * @param {Array} types The conversation types that show in this section * @param {bool} includeFavourites If this section includes favourites * @param {Object} totalCountPromise Resolves wth the total conversations count * @param {Object} unreadCountPromise Resolves wth the unread conversations count */ - var show = function(namespace, header, body, footer, type, includeFavourites, totalCountPromise, unreadCountPromise) { + var show = function(namespace, header, body, footer, types, includeFavourites, totalCountPromise, unreadCountPromise) { var root = $(body); if (!root.attr('data-init')) { - var loadCallback = getLoadCallback(type, includeFavourites, 0); - registerEventListeners(namespace, root, loadCallback, type, includeFavourites); + var loadCallback = getLoadCallback(types, includeFavourites, 0); + registerEventListeners(namespace, root, loadCallback, types, includeFavourites); if (isVisible(root)) { setExpanded(root);