AlexJ Posted January 14 Share Posted January 14 Seeing below error when I try to post on user profile... it happens randomly but it's consistent and can be reproduced - especially, when you try to comment on existing profile status update. How do I figure out which application or IPS code is causing it? Thanks. ;(function($,_,undefined){"use strict";ips.controller.register('core.front.statuses.status',{_commentStatusID:null,initialize:function(){this.on('click','[data-action="loadPreviousComments"], [data-action="loadNextComments"]',this.paginate);this.on('submit','[data-role="replyComment"]',this.quickReply);this.on(document,'addToStatusFeed',this.addToStatusFeed);this.setup();},setup:function(){this._commentStatusID=this.scope.attr('data-statusID');},paginate:function(e){e.preventDefault();var feed=$(e.currentTarget).closest('[data-role="statusComments"]');var paginateRow=$(e.currentTarget).closest('.cStatusUpdates_pagination');paginateRow.html(ips.templates.render('core.statuses.loadingComments'));ips.getAjax()($(e.currentTarget).attr('href')).done(function(response){paginateRow.replaceWith(response);feed.find('meta').remove().end();$(document).trigger('contentChange',[feed]);}).fail(function(response){paginateRow.replaceWith('');ips.ui.alert.show({type:'alert',icon:'warn',message:_.isUndefined(response.responseJSON)?ips.getString('errorLoadingContent'):response.responseJSON,});});},quickReply:function(e){var form=this.scope.find('[data-role="replyComment"] form');if(form.attr('data-noAjax')){return;} e.preventDefault();e.stopPropagation();var self=this;var feed=$(e.currentTarget).closest('[data-role="statusComments"]');var replyArea=this.scope.find('[data-role="replyComment"]');var submit=this.scope.find('[type="submit"]');var page=feed.attr('data-currentPage');if(!page){page=1;} var currentText=submit.text();submit.prop('disabled',true).text(ips.getString('saving'));ips.getAjax()(form.attr('action'),{data:form.serialize()+'&submitting=1¤tPage='+page,type:'post'}).done(function(response){self.trigger('addToStatusFeed',{content:response.content,statusID:self._commentStatusID});}).fail(function(){form.attr('data-noAjax','true');form.submit();}).always(function(){submit.prop('disabled',false).text(currentText);});},addToStatusFeed:function(e,data){if(!data.content||data.statusID!=this._commentStatusID){return;} var content=$('<div/>').append(data.content);this.scope.find('[data-role="statusComments"]').append(content);ips.utils.anim.go('fadeInDown',content);ips.ui.editor.getObj(this.scope.find('[data-role="replyComment"] [data-ipsEditor]')).reset();$(document).trigger('contentChange',[this.scope]);}});}(jQuery,_));; ;(function($,_,undefined){"use strict";ips.controller.register('core.front.statuses.statusFeed',{initialize:function(){this.on('submit','[data-role="newStatus"] form',this.submitNewStatus);this.setup();},setup:function(){},submitNewStatus:function(e){e.preventDefault();e.stopPropagation();var self=this;var feed=this.scope.find('[data-role="activityStream"]');var replyArea=this.scope.find('[data-role="replyComment"]');var form=this.scope.find('[data-role="newStatus"] form');var submit=this.scope.find('[data-action="submitComment"]');var textarea=form.find('textarea');var currentText=submit.text();if(!textarea.val()){ips.ui.alert.show({type:'alert',message:ips.getString('validation_required'),icon:'warn'});return;} submit.prop('disabled',true).text(ips.getString('saving'));ips.getAjax()(form.attr('action'),{data:form.serialize(),type:'post',bypassRedirect:true}).done(function(response){var content=$('<div/>').append(response);var comment=content.find('.ipsComment,.ipsStreamItem').first();feed.prepend(comment);ips.utils.anim.go('fadeInDown',comment);$('textarea[name="'+textarea.attr('name')+'"]').closest('[data-ipsEditor]').data('_editor').reset();$(document).trigger('contentChange',[comment]);}).fail(function(xhr){self.scope.find('#elStatusSubmit').parent().html(xhr.responseText);$(document).trigger('contentChange',[self.scope.find('#elStatusSubmit').parent()]);}).always(function(){submit.prop('disabled',false).text(currentText);});}});}(jQuery,_));; SeNioR- 1 Link to comment Share on other sites More sharing options...
DaveLegg Posted January 14 Share Posted January 14 I've literally just been debugging this same issue over at Neowin - we've been experiencing it at least since September. From my testing, the issue only arises if you attempt to reply to a status the first time you load the page you're making the reply on. If you refresh, or navigate away and return, you can reply without issue. Stepping through the JS, I believe I've tracked down the cause of the issue, but I don't understand the internal working of the IPB JS well enough to suggest a fix. I've tracked the issue back to the ips.ui.editor.getObj(this.scope.find('[data-role="replyComment"] [data-ipsEditor]')) call returning undefined, rather than the ckeditor object. Tracing this back, I think this is happening due to some code called from the core.front.profile.main controller - in the 'setup' method there, the browser history state is having section: 'goToProfile' ammended onto it. There is other code in the controller that watches for the history state being modified, and fires some code that unsets all IPB widgets on the page. I believe this is clearing the editor object from the .data('_editor') property on the editor element, which in turn causes the ips.ui.editor.getObj to return undefined. When the page is reloaded / visited again, because the section: 'goToProfile' value is already set on the history state for the page, then it's not set again, so no state change happens, and the code that unsets the widgets is not fired. I would assume the fix is either to not unset the widgets in the first place, or to ensure that they're set again properly afterwards. Someone on the IPB team that knows the code way better than me would have to figure out exactly what needs to happen, but hopefully this can point them in the right direction. AlexJ 1 Link to comment Share on other sites More sharing options...
AlexJ Posted January 14 Author Share Posted January 14 (edited) 36 minutes ago, DaveLegg said: From my testing, the issue only arises if you attempt to reply to a status the first time you load the page you're making the reply on. If you refresh, or navigate away and return, you can reply without issue. I agree. It drove me nuts. I started with our Firewall, CF, apps, etc. and then was able to figure out based on console error. I hope someone from IPS will take a look and fix this issues. Makes forum profile unstable because people don't refresh and it's getting annoying for them. I am happy, that I am not alone. Please share the fix in case if you create custom fix for your site. You got pretty popular site their and I used to be active user on it when I was little younger. Thanks! Edited January 14 by AlexJ Link to comment Share on other sites More sharing options...
Marc Stridgen Posted January 16 Share Posted January 16 Is this something that is causing you an issue on the page itself, or something that is just showing in console only? Link to comment Share on other sites More sharing options...
DaveLegg Posted January 16 Share Posted January 16 10 minutes ago, Marc Stridgen said: Is this something that is causing you an issue on the page itself, or something that is just showing in console only? It causes the reply to not show on the page, the editor to not be cleared, and the button to remain disabled - it looks to the user like the reply failed to go through - or is stuck in the process of submitting - on refresh they can then see it AlexJ 1 Link to comment Share on other sites More sharing options...
AlexJ Posted January 28 Author Share Posted January 28 @Marc Stridgen Any update on this issue? Thanks Link to comment Share on other sites More sharing options...
Marc Stridgen Posted January 30 Share Posted January 30 In the first instance, please test this on a default theme, with no 3rd party items enabled. If you are then still having problems, please let me know which browser you are using Link to comment Share on other sites More sharing options...
AlexJ Posted January 30 Author Share Posted January 30 15 hours ago, Marc Stridgen said: In the first instance, please test this on a default theme, with no 3rd party items enabled. If you are then still having problems, please let me know which browser you are using Have issue in Chrome latest version on default theme. Link to comment Share on other sites More sharing options...
Marc Stridgen Posted January 31 Share Posted January 31 Ive been doing some testing on the latest beta and Im unable to replicate this at all currently. Please test this once that is released and let us know if you see the same AlexJ 1 Link to comment Share on other sites More sharing options...
AlexJ Posted February 11 Author Share Posted February 11 On 1/31/2023 at 4:25 AM, Marc Stridgen said: Ive been doing some testing on the latest beta and Im unable to replicate this at all currently. Please test this once that is released and let us know if you see the same Error still exist with latest version 😞 Link to comment Share on other sites More sharing options...
Jim M Posted February 11 Share Posted February 11 13 hours ago, AlexJ said: Error still exist with latest version 😞 Have you tried disabling all third party applications/plugins and switching to an unmodified theme? Just like my colleague, I cannot reproduce this on my test install on the latest release. Link to comment Share on other sites More sharing options...
DaveLegg Posted February 14 Share Posted February 14 I haven't had a chance to try the new version yet. Just wanted to flag that when testing you'll need to ensure that you're trying to post the reply the first time you've loaded that specific URL in order to encounter the bug. If you've been to the page before, or refresh it, then the issue won't occur Link to comment Share on other sites More sharing options...
Marc Stridgen Posted February 15 Share Posted February 15 Could you also let me know which OS you have chrome on? I will then try and replicate in the same environment, or escalate your own site to devs so we can get to the bottom of the issue Link to comment Share on other sites More sharing options...
SeNioR- Posted February 15 Share Posted February 15 (edited) Yep, I have the same error. 2 hours ago, Marc Stridgen said: Could you also let me know which OS you have chrome on? Windows 11 and the latest Edge. Edited February 15 by SeNioR- Link to comment Share on other sites More sharing options...
Marc Stridgen Posted February 15 Share Posted February 15 Ah, indeed. We have a bug report open for this Link to comment Share on other sites More sharing options...
SeNioR- Posted March 6 Share Posted March 6 (edited) On 2/15/2023 at 1:40 PM, Marc Stridgen said: Ah, indeed. We have a bug report open for this Any progress? May we know when it will be fixed? We've been struggling with this for months 😕 Quote Uncaught TypeError: Cannot read properties of undefined (reading 'reset') at baseController.addToStatusFeed (front_front_statuses.js?v=27b94d900c1678047906:4:234) at nr (root_library.js?v=27b94d900c1678047906:1:7597) at HTMLDocument.<anonymous> (root_library.js?v=27b94d900c1678047906:1:8025) at HTMLDocument.<anonymous> (root_library.js?v=27b94d900c1678047906:1:1076) at HTMLDocument.dispatch (root_library.js?v=27b94d900c1678047906:2:43090) at v.handle (root_library.js?v=27b94d900c1678047906:2:41074) at Object.trigger (root_library.js?v=27b94d900c1678047906:2:71513) at HTMLLIElement.<anonymous> (root_library.js?v=27b94d900c1678047906:2:72108) at Function.each (root_library.js?v=27b94d900c1678047906:2:2976) at jQuery.fn.init.each (root_library.js?v=27b94d900c1678047906:2:1454) Edited March 6 by SeNioR- Link to comment Share on other sites More sharing options...
Marc Stridgen Posted March 6 Share Posted March 6 This is still on our list at present unfortunately. Link to comment Share on other sites More sharing options...
Recommended Posts