From 18cb44460b73db0cd6fb6eb8b507860cfdb113ce Mon Sep 17 00:00:00 2001 From: Ryan Wyllie Date: Tue, 9 Jul 2019 13:49:24 +0800 Subject: [PATCH] MDL-64002 message: add error handling for failed messages Add inline error messages when messages fail to send. Also add support for deleting messages that failed to send. --- .../message_drawer_view_conversation.min.js | 2 +- ..._drawer_view_conversation_constants.min.js | 2 +- ...ge_drawer_view_conversation_patcher.min.js | 2 +- ...e_drawer_view_conversation_renderer.min.js | 2 +- ...wer_view_conversation_state_manager.min.js | 2 +- .../src/message_drawer_view_conversation.js | 87 +++++++++++++++---- ...sage_drawer_view_conversation_constants.js | 2 + ...essage_drawer_view_conversation_patcher.js | 6 +- ...ssage_drawer_view_conversation_renderer.js | 25 +++++- ..._drawer_view_conversation_state_manager.js | 17 ++-- ...er_view_conversation_body_message.mustache | 25 +++++- 11 files changed, 138 insertions(+), 34 deletions(-) diff --git a/message/amd/build/message_drawer_view_conversation.min.js b/message/amd/build/message_drawer_view_conversation.min.js index 1d075bd95b4..e1c2c815814 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=!1,v=[],w=!0,x=!1,y=[],z=null,A=[],B=j.NEWEST_MESSAGES_FIRST,C=j.LOAD_MESSAGE_LIMIT,D=j.MILLISECONDS_IN_SEC,E=j.SELECTORS,F=j.CONVERSATION_TYPES,G=function(){if(!q||q.type==F.PUBLIC)return null;var a=q.loggedInUserId;if(q.type==F.SELF)return a;var b=Object.keys(q.members).filter(function(b){return a!=b});return b.length?b[0]:null},H=function(a){return Object.keys(p).reduce(function(b,c){if(!b){var d=p[c].state;d.type!=F.PUBLIC&&a in d.members&&(b=d.id)}return b},null)},I=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:[]}},J=function(){return s},K=function(a){s=a,p[q.id].messagesOffset=a},L=function(){return r},M=function(a){r=a,p[q.id].loadedAllMessages=a},N=function(a){return a.find(E.MESSAGES_CONTAINER)},O=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).map(function(c){var d=a.extend({},b.members[c]);return d.contactrequests=b.members[c].contactrequests.map(function(b){return a.extend({},b)}),d})}},P=function(a,b){var c=a.id,d=c==b?F.SELF:F.PRIVATE,f=m.setLoadingMembers(q,!0);return f=m.setLoadingMessages(f,!0),z(f),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==F.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),z(e),b})["catch"](function(a){var b=m.setLoadingMembers(q,!1);z(b),e.exception(a)})},Q=function(a,b){var c=null;if(a.type==F.PRIVATE){var d=a.members.filter(function(a){return a.id!=b});c=d.length?d[0]:null}else a.type==F.SELF&&(c=a.members[0]);var e=a.name,f=a.imageurl;a.type!=F.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),g=m.setCanDeleteMessagesForAllUsers(g,a.candeletemessagesforallusers)},R=function(a,b,c,d,f){var g=b.id,i=m.setLoadingMembers(q,!0);return i=m.setLoadingMessages(i,!0),z(i),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):M(!0),K(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=Q(a,b.id);return d=m.setLoadingMembers(d,!1),d=m.setLoadingMessages(d,!1),z(d).then(function(){return a})}).then(function(){return V(a)})["catch"](function(a){var b=m.setLoadingMembers(q,!1);b=m.setLoadingMessages(b,!1),z(b),e.exception(a)})},S=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=a.messages.length,h=g>=c,i=Q(a,b.id);i=m.setLoadingMembers(i,!1),i=m.setLoadingMessages(i,!h);var j=z(i);return j.then(function(){return h?{messages:a.messages}:T(a.id,c,g,d,[])}).then(function(){var a=q.messages;return K(a.length),V(q.id),a})["catch"](e.exception)},T=function(a,b,c,d,e,f){return h.getMessages(q.loggedInUserId,a,b?b+1:b,c,d,f).then(function(a){return a.messages.length&&e.length&&(a.messages=a.messages.filter(function(a){return e.indexOf(parseInt(a.id,10))<0})),a}).then(function(a){return b?(a.messages.length>b?a.messages=a.messages.slice(0,-1):M(!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),z(c).then(function(){return a})})["catch"](function(a){var b=m.setLoadingMessages(q,!1);throw z(b),a})},U=function(b,c){return function(){var d=q.messages,e=d.length?d[d.length-1]:null,g=e?e.timeCreated:null;if(g&&!w&&!x){for(var h=[],j=d.length-1;j>=0;j--){var k=d[j];if(k.timeCreated!==g)break;h.push(k.id)}return T(b,0,0,c,h,g).then(function(a){if(a.messages.length){t.restart();var c=O(q);return f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c),V(b)}return a})}return a.Deferred().resolve().promise()}},V=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),z(b)})},W=function(a){ka(a);var b=m.addPendingBlockUsersById(q,[a]);z(b)},X=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},Y=function(a){ka(a);var b=m.addPendingUnblockUsersById(q,[a]);z(b)},Z=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},$=function(a){ka(a);var b=m.addPendingRemoveContactsById(q,[a]);z(b)},_=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},aa=function(a){ka(a);var b=m.addPendingAddContactsById(q,[a]);z(b)},ba=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},ca=function(){var a=q.loggedInUserId,b=q.id;return h.setFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!0);return z(a)}).then(function(){return f.publish(i.CONVERSATION_SET_FAVOURITE,O(q))})},da=function(){var a=q.loggedInUserId,b=q.id;return h.unsetFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!1);return z(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_FAVOURITE,O(q))})},ea=function(){var a=q.loggedInUserId,b=q.id;return h.setMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!0);return z(a)}).then(function(){return f.publish(i.CONVERSATION_SET_MUTED,O(q))})},fa=function(){var a=q.loggedInUserId,b=q.id;return h.unsetMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!1);return z(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_MUTED,O(q))})},ga=function(a){var b=q.selectedMessageIds;ka(a);var c=m.addPendingDeleteMessagesById(q,b);z(c)},ha=function(){var a=q.pendingDeleteMessageIds,b=m.setLoadingConfirmAction(q,!0);z(b);var c=null;return c=b.deleteMessagesForAllUsers?h.deleteMessagesForAllUsers(q.loggedInUserId,a):h.deleteMessages(q.loggedInUserId,a),c.then(function(){var b=m.removeMessagesById(q,a);b=m.removePendingDeleteMessagesById(b,a),b=m.removeSelectedMessagesById(b,a),b=m.setLoadingConfirmAction(b,!1),b=m.setDeleteMessagesForAllUsers(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=O(b);f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,e)}else b.messages.length||f.publish(i.CONVERSATION_DELETED,b.id);return z(b)})},ia=function(a){ka(a);var b=m.setPendingDeleteConversation(q,!0);z(b)},ja=function(){var a=m.setLoadingConfirmAction(q,!0);return z(a),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),z(a)})},ka=function(a){var b=q.pendingDeleteMessageIds,c=m.removePendingAddContactsById(q,[a]);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),c=m.setDeleteMessagesForAllUsers(c,!1),z(c)},la=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 z(e),h.acceptContactRequest(a,b).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),z(b)}).then(function(){f.publish(i.CONTACT_ADDED,q.members[a]),f.publish(i.CONTACT_REQUEST_ACCEPTED,d)})},ma=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 z(e),h.declineContactRequest(a,b).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),z(b)}).then(function(){f.publish(i.CONTACT_REQUEST_DECLINED,d)})},na=function(){if(!x&&y.length){x=!0;var a=y.slice();y=[];var b=q.id,c=null,d=a.map(function(a){return a.text}),e=a.map(function(a){return a.id}),g=null,j=null;if(b||q.type==F.PUBLIC)g=h.sendMessagesToConversation(b,d);else{var k=G();g=h.sendMessagesToUser(k,d).then(function(a){return a.length&&(c=parseInt(a[0].conversationid,10),j=a[0].candeletemessagesforallusers),a})}g.then(function(b){var d=b.map(function(a){return a.id}),e=a.map(function(a,c){return[a,b[c]]}),g=m.updateMessages(q,e);g=m.setMessagesSendSuccessById(g,d);var h=O(g);g.id||(g=m.setId(g,c),h.id=c,Ha(c),f.publish(i.CONVERSATION_CREATED,h),g=m.setCanDeleteMessagesForAllUsers(g,j)),z(g),x=!1,na(),f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,h)})["catch"](function(){var a=m.setMessagesSendFailById(q,e);z(a),x=!1,na()})}},oa=function(a){var b="temp"+Date.now(),c={id:b,useridfrom:q.loggedInUserId,text:a,timecreated:null},d=m.addMessages(q,[c]);z(d),y.push(c),na()},pa=function(a){var b=m.setMessagesSendPendingById(q,[a.id]);z(b),y.push(a),na()},qa=function(a){var b=q;b=q.selectedMessageIds.indexOf(a)>-1?m.removeSelectedMessagesById(q,[a]):m.addSelectedMessagesById(q,[a]),z(b)},ra=function(){ka(G());var a=m.removeSelectedMessagesById(q,q.selectedMessageIds);z(a)},sa=function(b,c,d){if(!u&&v.length){u=!0;var f=v.shift(),g=A.map(function(a){return a(f.patch)});a.when.apply(null,g).then(function(){u=!1,f.deferred.resolve(!0),sa(b,c,d)})["catch"](function(a){u=!1,f.deferred.reject(a),e.exception(a)})}},ta=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 A.push(f),function(e){var f=k.buildPatch(q,e),g=a.Deferred();return Object.keys(f).length?v.push({patch:f,deferred:g}):g.resolve(!0),q=e,e.id&&(p[e.id]={state:e,messagesOffset:J(),loadedAllMessages:L()}),sa(b,c,d),g.promise()}},ua=function(a){return function(b,c){if(!q.loadingConfirmAction){a(G());var d=m.setLoadingConfirmAction(q,!1);z(d)}c.originalEvent.preventDefault()}},va=function(b,c){var d=a(b.target),e=d.closest(E.FOOTER_CONTAINER),f=e.find(E.MESSAGE_TEXT_AREA),g=f.val().trim();""!==g&&(oa(g),f.val(""),f.focus()),c.originalEvent.preventDefault()},wa=function(b,c){var d=window.getSelection(),e=a(b.target);if(""==d.toString()&&!e.is("a")){var f=e.closest(E.MESSAGE),g=f.attr("data-message-id");qa(g),c.originalEvent.preventDefault()}},xa=function(b,c){var d=a(b.target),e=d.closest(E.MESSAGE),f=e.attr("data-message-id"),g=q.messages.filter(function(a){return a.id==f}),h=g.length?g[0]:null;h&&pa(h),c.originalEvent.preventDefault()},ya=function(a,b){ra(),b.originalEvent.preventDefault()},za=function(a){return function(b,c){var d=G(),e=q.members[d];n.go(a,o.VIEW_CONTACT,e),c.originalEvent.preventDefault()}},Aa=function(a,b){ca()["catch"](e.exception),b.originalEvent.preventDefault()},Ba=function(a,b){da()["catch"](e.exception),b.originalEvent.preventDefault()},Ca=function(a,b){ea()["catch"](e.exception),b.originalEvent.preventDefault()},Da=function(a,b){fa()["catch"](e.exception),b.originalEvent.preventDefault()},Ea=function(b){var c=a(b.target).prop("checked"),d=m.setDeleteMessagesForAllUsers(q,c);z(d)},Fa=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()}},Ga=function(a,c,g,h){var j=!1,k=N(g),l=[[E.ACTION_REQUEST_BLOCK,ua(W)],[E.ACTION_REQUEST_UNBLOCK,ua(Y)],[E.ACTION_REQUEST_ADD_CONTACT,ua(aa)],[E.ACTION_REQUEST_REMOVE_CONTACT,ua($)],[E.ACTION_REQUEST_DELETE_CONVERSATION,ua(ia)],[E.ACTION_CANCEL_EDIT_MODE,ya],[E.ACTION_VIEW_CONTACT,za(a)],[E.ACTION_VIEW_GROUP_INFO,Fa(a)],[E.ACTION_CONFIRM_FAVOURITE,Aa],[E.ACTION_CONFIRM_MUTE,Ca],[E.ACTION_CONFIRM_UNFAVOURITE,Ba],[E.ACTION_CONFIRM_UNMUTE,Da]],n=[[E.ACTION_CANCEL_CONFIRM,ua(ka)],[E.ACTION_CONFIRM_BLOCK,ua(X)],[E.ACTION_CONFIRM_UNBLOCK,ua(Z)],[E.ACTION_CONFIRM_ADD_CONTACT,ua(ba)],[E.ACTION_CONFIRM_REMOVE_CONTACT,ua(_)],[E.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES,ua(ha)],[E.ACTION_CONFIRM_DELETE_CONVERSATION,ua(ja)],[E.ACTION_REQUEST_ADD_CONTACT,ua(aa)],[E.ACTION_ACCEPT_CONTACT_REQUEST,ua(la)],[E.ACTION_DECLINE_CONTACT_REQUEST,ua(ma)],[E.MESSAGE,wa],[E.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE,Ea],[E.RETRY_SEND,xa]],p=[[E.SEND_MESSAGE_BUTTON,va],[E.ACTION_REQUEST_DELETE_SELECTED_MESSAGES,ua(ga)],[E.ACTION_REQUEST_ADD_CONTACT,ua(aa)],[E.ACTION_REQUEST_UNBLOCK,ua(Y)]];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(!w&&!j&&!L()&&c){j=!0;var d=m.setLoadingMessages(q,!0);z(d),T(q.id,C,J(),B,[]).then(function(){j=!1,K(J()+C)})["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,E.MESSAGE_TEXT_AREA,function(a,b){var c=h.attr("data-enter-to-send");c&&"false"!=c&&"0"!=c&&va(a,b)}),f.subscribe(i.ROUTE_CHANGED,function(a){t&&a.route!=o.VIEW_CONVERSATION&&t.stop()})},Ha=function(a){t&&t.stop(),t=new c(U(a,B),c.getIncrementalCallback(q.messagePollMin*D,D,q.messagePollMax*D,q.messagePollAfterMax*D)),t.start()},Ia=function(a,b,c){r=!1,s=0,t=null,u=!1,v=[],w=!0,x=!1,y=[];var d=c.id,e=parseInt(a.attr("data-midnight"),10),f=parseInt(a.attr("data-message-poll-min"),10),g=parseInt(a.attr("data-message-poll-max"),10),h=parseInt(a.attr("data-message-poll-after-max"),10),i=m.buildInitialState(e,d,b,f,g,h);q||(q=i),t&&t.stop(),z(i)},Ja=function(a,b,c){Ia(a,null,b);var d=null;return d=b.id!=c?h.getConversationBetweenUsers(b.id,c,!0,!0,0,0,C,0,B):h.getSelfConversation(b.id,C,0,B),d.then(function(c){return La(a,c,b)})["catch"](function(){return P(b,c)})},Ka=function(b,c,d){var e=null;c in p&&(e=p[c]),Ia(b,c,d);var f=a.Deferred().resolve({}).promise();if(e){var g=e.state;g=m.setLoadingMessages(g,!1),g=m.setLoadingMembers(g,!1),K(e.messagesOffset),M(e.loadedAllMessages),z(g)}else f=R(c,d,C,0,B);return f.then(function(){return Ha(c)})},La=function(b,c,d){var e=null;c.id in p&&(e=p[c.id]),Ia(b,c.id,d);var f=a.Deferred().resolve({}).promise();if(e){var g=e.state;g=m.setLoadingMessages(g,!1),g=m.setLoadingMembers(g,!1),K(e.messagesOffset),M(e.loadedAllMessages),z(g)}else f=S(c,d,C,B);return f.then(function(){return Ha(c.id)})},Ma=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=H(i));var m=!q||q.id!=l||i&&i!=G();if(d.attr("data-init")||(z=ta(c,d,f,m),Ga(b,c,d,f),d.attr("data-init",!0)),m){var n=null,o=I(d);return n=k?La(d,k,o,i):l?Ka(d,l,o,i):Ja(d,o,i),n.then(function(){w=!1,c.find(j.SELECTORS.CAN_RECEIVE_FOCUS).first().focus()})["catch"](function(a){w=!1,e.exception(a)})}if(Ha(l),q.type==F.PRIVATE&&h){var p=G();switch(h){case"block":return W(p);case"unblock":return Y(p);case"add-contact":return aa(p);case"remove-contact":return $(p)}}return a.Deferred().resolve().promise()},Na=function(){return g.get_string("messagedrawerviewconversation","core_message",q.name)};return{show:Ma,description:Na}}); \ 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=!1,v=[],w=!0,x=!1,y=[],z=null,A=[],B=j.NEWEST_MESSAGES_FIRST,C=j.LOAD_MESSAGE_LIMIT,D=j.MILLISECONDS_IN_SEC,E=j.SELECTORS,F=j.CONVERSATION_TYPES,G=function(){if(!q||q.type==F.PUBLIC)return null;var a=q.loggedInUserId;if(q.type==F.SELF)return a;var b=Object.keys(q.members).filter(function(b){return a!=b});return b.length?b[0]:null},H=function(a){return Object.keys(p).reduce(function(b,c){if(!b){var d=p[c].state;d.type!=F.PUBLIC&&a in d.members&&(b=d.id)}return b},null)},I=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:[]}},J=function(){return s},K=function(a){s=a,p[q.id].messagesOffset=a},L=function(){return r},M=function(a){r=a,p[q.id].loadedAllMessages=a},N=function(a){return a.find(E.MESSAGES_CONTAINER)},O=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).map(function(c){var d=a.extend({},b.members[c]);return d.contactrequests=b.members[c].contactrequests.map(function(b){return a.extend({},b)}),d})}},P=function(a,b){var c=a.id,d=c==b?F.SELF:F.PRIVATE,f=m.setLoadingMembers(q,!0);return f=m.setLoadingMessages(f,!0),z(f),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==F.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),z(e),b})["catch"](function(a){var b=m.setLoadingMembers(q,!1);z(b),e.exception(a)})},Q=function(a,b){var c=null;if(a.type==F.PRIVATE){var d=a.members.filter(function(a){return a.id!=b});c=d.length?d[0]:null}else a.type==F.SELF&&(c=a.members[0]);var e=a.name,f=a.imageurl;a.type!=F.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),g=m.setCanDeleteMessagesForAllUsers(g,a.candeletemessagesforallusers)},R=function(a,b,c,d,f){var g=b.id,i=m.setLoadingMembers(q,!0);return i=m.setLoadingMessages(i,!0),z(i),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):M(!0),K(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=Q(a,b.id);return d=m.setLoadingMembers(d,!1),d=m.setLoadingMessages(d,!1),z(d).then(function(){return a})}).then(function(){return V(a)})["catch"](function(a){var b=m.setLoadingMembers(q,!1);b=m.setLoadingMessages(b,!1),z(b),e.exception(a)})},S=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=a.messages.length,h=g>=c,i=Q(a,b.id);i=m.setLoadingMembers(i,!1),i=m.setLoadingMessages(i,!h);var j=z(i);return j.then(function(){return h?{messages:a.messages}:T(a.id,c,g,d,[])}).then(function(){var a=q.messages;return K(a.length),V(q.id),a})["catch"](e.exception)},T=function(a,b,c,d,e,f){return h.getMessages(q.loggedInUserId,a,b?b+1:b,c,d,f).then(function(a){return a.messages.length&&e.length&&(a.messages=a.messages.filter(function(a){return e.indexOf(parseInt(a.id,10))<0})),a}).then(function(a){return b?(a.messages.length>b?a.messages=a.messages.slice(0,-1):M(!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),z(c).then(function(){return a})})["catch"](function(a){var b=m.setLoadingMessages(q,!1);throw z(b),a})},U=function(b,c){return function(){var d=q.messages,e=d.length?d[d.length-1]:null,g=e?e.timeCreated:null;if(g&&!w&&!x){for(var h=[],j=d.length-1;j>=0;j--){var k=d[j];if(k.timeCreated!==g)break;h.push(k.id)}return T(b,0,0,c,h,g).then(function(a){if(a.messages.length){t.restart();var c=O(q);return f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,c),V(b)}return a})}return a.Deferred().resolve().promise()}},V=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),z(b)})},W=function(a){ka(a);var b=m.addPendingBlockUsersById(q,[a]);z(b)},X=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},Y=function(a){ka(a);var b=m.addPendingUnblockUsersById(q,[a]);z(b)},Z=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},$=function(a){ka(a);var b=m.addPendingRemoveContactsById(q,[a]);z(b)},_=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},aa=function(a){ka(a);var b=m.addPendingAddContactsById(q,[a]);z(b)},ba=function(a){var b=m.setLoadingConfirmAction(q,!0);return z(b),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),z(c)})},ca=function(){var a=q.loggedInUserId,b=q.id;return h.setFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!0);return z(a)}).then(function(){return f.publish(i.CONVERSATION_SET_FAVOURITE,O(q))})},da=function(){var a=q.loggedInUserId,b=q.id;return h.unsetFavouriteConversations(a,[b]).then(function(){var a=m.setIsFavourite(q,!1);return z(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_FAVOURITE,O(q))})},ea=function(){var a=q.loggedInUserId,b=q.id;return h.setMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!0);return z(a)}).then(function(){return f.publish(i.CONVERSATION_SET_MUTED,O(q))})},fa=function(){var a=q.loggedInUserId,b=q.id;return h.unsetMutedConversations(a,[b]).then(function(){var a=m.setIsMuted(q,!1);return z(a)}).then(function(){return f.publish(i.CONVERSATION_UNSET_MUTED,O(q))})},ga=function(a){var b=q.selectedMessageIds;ka(a);var c=m.addPendingDeleteMessagesById(q,b);z(c)},ha=function(){var b=q.pendingDeleteMessageIds,c=q.messages.filter(function(a){return b.indexOf(a.id)>=0&&("sent"==a.sendState||null===a.sendState)}),d=m.setLoadingConfirmAction(q,!0);z(d);var g=a.Deferred().resolve().promise();if(c.length){var j=c.map(function(a){return a.id});g=d.deleteMessagesForAllUsers?h.deleteMessagesForAllUsers(q.loggedInUserId,j):h.deleteMessages(q.loggedInUserId,j)}return g.then(function(){var a=m.removeMessagesById(q,b);a=m.removePendingDeleteMessagesById(a,b),a=m.removeSelectedMessagesById(a,b),a=m.setLoadingConfirmAction(a,!1),a=m.setDeleteMessagesForAllUsers(a,!1);var c=q.messages[q.messages.length-1],d=a.messages.length?a.messages[a.messages.length-1]:null;if(d&&d.id!=c.id){var e=O(a);f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,e)}else a.messages.length||f.publish(i.CONVERSATION_DELETED,a.id);return z(a)})["catch"](e.exception)},ia=function(a){ka(a);var b=m.setPendingDeleteConversation(q,!0);z(b)},ja=function(){var a=m.setLoadingConfirmAction(q,!0);return z(a),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),z(a)})},ka=function(a){var b=q.pendingDeleteMessageIds,c=m.removePendingAddContactsById(q,[a]);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),c=m.setDeleteMessagesForAllUsers(c,!1),z(c)},la=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 z(e),h.acceptContactRequest(a,b).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),z(b)}).then(function(){f.publish(i.CONTACT_ADDED,q.members[a]),f.publish(i.CONTACT_REQUEST_ACCEPTED,d)})},ma=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 z(e),h.declineContactRequest(a,b).then(function(a){var b=m.removeContactRequests(q,[d]);return b=m.addMembers(q,[a]),b=m.setLoadingConfirmAction(b,!1),z(b)}).then(function(){f.publish(i.CONTACT_REQUEST_DECLINED,d)})},na=function(){if(!x&&y.length){x=!0;var b=y.slice();y=[];var c=q.id,d=null,e=b.map(function(a){return a.text}),j=b.map(function(a){return a.id}),k=null,l=null;if(c||q.type==F.PUBLIC)k=h.sendMessagesToConversation(c,e);else{var n=G();k=h.sendMessagesToUser(n,e).then(function(a){return a.length&&(d=parseInt(a[0].conversationid,10),l=a[0].candeletemessagesforallusers),a})}k.then(function(a){var c=a.map(function(a){return a.id}),e=[],g=[],h=[];b.forEach(function(b,c){var d=a[c];e.push([b,d]),q.selectedMessageIds.indexOf(b.id)>=0&&(g.push(b.id),h.push(d.id))});var j=m.updateMessages(q,e);j=m.setMessagesSendSuccessById(j,c),g.length&&(j=m.removeSelectedMessagesById(j,g)),h.length&&(j=m.addSelectedMessagesById(j,h));var k=O(j);j.id||(j=m.setId(j,d),k.id=d,Ha(d),f.publish(i.CONVERSATION_CREATED,k),j=m.setCanDeleteMessagesForAllUsers(j,l)),z(j),x=!1,na(),f.publish(i.CONVERSATION_NEW_LAST_MESSAGE,k)})["catch"](function(b){if(b.message)var c=a.Deferred().resolve(b.message).promise();else var c=g.get_string("unknownerror","core");var d=function(a){var b=m.setMessagesSendFailById(q,j,a);z(b),x=!1,na()};c.then(d)["catch"](function(a){var b=a.message||"Something went wrong!";d(b)})})}},oa=function(a){var b="temp"+Date.now(),c={id:b,useridfrom:q.loggedInUserId,text:a,timecreated:null},d=m.addMessages(q,[c]);z(d),y.push(c),na()},pa=function(a){var b=m.setMessagesSendPendingById(q,[a.id]);z(b),y.push(a),na()},qa=function(a){var b=q;b=q.selectedMessageIds.indexOf(a)>-1?m.removeSelectedMessagesById(q,[a]):m.addSelectedMessagesById(q,[a]),z(b)},ra=function(){ka(G());var a=m.removeSelectedMessagesById(q,q.selectedMessageIds);z(a)},sa=function(b,c,d){if(!u&&v.length){u=!0;var f=v.shift(),g=A.map(function(a){return a(f.patch)});a.when.apply(null,g).then(function(){u=!1,f.deferred.resolve(!0),sa(b,c,d)})["catch"](function(a){u=!1,f.deferred.reject(a),e.exception(a)})}},ta=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 A.push(f),function(e){var f=k.buildPatch(q,e),g=a.Deferred();return Object.keys(f).length?v.push({patch:f,deferred:g}):g.resolve(!0),q=e,e.id&&(p[e.id]={state:e,messagesOffset:J(),loadedAllMessages:L()}),sa(b,c,d),g.promise()}},ua=function(a){return function(b,c){if(!q.loadingConfirmAction){a(G());var d=m.setLoadingConfirmAction(q,!1);z(d)}c.originalEvent.preventDefault()}},va=function(b,c){var d=a(b.target),e=d.closest(E.FOOTER_CONTAINER),f=e.find(E.MESSAGE_TEXT_AREA),g=f.val().trim();""!==g&&(oa(g),f.val(""),f.focus()),c.originalEvent.preventDefault()},wa=function(b,c){var d=window.getSelection(),e=a(b.target);if(""==d.toString()&&!e.is("a")){var f=e.closest(E.MESSAGE),g=f.attr("data-message-id");qa(g),c.originalEvent.preventDefault()}},xa=function(b,c){var d=a(b.target),e=d.closest(E.MESSAGE),f=e.attr("data-message-id"),g=q.messages.filter(function(a){return a.id==f}),h=g.length?g[0]:null;h&&pa(h),c.originalEvent.preventDefault(),c.originalEvent.stopPropagation(),b.stopPropagation()},ya=function(a,b){ra(),b.originalEvent.preventDefault()},za=function(a){return function(b,c){var d=G(),e=q.members[d];n.go(a,o.VIEW_CONTACT,e),c.originalEvent.preventDefault()}},Aa=function(a,b){ca()["catch"](e.exception),b.originalEvent.preventDefault()},Ba=function(a,b){da()["catch"](e.exception),b.originalEvent.preventDefault()},Ca=function(a,b){ea()["catch"](e.exception),b.originalEvent.preventDefault()},Da=function(a,b){fa()["catch"](e.exception),b.originalEvent.preventDefault()},Ea=function(b){var c=a(b.target).prop("checked"),d=m.setDeleteMessagesForAllUsers(q,c);z(d)},Fa=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()}},Ga=function(a,c,g,h){var j=!1,k=N(g),l=[[E.ACTION_REQUEST_BLOCK,ua(W)],[E.ACTION_REQUEST_UNBLOCK,ua(Y)],[E.ACTION_REQUEST_ADD_CONTACT,ua(aa)],[E.ACTION_REQUEST_REMOVE_CONTACT,ua($)],[E.ACTION_REQUEST_DELETE_CONVERSATION,ua(ia)],[E.ACTION_CANCEL_EDIT_MODE,ya],[E.ACTION_VIEW_CONTACT,za(a)],[E.ACTION_VIEW_GROUP_INFO,Fa(a)],[E.ACTION_CONFIRM_FAVOURITE,Aa],[E.ACTION_CONFIRM_MUTE,Ca],[E.ACTION_CONFIRM_UNFAVOURITE,Ba],[E.ACTION_CONFIRM_UNMUTE,Da]],n=[[E.ACTION_CANCEL_CONFIRM,ua(ka)],[E.ACTION_CONFIRM_BLOCK,ua(X)],[E.ACTION_CONFIRM_UNBLOCK,ua(Z)],[E.ACTION_CONFIRM_ADD_CONTACT,ua(ba)],[E.ACTION_CONFIRM_REMOVE_CONTACT,ua(_)],[E.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES,ua(ha)],[E.ACTION_CONFIRM_DELETE_CONVERSATION,ua(ja)],[E.ACTION_REQUEST_ADD_CONTACT,ua(aa)],[E.ACTION_ACCEPT_CONTACT_REQUEST,ua(la)],[E.ACTION_DECLINE_CONTACT_REQUEST,ua(ma)],[E.MESSAGE,wa],[E.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE,Ea],[E.RETRY_SEND,xa]],p=[[E.SEND_MESSAGE_BUTTON,va],[E.ACTION_REQUEST_DELETE_SELECTED_MESSAGES,ua(ga)],[E.ACTION_REQUEST_ADD_CONTACT,ua(aa)],[E.ACTION_REQUEST_UNBLOCK,ua(Y)]];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(!w&&!j&&!L()&&c){j=!0;var d=m.setLoadingMessages(q,!0);z(d),T(q.id,C,J(),B,[]).then(function(){j=!1,K(J()+C)})["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,E.MESSAGE_TEXT_AREA,function(a,b){var c=h.attr("data-enter-to-send");c&&"false"!=c&&"0"!=c&&va(a,b)}),f.subscribe(i.ROUTE_CHANGED,function(a){t&&a.route!=o.VIEW_CONVERSATION&&t.stop()})},Ha=function(a){t&&t.stop(),t=new c(U(a,B),c.getIncrementalCallback(q.messagePollMin*D,D,q.messagePollMax*D,q.messagePollAfterMax*D)),t.start()},Ia=function(a,b,c){r=!1,s=0,t=null,u=!1,v=[],w=!0,x=!1,y=[];var d=c.id,e=parseInt(a.attr("data-midnight"),10),f=parseInt(a.attr("data-message-poll-min"),10),g=parseInt(a.attr("data-message-poll-max"),10),h=parseInt(a.attr("data-message-poll-after-max"),10),i=m.buildInitialState(e,d,b,f,g,h);q||(q=i),t&&t.stop(),z(i)},Ja=function(a,b,c){Ia(a,null,b);var d=null;return d=b.id!=c?h.getConversationBetweenUsers(b.id,c,!0,!0,0,0,C,0,B):h.getSelfConversation(b.id,C,0,B),d.then(function(c){return La(a,c,b)})["catch"](function(){return P(b,c)})},Ka=function(b,c,d){var e=null;c in p&&(e=p[c]),Ia(b,c,d);var f=a.Deferred().resolve({}).promise();if(e){var g=e.state;g=m.setLoadingMessages(g,!1),g=m.setLoadingMembers(g,!1),K(e.messagesOffset),M(e.loadedAllMessages),z(g)}else f=R(c,d,C,0,B);return f.then(function(){return Ha(c)})},La=function(b,c,d){var e=null;c.id in p&&(e=p[c.id]),Ia(b,c.id,d);var f=a.Deferred().resolve({}).promise();if(e){var g=e.state;g=m.setLoadingMessages(g,!1),g=m.setLoadingMembers(g,!1),K(e.messagesOffset),M(e.loadedAllMessages),z(g)}else f=S(c,d,C,B);return f.then(function(){return Ha(c.id)})},Ma=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=H(i));var m=!q||q.id!=l||i&&i!=G();if(d.attr("data-init")||(z=ta(c,d,f,m),Ga(b,c,d,f),d.attr("data-init",!0)),m){var n=null,o=I(d);return n=k?La(d,k,o,i):l?Ka(d,l,o,i):Ja(d,o,i),n.then(function(){w=!1,c.find(j.SELECTORS.CAN_RECEIVE_FOCUS).first().focus()})["catch"](function(a){w=!1,e.exception(a)})}if(Ha(l),q.type==F.PRIVATE&&h){var p=G();switch(h){case"block":return W(p);case"unblock":return Y(p);case"add-contact":return aa(p);case"remove-contact":return $(p)}}return a.Deferred().resolve().promise()},Na=function(){return g.get_string("messagedrawerviewconversation","core_message",q.name)};return{show:Ma,description:Na}}); \ 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 48fcaf08589..9a4f930067f 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"]',DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE:'[data-region="delete-messages-for-all-users-toggle"]',DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE_CONTAINER:'[data-region="delete-messages-for-all-users-toggle-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"]',RETRY_SEND:'[data-region="retry-send"]',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"]',TEXT_CONTAINER:'[data-region="text-container"]',TIME_CREATED:'[data-region="time-created"]',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,MILLISECONDS_IN_SEC: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"]',DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE:'[data-region="delete-messages-for-all-users-toggle"]',DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE_CONTAINER:'[data-region="delete-messages-for-all-users-toggle-container"]',ERROR_MESSAGE_CONTAINER:'[data-region="error-message-container"]',ERROR_MESSAGE:'[data-region="error-message"]',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"]',RETRY_SEND:'[data-region="retry-send"]',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"]',TEXT_CONTAINER:'[data-region="text-container"]',TIME_CREATED:'[data-region="time-created"]',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,MILLISECONDS_IN_SEC: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 2b0a47c5368..2925ae776e3 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=d.timeCreated?d.timeCreated:c,f=b.getUserMidnightForTimestamp(e,c);return a.hasOwnProperty(f)?a[f].push(d):a[f]=[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},E=function(a,b){return!(a.loadingConfirmAction||!b.loadingConfirmAction)||!(a.loadingConfirmAction&&!b.loadingConfirmAction)&&null},F=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)},G=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}},H=function(a){return Object.keys(a.members).reduce(function(b,c){return c==a.loggedInUserId||b||(b=a.members[c]),b},null)},I=function(a,b){if(b.canmessage)return!1;var c=b.contactrequests.filter(function(b){return b.userid==a||b.requesteduserid}),d=c.length>0;return b.requirescontact&&!b.iscontact&&!d},J=function(a,b){var c=H(a),d=H(b),e=a.messages.length>0,f=b.messages.length>0,g=b.loggedInUserId,h=c&&I(g,c),i=d&&I(g,d),j=v(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},K=function(a,b){var c=H(a),d=H(b);return c||d?c&&!d?!c.isblocked&&null:!c&&d?!!d.isblocked||null:!(c.isblocked||!d.isblocked)||!(c.isblocked&&!d.isblocked)&&null:null},L=function(a,b){var d=H(a),e=H(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},M=function(a,b){var c=r(a,b),d=F(a,b),e=J(a,b),f=K(a,b),g=L(a,b),h=null!==e?e.show&&e.hasMessages:null,i=H(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&&I(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},R=function(b,d){var e={all:{reset:O,conversation:l,scrollToMessage:p,loadingMembers:q,loadingFirstMessages:r,loadingMessages:s,confirmDeleteSelectedMessages:x,inEditMode:F,selectedMessages:G,isFavourite:B,isMuted:C}};e[c.CONVERSATION_TYPES.PRIVATE]={header:m,footer:M,confirmBlockUser:t,confirmUnblockUser:u,confirmAddContact:v,confirmRemoveContact:w,confirmContactRequest:z,confirmDeleteConversation:y,isBlocked:A,isContact:D,loadingConfirmAction:E,requireAddContact:J,contactRequestSent:Q},e[c.CONVERSATION_TYPES.PUBLIC]={header:o,footer:N},e[c.CONVERSATION_TYPES.SELF]={header:n,footer:N,confirmDeleteConversation:y,selfConversationMessage:P};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:R}}); \ 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=d.timeCreated?d.timeCreated:c,f=b.getUserMidnightForTimestamp(e,c);return a.hasOwnProperty(f)?a[f].push(d):a[f]=[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},E=function(a,b){return!(a.loadingConfirmAction||!b.loadingConfirmAction)||!(a.loadingConfirmAction&&!b.loadingConfirmAction)&&null},F=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)},G=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}},H=function(a){return Object.keys(a.members).reduce(function(b,c){return c==a.loggedInUserId||b||(b=a.members[c]),b},null)},I=function(a,b){if(b.canmessage)return!1;var c=b.contactrequests.filter(function(b){return b.userid==a||b.requesteduserid}),d=c.length>0;return b.requirescontact&&!b.iscontact&&!d},J=function(a,b){var c=H(a),d=H(b),e=a.messages.length>0,f=b.messages.length>0,g=b.loggedInUserId,h=c&&I(g,c),i=d&&I(g,d),j=v(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},K=function(a,b){var c=H(a),d=H(b);return c||d?c&&!d?!c.isblocked&&null:!c&&d?!!d.isblocked||null:!(c.isblocked||!d.isblocked)||!(c.isblocked&&!d.isblocked)&&null:null},L=function(a,b){var d=H(a),e=H(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},M=function(a,b){var c=r(a,b),d=F(a,b),e=J(a,b),f=K(a,b),g=L(a,b),h=null!==e?e.show&&e.hasMessages:null,i=H(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&&I(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},R=function(b,d){var e={all:{reset:O,conversation:l,scrollToMessage:p,loadingMembers:q,loadingFirstMessages:r,loadingMessages:s,confirmDeleteSelectedMessages:x,inEditMode:F,selectedMessages:G,isFavourite:B,isMuted:C}};e[c.CONVERSATION_TYPES.PRIVATE]={header:m,footer:M,confirmBlockUser:t,confirmUnblockUser:u,confirmAddContact:v,confirmRemoveContact:w,confirmContactRequest:z,confirmDeleteConversation:y,isBlocked:A,isContact:D,loadingConfirmAction:E,requireAddContact:J,contactRequestSent:Q},e[c.CONVERSATION_TYPES.PUBLIC]={header:o,footer:N},e[c.CONVERSATION_TYPES.SELF]={header:n,footer:N,confirmDeleteConversation:y,selfConversationMessage:P};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:R}}); \ No newline at end of file diff --git a/message/amd/build/message_drawer_view_conversation_renderer.min.js b/message/amd/build/message_drawer_view_conversation_renderer.min.js index bf94fb11702..b931ae3b18b 100644 --- a/message/amd/build/message_drawer_view_conversation_renderer.min.js +++ b/message/amd/build/message_drawer_view_conversation_renderer.min.js @@ -1 +1 @@ -define(["jquery","core/notification","core/str","core/templates","core/user_date","core_message/message_drawer_view_conversation_constants"],function(a,b,c,d,e,f){var g=f.SELECTORS,h=f.TEMPLATES,i=f.CONVERSATION_TYPES,j=function(a){return a.find(g.CONTENT_MESSAGES_CONTAINER)},k=function(a){j(a).removeClass("hidden")},l=function(a){j(a).addClass("hidden")},m=function(a){return a.find(g.SELF_CONVERSATION_MESSAGE_CONTAINER)},n=function(a){return m(a).addClass("hidden")},o=function(a){return a.find(g.CONTACT_REQUEST_SENT_MESSAGE_CONTAINER)},p=function(a){return o(a).addClass("hidden")},q=function(a){return a.find(g.CONTENT_MESSAGES_FOOTER_CONTAINER)},r=function(a){q(a).removeClass("hidden")},s=function(a){q(a).addClass("hidden")},t=function(a){return a.find(g.CONTENT_MESSAGES_FOOTER_EDIT_MODE_CONTAINER)},u=function(a){t(a).removeClass("hidden")},v=function(a){t(a).addClass("hidden")},w=function(a){return a.find(g.PLACEHOLDER_CONTAINER)},x=function(a){w(a).removeClass("hidden")},y=function(a){w(a).addClass("hidden")},z=function(a){return a.find(g.CONTENT_MESSAGES_FOOTER_REQUIRE_CONTACT_CONTAINER)},A=function(a){z(a).removeClass("hidden")},B=function(a){z(a).addClass("hidden")},C=function(a){return a.find(g.CONTENT_MESSAGES_FOOTER_REQUIRE_UNBLOCK_CONTAINER)},D=function(a){C(a).removeClass("hidden")},E=function(a){C(a).addClass("hidden")},F=function(a){return a.find(g.CONTENT_MESSAGES_FOOTER_UNABLE_TO_MESSAGE_CONTAINER)},G=function(a){F(a).removeClass("hidden")},H=function(a){F(a).addClass("hidden")},I=function(a){P(a),S(a),V(a)},J=function(a){s(a),v(a),y(a),B(a),E(a),H(a)},K=function(a){return a.find(g.CONTENT_PLACEHOLDER_CONTAINER)},L=function(a){K(a).removeClass("hidden")},M=function(a){K(a).addClass("hidden")},N=function(a){return a.find(g.HEADER)},O=function(a){N(a).removeClass("hidden")},P=function(a){N(a).addClass("hidden")},Q=function(a){return a.find(g.HEADER_EDIT_MODE)},R=function(a){Q(a).removeClass("hidden")},S=function(a){Q(a).addClass("hidden")},T=function(a){return a.find(g.HEADER_PLACEHOLDER_CONTAINER)},U=function(a){T(a).removeClass("hidden")},V=function(a){T(a).addClass("hidden")},W=function(a,b){var c=j(a);return c.find('[data-message-id="'+b+'"]')},X=function(a,b){var c=j(a);return c.find('[data-day-id="'+b+'"]')},Y=function(a){return a.find(g.MORE_MESSAGES_LOADING_ICON_CONTAINER)},Z=function(a){Y(a).removeClass("hidden")},$=function(a){Y(a).addClass("hidden")},_=function(a){return a.find(g.CONFIRM_DIALOGUE_CONTAINER)},aa=function(a){var b=_(a),c=b.siblings(":not(.hidden)");c.attr("aria-hidden",!0),c.attr("tabindex",-1),c.attr("data-confirm-dialogue-hidden",!0),b.removeClass("hidden")},ba=function(a){var b=_(a),c=b.siblings('[data-confirm-dialogue-hidden="true"]');c.removeAttr("aria-hidden"),c.removeAttr("tabindex"),c.removeAttr("data-confirm-dialogue-hidden"),b.addClass("hidden")},ca=function(a,b){Q(a).find(g.MESSAGES_SELECTED_COUNT).text(b)},da=function(a,b){return a.map(function(a){return{id:a.id,isread:a.isRead,fromloggedinuser:a.fromLoggedInUser,userfrom:a.userFrom,text:a.text,formattedtime:a.timeCreated?b[a.timeCreated]:null}})},ea=function(b,c,e,f,g){var i=j(c),k=f.map(function(a){return d.render(h.DAY,{timestamp:a.value.timestamp,messages:da(a.value.messages,g)})});return a.when.apply(a,k).then(function(){f.forEach(function(b,d){k[d].then(function(d){if(b.before){var e=X(c,b.before.timestamp);return a(d).insertBefore(e)}return i.append(d)})["catch"](function(){})})})},fa=function(b,c,e,f,i){var j=f.map(function(a){return a.value}),k=da(j,i);return d.render(h.MESSAGES,{messages:k}).then(function(b){var d=a(b);f.forEach(function(a){var b=d.find('[data-message-id="'+a.value.id+'"]');if(a.before){var e=W(c,a.before.id);return b.insertBefore(e)}var f=X(c,a.day.timestamp),h=f.find(g.DAY_MESSAGES_CONTAINER);return h.append(b)})})},ga=function(a,b,c,d,e){d.forEach(function(a){var c=a.before,d=a.after,f=W(b,c.id);if(c.id!=d.id&&f.attr("data-message-id",d.id),c.timeCreated!=d.timeCreated){var h=e[d.timeCreated];f.find(g.LOADING_ICON_CONTAINER).addClass("hidden"),f.find(g.TIME_CREATED).text(h).removeClass("hidden")}if(c.state!=d.state){var i=f.find(g.LOADING_ICON_CONTAINER),j=f.find(g.TIME_CREATED),k=f.find(g.RETRY_SEND);switch(i.addClass("hidden"),j.addClass("hidden"),k.addClass("hidden"),f.removeClass("border border-danger"),d.state){case"pending":i.removeClass("hidden");break;case"error":k.removeClass("hidden"),f.addClass("border border-danger");break;case"sent":j.removeClass("hidden")}}c.text!=d.text&&f.find(g.TEXT_CONTAINER).html(d.text)})},ha=function(a,b){b.forEach(function(b){X(a,b.timestamp).remove()})},ia=function(a,b){b.forEach(function(b){W(a,b.id).remove()})},ja=function(b,d,f,g){var h=[],i=g.days.add.length>0,j=g.messages.add.length>0,k=g.messages.update.length>0,l=[],m=a.Deferred().resolve({}).promise();return i&&(l=l.concat(g.days.add.reduce(function(a,b){return a.concat(b.value.messages.reduce(function(a,b){return b.timeCreated&&a.push(b.timeCreated),a},[]))},[]))),j&&(l=l.concat(g.messages.add.reduce(function(a,b){return b.value.timeCreated&&a.push(b.value.timeCreated),a},[]))),k&&(l=l.concat(g.messages.update.reduce(function(a,b){return b.before.timeCreated!=b.after.timeCreated&&a.push(b.after.timeCreated),a},[]))),l.length&&(m=c.get_string("strftimetime24","core_langconfig").then(function(a){var b=l.map(function(b){return{timestamp:b,format:a}});return e.get(b)}).then(function(a){return l.reduce(function(b,c,d){return b[c]=a[d],b},{})})),i&&h.push(m.then(function(a){return ea(b,d,f,g.days.add,a)})),j&&h.push(m.then(function(a){return fa(b,d,f,g.messages.add,a)})),k&&h.push(m.then(function(a){return ga(b,d,f,g.messages.update,a)})),g.days.remove.length>0&&ha(d,g.days.remove),g.messages.remove.length>0&&ia(d,g.messages.remove),a.when.apply(a,h)},ka=function(a,b,c,e){var f=N(a),g=h.HEADER_PUBLIC;return e.context.showrouteback="false"===a.attr("data-from-panel"),e.type==i.PRIVATE?g=e.showControls?h.HEADER_PRIVATE:h.HEADER_PRIVATE_NO_CONTROLS:e.type==i.SELF&&(g=h.HEADER_SELF),d.render(g,e.context).then(function(a,b){d.replaceNodeContents(f,a,b)})},la=function(a,b,d,e){switch(J(d),e.type){case"placeholder":return x(d);case"add-contact":return c.get_strings([{key:"requirecontacttomessage",component:"core_message",param:e.user.fullname},{key:"isnotinyourcontacts",component:"core_message",param:e.user.fullname}]).then(function(a){var b=a[1],c=a[0],e=z(d);return e.find(g.TITLE).text(b),e.find(g.TEXT).text(c),A(d),a});case"edit-mode":return u(d);case"content":return r(d);case"unblock":return D(d);case"unable-to-message":return G(d)}return!0},ma=function(a,b,c,d){var e=j(b),f=W(b,d),g=f.position();if(g){var h=e.scrollTop()+g.top;e.scrollTop(h)}},na=function(a,b,c,d){d?(P(a),U(a)):(O(a),V(a))},oa=function(a,b,c,d){d?(l(b),L(b)):(k(b),M(b))},pa=function(a,b,c,d){d?Z(b):$(b)},qa=function(a,b,c,d,e,f,h,i){var j=_(b),k=d.map(function(a){return j.find(a)}),l=j.find(g.CONFIRM_DIALOGUE_CANCEL_BUTTON),m=j.find(g.CONFIRM_DIALOGUE_TEXT),n=j.find(g.CONFIRM_DIALOGUE_HEADER);j.find("button").addClass("hidden"),h?l.removeClass("hidden"):l.addClass("hidden"),f?(n.removeClass("hidden"),n.text(f)):(n.addClass("hidden"),n.text("")),k.forEach(function(a){a.removeClass("hidden")}),m.text(e),aa(c),aa(b),i||aa(a),j.find(g.CAN_RECEIVE_FOCUS).filter(":visible").first().focus()},ra=function(a,b,c){var d=_(b),e=d.find(g.CONFIRM_DIALOGUE_CANCEL_BUTTON),f=d.find(g.CONFIRM_DIALOGUE_TEXT),h=d.find(g.CONFIRM_DIALOGUE_HEADER);return Aa(b),ba(b),ba(c),ba(a),d.find("button").addClass("hidden"),e.removeClass("hidden"),f.text(""),h.addClass("hidden"),h.text(""),a.find(g.CAN_RECEIVE_FOCUS).first().focus(),!0},sa=function(a,b,d,e){return e?c.get_string("blockuserconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_BLOCK],c,"",!0,!1)}):ra(a,b,d)},ta=function(a,b,d,e){return e?c.get_string("unblockuserconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_UNBLOCK],c,"",!0,!1)}):ra(a,b,d)},ua=function(a,b,d,e){return e?c.get_string("addcontactconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_ADD_CONTACT],c,"",!0,!1)}):ra(a,b,d)},va=function(a,b,d,e){return e?c.get_string("removecontactconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_REMOVE_CONTACT],c,"",!0,!1)}):ra(a,b,d)},wa=function(a,b,d,e){var f=null;return e.type==i.SELF?f="deleteselectedmessagesconfirmselfconversation":e.canDeleteMessagesForAllUsers?(za(b),f="deleteforeveryoneselectedmessagesconfirm"):f="deleteselectedmessagesconfirm",e.show?c.get_string(f,"core_message").then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES],c,"",!0,!1)}):ra(a,b,d)},xa=function(a,b,d,e){var f=null;return e==i.SELF?f="deleteallselfconfirm":e&&(f="deleteallconfirm"),f?c.get_string(f,"core_message").then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_DELETE_CONVERSATION],c,"",!0,!1)}):ra(a,b,d)},ya=function(a,b,d,e){return e?c.get_string("userwouldliketocontactyou","core_message",e.fullname).then(function(c){var e=[g.ACTION_ACCEPT_CONTACT_REQUEST,g.ACTION_DECLINE_CONTACT_REQUEST];return qa(a,b,d,e,c,"",!1,!0)}):ra(a,b,d)},za=function(a){var b=_(a),c=b.find(g.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE_CONTAINER);c.removeClass("hidden")},Aa=function(a){var b=_(a),c=b.find(g.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE_CONTAINER),d=b.find(g.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE);d.prop("checked",!1),c.addClass("hidden")},Ba=function(a,b,c,d){d?(a.find(g.ACTION_REQUEST_BLOCK).addClass("hidden"),a.find(g.ACTION_REQUEST_UNBLOCK).removeClass("hidden")):(a.find(g.ACTION_REQUEST_BLOCK).removeClass("hidden"),a.find(g.ACTION_REQUEST_UNBLOCK).addClass("hidden"))},Ca=function(a,b,c,d){var e=a.find(g.FAVOURITE_ICON_CONTAINER),f=a.find(g.ACTION_CONFIRM_FAVOURITE),h=a.find(g.ACTION_CONFIRM_UNFAVOURITE);switch(d){case"hide":e.addClass("hidden"),f.addClass("hidden"),h.addClass("hidden");break;case"show-add":e.addClass("hidden"),f.removeClass("hidden"),h.addClass("hidden");break;case"show-remove":e.removeClass("hidden"),f.addClass("hidden"),h.removeClass("hidden")}},Da=function(a,b,c,d){var e=a.find(g.MUTED_ICON_CONTAINER),f=a.find(g.ACTION_CONFIRM_MUTE),h=a.find(g.ACTION_CONFIRM_UNMUTE);switch(d){case"hide":e.addClass("hidden"),f.addClass("hidden"),h.addClass("hidden");break;case"show-mute":e.addClass("hidden"),f.removeClass("hidden"),h.addClass("hidden");break;case"show-unmute":e.removeClass("hidden"),f.addClass("hidden"),h.removeClass("hidden")}},Ea=function(a,b,c,d){var e=a.find(g.ACTION_REQUEST_ADD_CONTACT),f=a.find(g.ACTION_REQUEST_REMOVE_CONTACT);switch(d){case"pending-contact":e.addClass("hidden"),f.addClass("hidden");break;case"contact":e.addClass("hidden"),f.removeClass("hidden");break;case"non-contact":e.removeClass("hidden"),f.addClass("hidden")}},Fa=function(a,b,c,d){var e=_(b),f=e.find("button"),h=e.find(g.CONFIRM_DIALOGUE_BUTTON_TEXT),i=e.find(g.LOADING_ICON_CONTAINER);d?(f.prop("disabled",!0),h.addClass("hidden"),i.removeClass("hidden")):(f.prop("disabled",!1),h.removeClass("hidden"),i.addClass("hidden"))},Ga=function(a,b,c,d){var e=null;d?(e=b.find(g.MESSAGE_NOT_SELECTED),e.find(g.MESSAGE_NOT_SELECTED_ICON).removeClass("hidden"),P(a),R(a)):(e=j(b),e.find(g.MESSAGE_NOT_SELECTED_ICON).addClass("hidden"),e.find(g.MESSAGE_SELECTED_ICON).addClass("hidden"),O(a),S(a))},Ha=function(a,b,c,d){var e=d.count>0;d.add.length&&d.add.forEach(function(a){var c=W(b,a);c.find(g.MESSAGE_NOT_SELECTED_ICON).addClass("hidden"),c.find(g.MESSAGE_SELECTED_ICON).removeClass("hidden"),c.attr("aria-checked",!0)}),d.remove.length&&d.remove.forEach(function(a){var c=W(b,a);e&&c.find(g.MESSAGE_NOT_SELECTED_ICON).removeClass("hidden"),c.find(g.MESSAGE_SELECTED_ICON).addClass("hidden"),c.attr("aria-checked",!1)}),ca(a,d.count)},Ia=function(a,b,d,e){return e.show&&!e.hasMessages?c.get_strings([{key:"requirecontacttomessage",component:"core_message",param:e.user.fullname},{key:"isnotinyourcontacts",component:"core_message",param:e.user.fullname}]).then(function(c){var e=c[1],f=c[0];return qa(a,b,d,[g.ACTION_REQUEST_ADD_CONTACT],f,e,!1,!0)}):ra(a,b,d)},Ja=function(a,b,c,d){var e=m(b);return d?e.removeClass("hidden"):e.addClass("hidden"),!0},Ka=function(a,b,d,e){var f=o(b);return e?c.get_string("yourcontactrequestpending","core_message",e).then(function(a){return f.find(g.TEXT).text(a),f.removeClass("hidden"),a}):(f.addClass("hidden"),!0)},La=function(a,b,c){return ra(a,b,c),p(b),n(b),I(a),U(a),J(c),x(c),!0},Ma=function(c,d,e,f){var g=[{reset:La},{conversation:ja,header:ka,footer:la,confirmBlockUser:sa,confirmUnblockUser:ta,confirmAddContact:ua,confirmRemoveContact:va,confirmDeleteSelectedMessages:wa,confirmDeleteConversation:xa,confirmContactRequest:ya,requireAddContact:Ia,selfConversationMessage:Ja,contactRequestSent:Ka},{loadingMembers:na,loadingFirstMessages:oa,loadingMessages:pa,isBlocked:Ba,isContact:Ea,isFavourite:Ca,isMuted:Da,loadingConfirmAction:Fa,inEditMode:Ga},{scrollToMessage:ma,selectedMessages:Ha}],h=function(a){var b=[];for(var g in f)if(a.hasOwnProperty(g)){var h=a[g],i=f[g];b.push(h(c,d,e,i))}return b},i=h(g[0]);return i=i.concat(h(g[1])),a.when.apply(a,i).then(function(){for(var a=2;a0,j=g.messages.add.length>0,k=g.messages.update.length>0,l=[],m=a.Deferred().resolve({}).promise();return i&&(l=l.concat(g.days.add.reduce(function(a,b){return a.concat(b.value.messages.reduce(function(a,b){return b.timeCreated&&a.push(b.timeCreated),a},[]))},[]))),j&&(l=l.concat(g.messages.add.reduce(function(a,b){return b.value.timeCreated&&a.push(b.value.timeCreated),a},[]))),k&&(l=l.concat(g.messages.update.reduce(function(a,b){return b.before.timeCreated!=b.after.timeCreated&&a.push(b.after.timeCreated),a},[]))),l.length&&(m=c.get_string("strftimetime24","core_langconfig").then(function(a){var b=l.map(function(b){return{timestamp:b,format:a}});return e.get(b)}).then(function(a){return l.reduce(function(b,c,d){return b[c]=a[d],b},{})})),i&&h.push(m.then(function(a){return ea(b,d,f,g.days.add,a)})),j&&h.push(m.then(function(a){return fa(b,d,f,g.messages.add,a)})),k&&h.push(m.then(function(a){return ga(b,d,f,g.messages.update,a)})),g.days.remove.length>0&&ha(d,g.days.remove),g.messages.remove.length>0&&ia(d,g.messages.remove),a.when.apply(a,h)},ka=function(a,b,c,e){var f=N(a),g=h.HEADER_PUBLIC;return e.context.showrouteback="false"===a.attr("data-from-panel"),e.type==i.PRIVATE?g=e.showControls?h.HEADER_PRIVATE:h.HEADER_PRIVATE_NO_CONTROLS:e.type==i.SELF&&(g=h.HEADER_SELF),d.render(g,e.context).then(function(a,b){d.replaceNodeContents(f,a,b)})},la=function(a,b,d,e){switch(J(d),e.type){case"placeholder":return x(d);case"add-contact":return c.get_strings([{key:"requirecontacttomessage",component:"core_message",param:e.user.fullname},{key:"isnotinyourcontacts",component:"core_message",param:e.user.fullname}]).then(function(a){var b=a[1],c=a[0],e=z(d);return e.find(g.TITLE).text(b),e.find(g.TEXT).text(c),A(d),a});case"edit-mode":return u(d);case"content":return r(d);case"unblock":return D(d);case"unable-to-message":return G(d)}return!0},ma=function(a,b,c,d){var e=j(b),f=W(b,d),g=f.position();if(g){var h=e.scrollTop()+g.top;e.scrollTop(h)}},na=function(a,b,c,d){d?(P(a),U(a)):(O(a),V(a))},oa=function(a,b,c,d){d?(l(b),L(b)):(k(b),M(b))},pa=function(a,b,c,d){d?Z(b):$(b)},qa=function(a,b,c,d,e,f,h,i){var j=_(b),k=d.map(function(a){return j.find(a)}),l=j.find(g.CONFIRM_DIALOGUE_CANCEL_BUTTON),m=j.find(g.CONFIRM_DIALOGUE_TEXT),n=j.find(g.CONFIRM_DIALOGUE_HEADER);j.find("button").addClass("hidden"),h?l.removeClass("hidden"):l.addClass("hidden"),f?(n.removeClass("hidden"),n.text(f)):(n.addClass("hidden"),n.text("")),k.forEach(function(a){a.removeClass("hidden")}),m.text(e),aa(c),aa(b),i||aa(a),j.find(g.CAN_RECEIVE_FOCUS).filter(":visible").first().focus()},ra=function(a,b,c){var d=_(b),e=d.find(g.CONFIRM_DIALOGUE_CANCEL_BUTTON),f=d.find(g.CONFIRM_DIALOGUE_TEXT),h=d.find(g.CONFIRM_DIALOGUE_HEADER);return Aa(b),ba(b),ba(c),ba(a),d.find("button").addClass("hidden"),e.removeClass("hidden"),f.text(""),h.addClass("hidden"),h.text(""),a.find(g.CAN_RECEIVE_FOCUS).first().focus(),!0},sa=function(a,b,d,e){return e?c.get_string("blockuserconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_BLOCK],c,"",!0,!1)}):ra(a,b,d)},ta=function(a,b,d,e){return e?c.get_string("unblockuserconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_UNBLOCK],c,"",!0,!1)}):ra(a,b,d)},ua=function(a,b,d,e){return e?c.get_string("addcontactconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_ADD_CONTACT],c,"",!0,!1)}):ra(a,b,d)},va=function(a,b,d,e){return e?c.get_string("removecontactconfirm","core_message",e.fullname).then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_REMOVE_CONTACT],c,"",!0,!1)}):ra(a,b,d)},wa=function(a,b,d,e){var f=null;return e.type==i.SELF?f="deleteselectedmessagesconfirmselfconversation":e.canDeleteMessagesForAllUsers?(za(b),f="deleteforeveryoneselectedmessagesconfirm"):f="deleteselectedmessagesconfirm",e.show?c.get_string(f,"core_message").then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_DELETE_SELECTED_MESSAGES],c,"",!0,!1)}):ra(a,b,d)},xa=function(a,b,d,e){var f=null;return e==i.SELF?f="deleteallselfconfirm":e&&(f="deleteallconfirm"),f?c.get_string(f,"core_message").then(function(c){return qa(a,b,d,[g.ACTION_CONFIRM_DELETE_CONVERSATION],c,"",!0,!1)}):ra(a,b,d)},ya=function(a,b,d,e){return e?c.get_string("userwouldliketocontactyou","core_message",e.fullname).then(function(c){var e=[g.ACTION_ACCEPT_CONTACT_REQUEST,g.ACTION_DECLINE_CONTACT_REQUEST];return qa(a,b,d,e,c,"",!1,!0)}):ra(a,b,d)},za=function(a){var b=_(a),c=b.find(g.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE_CONTAINER);c.removeClass("hidden")},Aa=function(a){var b=_(a),c=b.find(g.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE_CONTAINER),d=b.find(g.DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE);d.prop("checked",!1),c.addClass("hidden")},Ba=function(a,b,c,d){d?(a.find(g.ACTION_REQUEST_BLOCK).addClass("hidden"),a.find(g.ACTION_REQUEST_UNBLOCK).removeClass("hidden")):(a.find(g.ACTION_REQUEST_BLOCK).removeClass("hidden"),a.find(g.ACTION_REQUEST_UNBLOCK).addClass("hidden"))},Ca=function(a,b,c,d){var e=a.find(g.FAVOURITE_ICON_CONTAINER),f=a.find(g.ACTION_CONFIRM_FAVOURITE),h=a.find(g.ACTION_CONFIRM_UNFAVOURITE);switch(d){case"hide":e.addClass("hidden"),f.addClass("hidden"),h.addClass("hidden");break;case"show-add":e.addClass("hidden"),f.removeClass("hidden"),h.addClass("hidden");break;case"show-remove":e.removeClass("hidden"),f.addClass("hidden"),h.removeClass("hidden")}},Da=function(a,b,c,d){var e=a.find(g.MUTED_ICON_CONTAINER),f=a.find(g.ACTION_CONFIRM_MUTE),h=a.find(g.ACTION_CONFIRM_UNMUTE);switch(d){case"hide":e.addClass("hidden"),f.addClass("hidden"),h.addClass("hidden");break;case"show-mute":e.addClass("hidden"),f.removeClass("hidden"),h.addClass("hidden");break;case"show-unmute":e.removeClass("hidden"),f.addClass("hidden"),h.removeClass("hidden")}},Ea=function(a,b,c,d){var e=a.find(g.ACTION_REQUEST_ADD_CONTACT),f=a.find(g.ACTION_REQUEST_REMOVE_CONTACT);switch(d){case"pending-contact":e.addClass("hidden"),f.addClass("hidden");break;case"contact":e.addClass("hidden"),f.removeClass("hidden");break;case"non-contact":e.removeClass("hidden"),f.addClass("hidden")}},Fa=function(a,b,c,d){var e=_(b),f=e.find("button"),h=e.find(g.CONFIRM_DIALOGUE_BUTTON_TEXT),i=e.find(g.LOADING_ICON_CONTAINER);d?(f.prop("disabled",!0),h.addClass("hidden"),i.removeClass("hidden")):(f.prop("disabled",!1),h.removeClass("hidden"),i.addClass("hidden"))},Ga=function(a,b,c,d){var e=null;d?(e=b.find(g.MESSAGE_NOT_SELECTED),e.find(g.MESSAGE_NOT_SELECTED_ICON).removeClass("hidden"),P(a),R(a)):(e=j(b),e.find(g.MESSAGE_NOT_SELECTED_ICON).addClass("hidden"),e.find(g.MESSAGE_SELECTED_ICON).addClass("hidden"),O(a),S(a))},Ha=function(a,b,c,d){var e=d.count>0;d.add.length&&d.add.forEach(function(a){var c=W(b,a);c.find(g.MESSAGE_NOT_SELECTED_ICON).addClass("hidden"),c.find(g.MESSAGE_SELECTED_ICON).removeClass("hidden"),c.attr("aria-checked",!0)}),d.remove.length&&d.remove.forEach(function(a){var c=W(b,a);e&&c.find(g.MESSAGE_NOT_SELECTED_ICON).removeClass("hidden"),c.find(g.MESSAGE_SELECTED_ICON).addClass("hidden"),c.attr("aria-checked",!1)}),ca(a,d.count)},Ia=function(a,b,d,e){return e.show&&!e.hasMessages?c.get_strings([{key:"requirecontacttomessage",component:"core_message",param:e.user.fullname},{key:"isnotinyourcontacts",component:"core_message",param:e.user.fullname}]).then(function(c){var e=c[1],f=c[0];return qa(a,b,d,[g.ACTION_REQUEST_ADD_CONTACT],f,e,!1,!0)}):ra(a,b,d)},Ja=function(a,b,c,d){var e=m(b);return d?e.removeClass("hidden"):e.addClass("hidden"),!0},Ka=function(a,b,d,e){var f=o(b);return e?c.get_string("yourcontactrequestpending","core_message",e).then(function(a){return f.find(g.TEXT).text(a),f.removeClass("hidden"),a}):(f.addClass("hidden"),!0)},La=function(a,b,c){return ra(a,b,c),p(b),n(b),I(a),U(a),J(c),x(c),!0},Ma=function(c,d,e,f){var g=[{reset:La},{conversation:ja,header:ka,footer:la,confirmBlockUser:sa,confirmUnblockUser:ta,confirmAddContact:ua,confirmRemoveContact:va,confirmDeleteSelectedMessages:wa,confirmDeleteConversation:xa,confirmContactRequest:ya,requireAddContact:Ia,selfConversationMessage:Ja,contactRequestSent:Ka},{loadingMembers:na,loadingFirstMessages:oa,loadingMessages:pa,isBlocked:Ba,isContact:Ea,isFavourite:Ca,isMuted:Da,loadingConfirmAction:Fa,inEditMode:Ga},{scrollToMessage:ma,selectedMessages:Ha}],h=function(a){var b=[];for(var g in f)if(a.hasOwnProperty(g)){var h=a[g],i=f[g];b.push(h(c,d,e,i))}return b},i=h(g[0]);return i=i.concat(h(g[1])),a.when.apply(a,i).then(function(){for(var a=2;ab.timeAdded)return 1}return null===a.timeCreated&&null!==b.timeCreated?1:null!==a.timeCreated&&null===b.timeCreated?-1:a.timeCreatedb.timeCreated?1:a.idb.id?1:0}),e.messages=g.filter(function(a,b,c){return!b||a.id!=c[b-1].id}),e},g=function(d,e){var f=b(d),g=e.reduce(function(a,b){var e=b[0],f=b[1],g=c([f],d.loggedInUserId,d.members),h=g[0];return a[e.id]=h,a},{});return f.messages=f.messages.map(function(b){return b.id in g?a.extend(b,g[b.id]):b}),f},h=function(a,c){var d=b(a),e=c.map(function(a){return""+a.id});return d.messages=d.messages.filter(function(a){return e.indexOf(a.id)<0}),d},i=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.messages=d.messages.filter(function(a){return c.indexOf(a.id)<0}),d},j=function(a,c){var e=b(a),f=d(c);return f.forEach(function(a){e.members[a.id]=a}),e},k=function(a,c){var d=b(a);return c.forEach(function(a){delete d.members[a.id]}),d},l=function(a,c){var d=b(a);return d.loadingMessages=c,a.loadingMessages&&!c&&(d.hasTriedToLoadMessages=!0),d},m=function(a,c){var d=b(a);return d.loadingMembers=c,d},n=function(a,c){var d=b(a);return d.id=c,d},o=function(a,c){var d=b(a);return d.name=c,d},p=function(a,c){var d=b(a);return d.subname=c,d},q=function(a,c){var d=b(a);return d.type=c,d},r=function(a,c){var d=b(a);return d.isFavourite=c,d},s=function(a,c){var d=b(a);return d.isMuted=c,d},t=function(a,c){var d=b(a);return d.totalMemberCount=c,d},u=function(a,c){var d=b(a);return d.imageUrl=c,d},v=function(a,c){var d=b(a);return d.loadingConfirmAction=c,d},w=function(a,c){var d=b(a);return d.pendingDeleteConversation=c,d},x=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.messages.forEach(function(a){c.indexOf(a.id)>=0&&(a.state="pending")}),d},y=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.messages.forEach(function(a){c.indexOf(a.id)>=0&&(a.state="sent")}),d},z=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.messages.forEach(function(a){c.indexOf(a.id)>=0&&(a.state="error")}),d},A=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingBlockUserIds.push(a)}),d},B=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingRemoveContactIds.push(a)}),d},C=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingUnblockUserIds.push(a)}),d},D=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingAddContactIds.push(a)}),d},E=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingDeleteMessageIds.push(a)}),d},F=function(a,c){var d=b(a);return d.pendingBlockUserIds=d.pendingBlockUserIds.filter(function(a){return c.indexOf(a)<0}),d},G=function(a,c){var d=b(a);return d.pendingRemoveContactIds=d.pendingRemoveContactIds.filter(function(a){return c.indexOf(a)<0}),d},H=function(a,c){var d=b(a);return d.pendingUnblockUserIds=d.pendingUnblockUserIds.filter(function(a){return c.indexOf(a)<0}),d},I=function(a,c){var d=b(a);return d.pendingAddContactIds=d.pendingAddContactIds.filter(function(a){return c.indexOf(a)<0}),d},J=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.pendingDeleteMessageIds=d.pendingDeleteMessageIds.filter(function(a){return c.indexOf(a)<0}),d},K=function(a,c){var d=b(a);return d.selectedMessageIds=d.selectedMessageIds.concat(c),d},L=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.selectedMessageIds=d.selectedMessageIds.filter(function(a){return c.indexOf(a)<0}),d},M=function(a,c){var d=b(a),e=c.map(function(a){return a.id});return d.messages=d.messages.map(function(a){return e.indexOf(a.id)>=0&&(a.isRead=!0),a}),d},N=function(a,c){var d=b(a);return c.forEach(function(a){var b=a.userid,c=a.requesteduserid;d.members[b].contactrequests.push(a),d.members[c].contactrequests.push(a)}),d},O=function(a,c){var d=b(a);return c.forEach(function(a){var b=a.userid,c=a.requesteduserid;d.members[b].contactrequests=d.members[b].contactrequests.filter(function(a){return a.userid!=b}),d.members[c].contactrequests=d.members[c].contactrequests.filter(function(a){return a.requesteduserid!=c})}),d},P=function(a,c){var d=b(a);return d.canDeleteMessagesForAllUsers=c,d},Q=function(a,c){var d=b(a);return d.deleteMessagesForAllUsers=c,d};return{buildInitialState:e,addMessages:f,updateMessages:g,removeMessages:h,removeMessagesById:i,addMembers:j,removeMembers:k,setLoadingMessages:l,setLoadingMembers:m,setId:n,setName:o,setSubname:p,setType:q,setIsFavourite:r,setIsMuted:s,setCanDeleteMessagesForAllUsers:P,setDeleteMessagesForAllUsers:Q,setTotalMemberCount:t,setImageUrl:u,setLoadingConfirmAction:v,setPendingDeleteConversation:w,setMessagesSendPendingById:x,setMessagesSendSuccessById:y,setMessagesSendFailById:z,addPendingBlockUsersById:A,addPendingRemoveContactsById:B,addPendingUnblockUsersById:C,addPendingAddContactsById:D,addPendingDeleteMessagesById:E,removePendingBlockUsersById:F,removePendingRemoveContactsById:G,removePendingUnblockUsersById:H,removePendingAddContactsById:I,removePendingDeleteMessagesById:J,addSelectedMessagesById:K,removeSelectedMessagesById:L,markMessagesAsRead:M,addContactRequests:N,removeContactRequests:O}}); \ No newline at end of file +define(["jquery"],function(a){var b=function(b){return a.extend(!0,{},b)},c=function(a,b,c){return a.map(function(a){var d=a.useridfrom==b;return{id:""+a.id,fromLoggedInUser:d,userFrom:c[a.useridfrom],text:a.text,timeCreated:a.timecreated?parseInt(a.timecreated,10):null}})},d=function(a){return a.map(function(a){return{id:a.id,fullname:a.fullname,profileurl:a.profileurl,profileimageurl:a.profileimageurl,profileimageurlsmall:a.profileimageurlsmall,isonline:a.isonline,showonlinestatus:a.showonlinestatus,isblocked:a.isblocked,iscontact:a.iscontact,isdeleted:a.isdeleted,canmessage:a.canmessage,requirescontact:a.requirescontact,contactrequests:a.contactrequests||[]}})},e=function(a,b,c,d,e,f){return{midnight:a,loggedInUserId:b,id:c,messagePollMin:d,messagePollMax:e,messagePollAfterMax:f,name:null,subname:null,type:null,totalMemberCount:null,imageUrl:null,isFavourite:null,isMuted:null,canDeleteMessagesForAllUsers:!1,deleteMessagesForAllUsers:!1,members:{},messages:[],hasTriedToLoadMessages:!1,loadingMessages:!0,loadingMembers:!0,loadingConfirmAction:!1,pendingBlockUserIds:[],pendingUnblockUserIds:[],pendingRemoveContactIds:[],pendingAddContactIds:[],pendingDeleteMessageIds:[],pendingSendMessageIds:[],pendingDeleteConversation:!1,selectedMessageIds:[]}},f=function(a,d){var e=b(a),f=c(d,a.loggedInUserId,a.members);f=f.map(function(a){return a.sendState=null,a.timeAdded=Date.now(),a.errorMessage=null,a});var g=a.messages.concat(f);return g.sort(function(a,b){if(null===a.timeCreated&&null===b.timeCreated){if(a.timeAddedb.timeAdded)return 1}return null===a.timeCreated&&null!==b.timeCreated?1:null!==a.timeCreated&&null===b.timeCreated?-1:a.timeCreatedb.timeCreated?1:a.idb.id?1:0}),e.messages=g.filter(function(a,b,c){return!b||a.id!=c[b-1].id}),e},g=function(d,e){var f=b(d),g=e.reduce(function(a,b){var e=b[0],f=b[1],g=c([f],d.loggedInUserId,d.members),h=g[0];return a[e.id]=h,a},{});return f.messages=f.messages.map(function(b){return b.id in g?a.extend(b,g[b.id]):b}),f},h=function(a,c){var d=b(a),e=c.map(function(a){return""+a.id});return d.messages=d.messages.filter(function(a){return e.indexOf(a.id)<0}),d},i=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.messages=d.messages.filter(function(a){return c.indexOf(a.id)<0}),d},j=function(a,c){var e=b(a),f=d(c);return f.forEach(function(a){e.members[a.id]=a}),e},k=function(a,c){var d=b(a);return c.forEach(function(a){delete d.members[a.id]}),d},l=function(a,c){var d=b(a);return d.loadingMessages=c,a.loadingMessages&&!c&&(d.hasTriedToLoadMessages=!0),d},m=function(a,c){var d=b(a);return d.loadingMembers=c,d},n=function(a,c){var d=b(a);return d.id=c,d},o=function(a,c){var d=b(a);return d.name=c,d},p=function(a,c){var d=b(a);return d.subname=c,d},q=function(a,c){var d=b(a);return d.type=c,d},r=function(a,c){var d=b(a);return d.isFavourite=c,d},s=function(a,c){var d=b(a);return d.isMuted=c,d},t=function(a,c){var d=b(a);return d.totalMemberCount=c,d},u=function(a,c){var d=b(a);return d.imageUrl=c,d},v=function(a,c){var d=b(a);return d.loadingConfirmAction=c,d},w=function(a,c){var d=b(a);return d.pendingDeleteConversation=c,d},x=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.messages.forEach(function(a){c.indexOf(a.id)>=0&&(a.sendState="pending",a.errorMessage=null)}),d},y=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.messages.forEach(function(a){c.indexOf(a.id)>=0&&(a.sendState="sent",a.errorMessage=null)}),d},z=function(a,c,d){var e=b(a);return c=c.map(function(a){return""+a}),e.messages.forEach(function(a){c.indexOf(a.id)>=0&&(a.sendState="error",a.errorMessage=d)}),e},A=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingBlockUserIds.push(a)}),d},B=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingRemoveContactIds.push(a)}),d},C=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingUnblockUserIds.push(a)}),d},D=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingAddContactIds.push(a)}),d},E=function(a,c){var d=b(a);return c.forEach(function(a){d.pendingDeleteMessageIds.push(a)}),d},F=function(a,c){var d=b(a);return d.pendingBlockUserIds=d.pendingBlockUserIds.filter(function(a){return c.indexOf(a)<0}),d},G=function(a,c){var d=b(a);return d.pendingRemoveContactIds=d.pendingRemoveContactIds.filter(function(a){return c.indexOf(a)<0}),d},H=function(a,c){var d=b(a);return d.pendingUnblockUserIds=d.pendingUnblockUserIds.filter(function(a){return c.indexOf(a)<0}),d},I=function(a,c){var d=b(a);return d.pendingAddContactIds=d.pendingAddContactIds.filter(function(a){return c.indexOf(a)<0}),d},J=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.pendingDeleteMessageIds=d.pendingDeleteMessageIds.filter(function(a){return c.indexOf(a)<0}),d},K=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.selectedMessageIds=d.selectedMessageIds.concat(c),d},L=function(a,c){var d=b(a);return c=c.map(function(a){return""+a}),d.selectedMessageIds=d.selectedMessageIds.filter(function(a){return c.indexOf(a)<0}),d},M=function(a,c){var d=b(a),e=c.map(function(a){return a.id});return d.messages=d.messages.map(function(a){return e.indexOf(a.id)>=0&&(a.isRead=!0),a}),d},N=function(a,c){var d=b(a);return c.forEach(function(a){var b=a.userid,c=a.requesteduserid;d.members[b].contactrequests.push(a),d.members[c].contactrequests.push(a)}),d},O=function(a,c){var d=b(a);return c.forEach(function(a){var b=a.userid,c=a.requesteduserid;d.members[b].contactrequests=d.members[b].contactrequests.filter(function(a){return a.userid!=b}),d.members[c].contactrequests=d.members[c].contactrequests.filter(function(a){return a.requesteduserid!=c})}),d},P=function(a,c){var d=b(a);return d.canDeleteMessagesForAllUsers=c,d},Q=function(a,c){var d=b(a);return d.deleteMessagesForAllUsers=c,d};return{buildInitialState:e,addMessages:f,updateMessages:g,removeMessages:h,removeMessagesById:i,addMembers:j,removeMembers:k,setLoadingMessages:l,setLoadingMembers:m,setId:n,setName:o,setSubname:p,setType:q,setIsFavourite:r,setIsMuted:s,setCanDeleteMessagesForAllUsers:P,setDeleteMessagesForAllUsers:Q,setTotalMemberCount:t,setImageUrl:u,setLoadingConfirmAction:v,setPendingDeleteConversation:w,setMessagesSendPendingById:x,setMessagesSendSuccessById:y,setMessagesSendFailById:z,addPendingBlockUsersById:A,addPendingRemoveContactsById:B,addPendingUnblockUsersById:C,addPendingAddContactsById:D,addPendingDeleteMessagesById:E,removePendingBlockUsersById:F,removePendingRemoveContactsById:G,removePendingUnblockUsersById:H,removePendingAddContactsById:I,removePendingDeleteMessagesById:J,addSelectedMessagesById:K,removeSelectedMessagesById:L,markMessagesAsRead:M,addContactRequests:N,removeContactRequests:O}}); \ 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 ee698087aab..f70634364b3 100644 --- a/message/amd/src/message_drawer_view_conversation.js +++ b/message/amd/src/message_drawer_view_conversation.js @@ -864,16 +864,28 @@ function( */ var deleteSelectedMessages = function() { var messageIds = viewState.pendingDeleteMessageIds; + var sentMessages = viewState.messages.filter(function(message) { + // If a message sendState is null then it means it was loaded from the server or if it's + // set to sent then it means the user has successfully sent it in this page load. + return messageIds.indexOf(message.id) >= 0 && (message.sendState == 'sent' || message.sendState === null); + }); var newState = StateManager.setLoadingConfirmAction(viewState, true); render(newState); - var deleteMessagesPromise = null; + var deleteMessagesPromise = $.Deferred().resolve().promise(); - if (newState.deleteMessagesForAllUsers) { - deleteMessagesPromise = Repository.deleteMessagesForAllUsers(viewState.loggedInUserId, messageIds); - } else { - deleteMessagesPromise = Repository.deleteMessages(viewState.loggedInUserId, messageIds); + if (sentMessages.length) { + // We only need to send a request to the server if we're trying to delete messages that + // have successfully been sent. + var sentMessageIds = sentMessages.map(function(message) { + return message.id; + }); + if (newState.deleteMessagesForAllUsers) { + deleteMessagesPromise = Repository.deleteMessagesForAllUsers(viewState.loggedInUserId, sentMessageIds); + } else { + deleteMessagesPromise = Repository.deleteMessages(viewState.loggedInUserId, sentMessageIds); + } } return deleteMessagesPromise.then(function() { @@ -894,7 +906,8 @@ function( } return render(newState); - }); + }) + .catch(Notification.exception); }; /** @@ -1021,7 +1034,7 @@ function( // We're already sending messages so nothing to do. return; } - if (!sendMessageBuffer.length) { + if (!sendMessageBuffer.length) { // No messages waiting to send. Nothing to do. return; } @@ -1063,14 +1076,36 @@ function( var newMessageIds = messages.map(function(message) { return message.id; }); - var data = messagesToSend.map(function(oldMessage, index) { + var data = []; + var selectedToRemove = []; + var selectedToAdd = []; + + messagesToSend.forEach(function(oldMessage, index) { + var newMessage = messages[index]; // Update messages expects and array of arrays where the first value // is the old message to update and the second value is the new values // to set. - return [oldMessage, messages[index]]; + data.push([oldMessage, newMessage]); + + if (viewState.selectedMessageIds.indexOf(oldMessage.id) >= 0) { + // If the message was added to the "selected messages" list while it was still + // being sent then we should update it's id in that list now to make sure future + // actions work. + selectedToRemove.push(oldMessage.id); + selectedToAdd.push(newMessage.id); + } }); var newState = StateManager.updateMessages(viewState, data); newState = StateManager.setMessagesSendSuccessById(newState, newMessageIds); + + if (selectedToRemove.length) { + newState = StateManager.removeSelectedMessagesById(newState, selectedToRemove); + } + + if (selectedToAdd.length) { + newState = StateManager.addSelectedMessagesById(newState, selectedToAdd); + } + var conversation = formatConversationForEvent(newState); if (!newState.id) { @@ -1089,14 +1124,32 @@ function( isSendingMessage = false; processSendMessageBuffer(); PubSub.publish(MessageDrawerEvents.CONVERSATION_NEW_LAST_MESSAGE, conversation); + return; }) - .catch(function() { - // We failed to create messages so remove the old messages from the pending queue - // and update the UI to indicate that the message failed. - var newState = StateManager.setMessagesSendFailById(viewState, messageIds); - render(newState); - isSendingMessage = false; - processSendMessageBuffer(); + .catch(function(e) { + if (e.message) { + var errorMessage = $.Deferred().resolve(e.message).promise(); + } else { + var errorMessage = Str.get_string('unknownerror', 'core'); + } + + var handleFailedMessages = function(errorMessage) { + // We failed to create messages so remove the old messages from the pending queue + // and update the UI to indicate that the message failed. + var newState = StateManager.setMessagesSendFailById(viewState, messageIds, errorMessage); + render(newState); + isSendingMessage = false; + processSendMessageBuffer(); + }; + + errorMessage.then(handleFailedMessages) + .catch(function(e) { + // Hrmm, we can't even load the error messages string! We'll have to + // hard code something in English here if we still haven't got a message + // to show. + var finalError = e.message || 'Something went wrong!'; + handleFailedMessages(finalError); + }); }); }; @@ -1347,6 +1400,8 @@ function( } data.originalEvent.preventDefault(); + data.originalEvent.stopPropagation(); + e.stopPropagation(); }; /** diff --git a/message/amd/src/message_drawer_view_conversation_constants.js b/message/amd/src/message_drawer_view_conversation_constants.js index b945b81759a..d3384121273 100644 --- a/message/amd/src/message_drawer_view_conversation_constants.js +++ b/message/amd/src/message_drawer_view_conversation_constants.js @@ -63,6 +63,8 @@ define([], function() { DAY_MESSAGES_CONTAINER: '[data-region="day-messages-container"]', DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE: '[data-region="delete-messages-for-all-users-toggle"]', DELETE_MESSAGES_FOR_ALL_USERS_TOGGLE_CONTAINER: '[data-region="delete-messages-for-all-users-toggle-container"]', + ERROR_MESSAGE_CONTAINER: '[data-region="error-message-container"]', + ERROR_MESSAGE: '[data-region="error-message"]', FAVOURITE_ICON_CONTAINER: '[data-region="favourite-icon-container"]', FOOTER_CONTAINER: '[data-region="content-messages-footer-container"]', HEADER: '[data-region="header-content"]', diff --git a/message/amd/src/message_drawer_view_conversation_patcher.js b/message/amd/src/message_drawer_view_conversation_patcher.js index 355dbc0d398..c2595124ae7 100644 --- a/message/amd/src/message_drawer_view_conversation_patcher.js +++ b/message/amd/src/message_drawer_view_conversation_patcher.js @@ -220,13 +220,13 @@ function( return isObjectEqual( { id: a.id, - state: a.state, + state: a.sendState, text: a.text, timeCreated: a.timeCreated }, { id: b.id, - state: b.state, + state: b.sendState, text: b.text, timeCreated: b.timeCreated } @@ -294,7 +294,7 @@ function( // If the IDs match or it was a state change (i.e. message with a temp // ID goes from pending to sent and receives an actual id) then they are // the same message which should be an update not an add/remove. - return a.id == b.id || (a.state != b.state && a.timeAdded == b.timeAdded); + return a.id == b.id || (a.sendState != b.sendState && a.timeAdded == b.timeAdded); } ); diff --git a/message/amd/src/message_drawer_view_conversation_renderer.js b/message/amd/src/message_drawer_view_conversation_renderer.js index c91d1ede6e4..b4b3226b9fe 100644 --- a/message/amd/src/message_drawer_view_conversation_renderer.js +++ b/message/amd/src/message_drawer_view_conversation_renderer.js @@ -643,26 +643,32 @@ function( element.find(SELECTORS.TIME_CREATED).text(formattedTime).removeClass('hidden'); } - if (before.state != after.state) { + if (before.sendState != after.sendState) { var loading = element.find(SELECTORS.LOADING_ICON_CONTAINER); var time = element.find(SELECTORS.TIME_CREATED); var retry = element.find(SELECTORS.RETRY_SEND); loading.addClass('hidden'); + loading.attr('aria-hidden', 'true'); time.addClass('hidden'); + time.attr('aria-hidden', 'true'); retry.addClass('hidden'); + retry.attr('aria-hidden', 'true'); element.removeClass('border border-danger'); - switch (after.state) { + switch (after.sendState) { case 'pending': loading.removeClass('hidden'); + loading.attr('aria-hidden', 'false'); break; case 'error': retry.removeClass('hidden'); + retry.attr('aria-hidden', 'false'); element.addClass('border border-danger'); break; case 'sent': time.removeClass('hidden'); + time.attr('aria-hidden', 'false'); break; } } @@ -670,6 +676,21 @@ function( if (before.text != after.text) { element.find(SELECTORS.TEXT_CONTAINER).html(after.text); } + + if (before.errorMessage != after.errorMessage) { + var messageContainer = element.find(SELECTORS.ERROR_MESSAGE_CONTAINER); + var message = messageContainer.find(SELECTORS.ERROR_MESSAGE); + + if (after.errorMessage) { + messageContainer.removeClass('hidden'); + messageContainer.attr('aria-hidden', 'false'); + message.text(after.errorMessage); + } else { + messageContainer.addClass('hidden'); + messageContainer.attr('aria-hidden', 'true'); + message.text(''); + } + } }); }; diff --git a/message/amd/src/message_drawer_view_conversation_state_manager.js b/message/amd/src/message_drawer_view_conversation_state_manager.js index ee0129f7d6e..61c7a28610f 100644 --- a/message/amd/src/message_drawer_view_conversation_state_manager.js +++ b/message/amd/src/message_drawer_view_conversation_state_manager.js @@ -158,8 +158,9 @@ define(['jquery'], function($) { var newState = cloneState(state); var formattedMessages = formatMessages(messages, state.loggedInUserId, state.members); formattedMessages = formattedMessages.map(function(message) { - message.state = 'pending'; + message.sendState = null; message.timeAdded = Date.now(); + message.errorMessage = null; return message; }); var allMessages = state.messages.concat(formattedMessages); @@ -476,7 +477,8 @@ define(['jquery'], function($) { }); newState.messages.forEach(function(message) { if (messageIds.indexOf(message.id) >= 0) { - message.state = 'pending'; + message.sendState = 'pending'; + message.errorMessage = null; } }); return newState; @@ -496,7 +498,8 @@ define(['jquery'], function($) { }); newState.messages.forEach(function(message) { if (messageIds.indexOf(message.id) >= 0) { - message.state = 'sent'; + message.sendState = 'sent'; + message.errorMessage = null; } }); return newState; @@ -509,14 +512,15 @@ define(['jquery'], function($) { * @param {Array} messageIds Messages to delete. * @return {Object} New state with array of pending delete message ids. */ - var setMessagesSendFailById = function(state, messageIds) { + var setMessagesSendFailById = function(state, messageIds, errorMessage) { var newState = cloneState(state); messageIds = messageIds.map(function(id) { return "" + id; }); newState.messages.forEach(function(message) { if (messageIds.indexOf(message.id) >= 0) { - message.state = 'error'; + message.sendState = 'error'; + message.errorMessage = errorMessage; } }); return newState; @@ -684,6 +688,9 @@ define(['jquery'], function($) { */ var addSelectedMessagesById = function(state, messageIds) { var newState = cloneState(state); + messageIds = messageIds.map(function(id) { + return "" + id; + }); newState.selectedMessageIds = newState.selectedMessageIds.concat(messageIds); return newState; }; diff --git a/message/templates/message_drawer_view_conversation_body_message.mustache b/message/templates/message_drawer_view_conversation_body_message.mustache index 0a2026984e6..d1688143a53 100644 --- a/message/templates/message_drawer_view_conversation_body_message.mustache +++ b/message/templates/message_drawer_view_conversation_body_message.mustache @@ -66,11 +66,30 @@ > {{formattedtime}} -
{{> core/loading }}
- +
+ {{> core/loading }} +
+ +
{{{text}}}
-