Skip to content

New "messenger style" conversation view

Announcements
49 4 19.7k 1
  • @crazycells I think I see the issue - it’s related to caching. Can you open sudonix.com in an incognito session, and let me know if you experience the same issue?

    Either way, it’s something I need to fix.

    wrote on last edited by
    #33

    @phenomlab said in New "messenger style" conversation view:

    @crazycells I think I see the issue - it’s related to caching. Can you open sudonix.com in an incognito session, and let me know if you experience the same issue?

    Either way, it’s something I need to fix.

    Yes, incognito session solves the issue 👍

  • @phenomlab said in New "messenger style" conversation view:

    @crazycells I think I see the issue - it’s related to caching. Can you open sudonix.com in an incognito session, and let me know if you experience the same issue?

    Either way, it’s something I need to fix.

    Yes, incognito session solves the issue 👍

    wrote on last edited by
    #34

    @crazycells thanks for confirming. Looks like I’ll need to write in a function that creates a random string meaning the css can’t be cached.

    Interestingly, this same function was included in the original iteration I worked on for @DownPW but it was removed in this version because it wasn’t deemed necessary - but clearly is !

  • @phenomlab said in New "messenger style" conversation view:

    @crazycells I think I see the issue - it’s related to caching. Can you open sudonix.com in an incognito session, and let me know if you experience the same issue?

    Either way, it’s something I need to fix.

    Yes, incognito session solves the issue 👍

    wrote on last edited by phenomlab
    #35

    @crazycells This got the better of me over the weekend, so I decided to look into this a bit more. It’s not just caching, but the fact that NodeBB uses lazyLoad to prevent the DOM from being overloaded (this is why it is so fast). The issue here is that this specific view requires the injection of a new class to replace those that have none set.

    As the DOM is already loaded, the required classes are not being added unless the page is being reloaded using the F5 key. Obviously, this is undesirable, so I’ve had to modify another function that I have which looks for lazyLoaded images added to the DOM on content update, then injects the fancybox function so that they can be handled in the same way as those already in the DOM.

    Extending this function means the injection of required classes for those that are missing on lazyLoad is then possible. The function looks like the below

    if (top.location.pathname !== '/login') {
        $(window).on('action:posts.loaded', function(data) {
            console.log("Polling DOM for lazyLoaded images to apply Fancybox");
            $(document).ready(function() {
                $('a').not('.forum-logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() {
                    $('a[href*=".jpg"], a[href*=".jpeg"], a[href*=".png"], a[href*=".gif"], a[href*=".webp"]').addClass("noanimate");
                });
            });
    /* This is where the messenger view type classes need to be injected if they are missing */
            $(document).ready(function() {
                if (!$('li[component="post"]').hasClass('.topic-owner-post') || (!$('li[component="post"]').hasClass('.self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $('li[component="post"]').addClass('topic-response-post');
    
                }
            });
        });
    }
    

    Arguably, it would be a much simpler affair if these classes existed in the core, but they sadly do not, so the above function is necessary.

  • @crazycells This got the better of me over the weekend, so I decided to look into this a bit more. It’s not just caching, but the fact that NodeBB uses lazyLoad to prevent the DOM from being overloaded (this is why it is so fast). The issue here is that this specific view requires the injection of a new class to replace those that have none set.

    As the DOM is already loaded, the required classes are not being added unless the page is being reloaded using the F5 key. Obviously, this is undesirable, so I’ve had to modify another function that I have which looks for lazyLoaded images added to the DOM on content update, then injects the fancybox function so that they can be handled in the same way as those already in the DOM.

    Extending this function means the injection of required classes for those that are missing on lazyLoad is then possible. The function looks like the below

    if (top.location.pathname !== '/login') {
        $(window).on('action:posts.loaded', function(data) {
            console.log("Polling DOM for lazyLoaded images to apply Fancybox");
            $(document).ready(function() {
                $('a').not('.forum-logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() {
                    $('a[href*=".jpg"], a[href*=".jpeg"], a[href*=".png"], a[href*=".gif"], a[href*=".webp"]').addClass("noanimate");
                });
            });
    /* This is where the messenger view type classes need to be injected if they are missing */
            $(document).ready(function() {
                if (!$('li[component="post"]').hasClass('.topic-owner-post') || (!$('li[component="post"]').hasClass('.self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $('li[component="post"]').addClass('topic-response-post');
    
                }
            });
        });
    }
    

    Arguably, it would be a much simpler affair if these classes existed in the core, but they sadly do not, so the above function is necessary.

    wrote on last edited by
    #36

    @phenomlab if there is no need to change the core codes, can we make new messenger style to in my site?

  • @phenomlab if there is no need to change the core codes, can we make new messenger style to in my site?

    wrote on last edited by
    #37

    @cagatay Yes, but as I mentioned before, this really needs to be done in a development environment first as it’s quite disruptive to change CSS values constantly whilst users are trying to use the site.

  • @cagatay Yes, but as I mentioned before, this really needs to be done in a development environment first as it’s quite disruptive to change CSS values constantly whilst users are trying to use the site.

    wrote on last edited by
    #38

    @phenomlab i do not have dev side of my site. My users traffic also not good so i can get my all css as copy and you can try to new messenger style to my site, if there is any failure, don’t worry, you don’t have to feel responsible …

  • @phenomlab i do not have dev side of my site. My users traffic also not good so i can get my all css as copy and you can try to new messenger style to my site, if there is any failure, don’t worry, you don’t have to feel responsible …

    wrote on last edited by
    #39

    @cagatay Before we do this, what package do you have? If you have a VPS for example, creating a dev instance isn’t that hard, and it’s a recommended standard.

  • @cagatay Before we do this, what package do you have? If you have a VPS for example, creating a dev instance isn’t that hard, and it’s a recommended standard.

    wrote on last edited by
    #40

    @phenomlab yes i have vps at hetzner.

  • @phenomlab yes i have vps at hetzner.

    wrote on last edited by
    #41

    @cagatay if it has enough power, you could create a replica of your site in a subdomain and use that for development. Essentially, it’s a copy of the production site but with it’s open file set and database so they behave like individual instances.

  • @cagatay if it has enough power, you could create a replica of your site in a subdomain and use that for development. Essentially, it’s a copy of the production site but with it’s open file set and database so they behave like individual instances.

    wrote on last edited by
    #42

    @phenomlab Sorry, I don’t have that much technical knowledge.

  • @phenomlab Sorry, I don’t have that much technical knowledge.

    wrote on last edited by
    #43

    @cagatay I can assist with this if you like, or if you’re ok with working on the production site then this is also ok.

    What exactly are you looking to get in terms of results ?

  • @cagatay I can assist with this if you like, or if you’re ok with working on the production site then this is also ok.

    What exactly are you looking to get in terms of results ?

    wrote on last edited by
    #44

    @phenomlab i’d like to that my messenger style same as your site.

  • @phenomlab i’d like to that my messenger style same as your site.

    wrote on last edited by
    #45

    @cagatay keeping the existing theme, or the design of a new one ?

  • @cagatay keeping the existing theme, or the design of a new one ?

    wrote on last edited by
    #46

    @phenomlab keeping the existing theme, to tell the truht this is not a theme, i just changed some css style.

  • @phenomlab keeping the existing theme, to tell the truht this is not a theme, i just changed some css style.

    wrote on last edited by
    #47

    @cagatay on, makes sense. If you’re sure that you’d like for code to be written and executed on your production instance, then we can start this next week.

  • @cagatay on, makes sense. If you’re sure that you’d like for code to be written and executed on your production instance, then we can start this next week.

    wrote on last edited by
    #48

    @phenomlab I m sure of course, will be glad. Great thanks for your time and helpfulness.

  • on a side note… you are such a great person 🙂 you should let us upvote you 20 times a day 🙂 6 is too low…

    Screen Shot 2022-10-21 at 14.38.22.png

    wrote on last edited by phenomlab
    #49

    @crazycells You should be able to upvote more now as I’ve located the hard coded function in the plugin responsible for this and changed it from

        maxVotesPerUser(reputation) {
            let MIN = 5,
                MAX = 50;
            let calculatedVotesPerUser = Math.floor(reputation / 10);
            if (calculatedVotesPerUser < MIN) {
                calculatedVotesPerUser = MIN;
            } else if (calculatedVotesPerUser > MAX) {
                calculatedVotesPerUser = MAX;
            }
            return calculatedVotesPerUser;
        },
    

    to

        maxVotesPerUser(reputation) {
            let MIN = 5,
                MAX = 500;
            let calculatedVotesPerUser = Math.floor(reputation / 50);
            if (calculatedVotesPerUser < MIN) {
                calculatedVotesPerUser = MIN;
            } else if (calculatedVotesPerUser > MAX) {
                calculatedVotesPerUser = MAX;
            }
            return calculatedVotesPerUser;
        },
    

    It appears that the upvote limit is 10% of your reputation by default.


Related Topics
  • 14 Votes
    9 Posts
    3k Views
    phenomlab
    @DownPW of course. As I mentioned in the first post, Sudonix isn’t going anywhere. It’ll continue to be free as it always has been.
  • Ch..ch..ch..ch..changes!

    Announcements themes layout
    16
    2
    15 Votes
    16 Posts
    5k Views
    JAC
    @phenomlab of course, to be recognised is fantastic. @phenomlab said in Ch..ch..ch..ch..changes!: Sadly, no. Web crawlers and scrapers are often JS based and read text only, so styles don’t have any bearing. I’ve read mixed things about this, but no that does make sense, it was something I read a many years back when using Wordpress.
  • Planned sunset of NTFY plugin

    Pinned Announcements push nodebb ntfy
    7
    1
    8 Votes
    7 Posts
    4k Views
    phenomlab
    I’ve noticed that I’m the only one subscribed to the push notifications on this site. If you were using NTFY previously, and have noticed that you’ve not had any alerts for a while, it’s because this feature has been disabled. You’ll now need to use the push notification to replace NTFY as mentioned in the first post.
  • ANNOUNCEMENT: Social Login Changes

    Announcements openid oauth
    4
    1
    6 Votes
    4 Posts
    2k Views
    phenomlab
    @DownPW Always looking for ways to improve the overall experience.
  • ANNOUCEMENT: New NTFY Server

    Announcements ntfy push alerts
    9
    1
    7 Votes
    9 Posts
    3k Views
    phenomlab
    @crazycells that’s as good a test as any
  • Theme retirement

    Announcements themes switcher
    21
    16 Votes
    21 Posts
    9k Views
    phenomlab
    I relented somewhat here and added another swatch - one I missed, which was previous called “blackout”. This specific one has been adapted to work on the new theming engine, but the others have been reclassified, and renamed to suit. [image: image.png] As a result, the theme you might have had will probably be reflecting something else, so you (might) need to change your themes accordingly. The changes are as follows Light -> No Change Cloudy -> Is now the old “Dim” Dim -> Is now the old “Dark” Dark -> Now a new theme based on the revamped “Blackout”
  • Clustering for NodeBB enabled

    Announcements cluster
    22
    1
    16 Votes
    22 Posts
    8k Views
    phenomlab
    @Madchatthew True. I think this is the reason as to why most Open Source projects are abandoned because they are not sustainable in the long-term.
  • Fancybox now used for image handling

    Announcements fancybox
    16
    6 Votes
    16 Posts
    6k Views
    dave1904
    And it seems to be less conflicting!