Skip to content

Interesting Widget code, but can't fetch API

Solved Customisation
26 2 10.9k 1
  • @Panda can you provide the actual code here?

    wrote on last edited by
    #3
  • wrote on last edited by
    #4

    @Panda are there any errors in the browser console?

  • @Panda are there any errors in the browser console?

    wrote on last edited by Panda
    #5

    @phenomlab
    Unfortunately cant check, as in France, on mobile.
    Ive tried a few methods to view console in mobile browser but none have ever worked!
    Maybe you can look?
    https://aignite.nodebb.com/category/10/3d
    You will see it returns much more quickly than that code normally would, but doesn’t return with error code

  • @phenomlab
    Unfortunately cant check, as in France, on mobile.
    Ive tried a few methods to view console in mobile browser but none have ever worked!
    Maybe you can look?
    https://aignite.nodebb.com/category/10/3d
    You will see it returns much more quickly than that code normally would, but doesn’t return with error code

    wrote on last edited by
    #6

    @Panda looking at the code, it fires an alert prompt asking for a parameter to be entered. This script requires interaction, so that it why it returns immediately with nothing.

    The widget is executing the script, but without a response, it returns null.

  • @Panda looking at the code, it fires an alert prompt asking for a parameter to be entered. This script requires interaction, so that it why it returns immediately with nothing.

    The widget is executing the script, but without a response, it returns null.

    wrote on last edited by Panda
    #7

    @phenomlab
    Dont think its any problem with that flow, because the prompt comes first

    var promp holds the entered string, and thats used in the octo() function which calls the API
    It works as stand alone code

    Are you saying the prompt command wont stop the code flow like it would outside of a widget?

  • @phenomlab
    Dont think its any problem with that flow, because the prompt comes first

    var promp holds the entered string, and thats used in the octo() function which calls the API
    It works as stand alone code

    Are you saying the prompt command wont stop the code flow like it would outside of a widget?

    wrote on last edited by
    #8

    @Panda said in Interesting Widget code, but can’t fetch API:

    Dont think its any problem with that flow, because the prompt comes first

    That’s correct, but the prompt is interactive in the sense that it waits for user input.

    fetch('https://stable-diffusion-demo-8yn9n69web73.octoai.cloud/predict', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${apiKey}`
      },
      body: JSON.stringify({
        'prompt': promp,
      // 'num_inference_steps': '30',
        'sheduler': 'DPMSolverMultistep'
      })
    })
    

    As you can see from above, the original promp value is passed to the JSON function. As that value is never entered, the value is returned NULL.

  • @Panda said in Interesting Widget code, but can’t fetch API:

    Dont think its any problem with that flow, because the prompt comes first

    That’s correct, but the prompt is interactive in the sense that it waits for user input.

    fetch('https://stable-diffusion-demo-8yn9n69web73.octoai.cloud/predict', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${apiKey}`
      },
      body: JSON.stringify({
        'prompt': promp,
      // 'num_inference_steps': '30',
        'sheduler': 'DPMSolverMultistep'
      })
    })
    

    As you can see from above, the original promp value is passed to the JSON function. As that value is never entered, the value is returned NULL.

    wrote on last edited by Panda
    #9

    @phenomlab
    There may be some confusion here as descriptions to AI art generators are called prompts. So that ‘prompt’ value in Json body is set to my variable promp.

    promp is set by a JS prompt command at the bottom of the code. Its a global variable so available to the octo() function when called.

    Function octo() has the API fetch, comes after the prompt is entered

    Screenshot_20230625_011227_Chrome~2.jpg

  • @phenomlab
    There may be some confusion here as descriptions to AI art generators are called prompts. So that ‘prompt’ value in Json body is set to my variable promp.

    promp is set by a JS prompt command at the bottom of the code. Its a global variable so available to the octo() function when called.

    Function octo() has the API fetch, comes after the prompt is entered

    Screenshot_20230625_011227_Chrome~2.jpg

    wrote on last edited by phenomlab
    #10

    @Panda yes, but if you run the code directly in the browser a popup prompt asks for a value and won’t proceed until one is provided.

  • @Panda yes, but if you run the code directly in the browser a popup prompt asks for a value and won’t proceed until one is provided.

    wrote on last edited by Panda
    #11

    @phenomlab yes exactly, and why would it be any different in a widget?
    The JS prompt command is async so will halt the flow till value is entered?

  • @phenomlab yes exactly, and why would it be any different in a widget?
    The JS prompt command is async so will halt the flow till value is entered?

    wrote on last edited by
    #12

    @Panda it’s not. If I visit the page you sent me, the popup appears, but no image is returned. This is why I need the console error as there will be one.

  • @Panda it’s not. If I visit the page you sent me, the popup appears, but no image is returned. This is why I need the console error as there will be one.

    wrote on last edited by
    #13

    @phenomlab ah you mean the nodebb console log, not browser inspect console?
    Its nodebb hosted, can you view if you login?

  • @phenomlab ah you mean the nodebb console log, not browser inspect console?
    Its nodebb hosted, can you view if you login?

    wrote on last edited by
    #14

    @Panda no, the browser console. There is likely a JS error there I need to see.

  • @Panda no, the browser console. There is likely a JS error there I need to see.

    wrote on last edited by
    #15

    @phenomlab
    I sent link to the aignite.nodebb.com forum above, its on 3d category
    Incidentally a blank prompt string will still generate a random image, so the problems not with the input

  • @phenomlab
    I sent link to the aignite.nodebb.com forum above, its on 3d category
    Incidentally a blank prompt string will still generate a random image, so the problems not with the input

    wrote on last edited by
    #16

    @Panda yes, but you are missing the point here. I need to see the output of the browser console or at least insert something like the below to return it

    alert(console.log)

    It’s 1:17am here and I’m not in front of a PC, but will check tomorrow.

  • @Panda yes, but you are missing the point here. I need to see the output of the browser console or at least insert something like the below to return it

    alert(console.log)

    It’s 1:17am here and I’m not in front of a PC, but will check tomorrow.

    wrote on last edited by
    #17

    To eliminate any confusion I made a simpler widget which just does hardcoded API call for image of a cat. No user input etc
    Again it runs stand alone, but returns quickly, empty, as a widget
    This example sits on aignite.nodebb.com category 8 (‘Diamond’)
    First example is still in category 10 (‘3d’)

  • To eliminate any confusion I made a simpler widget which just does hardcoded API call for image of a cat. No user input etc
    Again it runs stand alone, but returns quickly, empty, as a widget
    This example sits on aignite.nodebb.com category 8 (‘Diamond’)
    First example is still in category 10 (‘3d’)

    wrote on last edited by phenomlab
    #18

    @Panda the result=undefined says it all. It still returns null and we need to see the error in the browser console.

  • To eliminate any confusion I made a simpler widget which just does hardcoded API call for image of a cat. No user input etc
    Again it runs stand alone, but returns quickly, empty, as a widget
    This example sits on aignite.nodebb.com category 8 (‘Diamond’)
    First example is still in category 10 (‘3d’)

    wrote on last edited by phenomlab
    #19

    @Panda Just looking at this, and it seems that the service expects authentication

    49e50e3b-9744-49ef-b524-197f00c07c0b-image.png

    I also see the below in the console

    Failed to load resource: the server responded with a status of 401 (Unauthorized)
    GET data:image/png;base64,undefined net::ERR_INVALID_URL
    {"code":401,"message":"error occurred during proxy authentication: no token in request"}
    
  • wrote on last edited by
    #20

    Yes. There is a key included and the exact code works as stand-alone, thats why Im wonderinging why not working in a widget

  • Yes. There is a key included and the exact code works as stand-alone, thats why Im wonderinging why not working in a widget

    wrote on last edited by
    #21

    @Panda I think this might have something to do with the reverse proxy that nginx runs for NodeBB. Do you use this, or are you using something else?

  • @Panda I think this might have something to do with the reverse proxy that nginx runs for NodeBB. Do you use this, or are you using something else?

    wrote on last edited by
    #22

    @phenomlab ah! Its nodebb hosted site, so they do all that

  • Panda Panda has marked this topic as solved on

Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee ☕
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • NodeBB recent cards customisation

    Solved Customisation nodebb recent cards
    3
    1
    2 Votes
    3 Posts
    1k Views
    JAC
    @phenomlab thank you very much for the assistance Mark, massively appreciated as always. The great thing about this is it’s all documented for other NodeBB users that come looking for solutions . Looks far better .
  • how to hide "moved" badge with CSS?

    Solved Customisation nodebb
    12
    1
    3 Votes
    12 Posts
    4k Views
    phenomlab
    @crazycells ah, I see. That makes sense.
  • Removing blue 'moved' tag from post

    Solved Configure nodebb
    16
    2
    3 Votes
    16 Posts
    5k Views
    Panda
    @phenomlab Ah, got it working! I reversed the CSS addition to put z index high, and then I could see another error box saying fork title must be at least 3 characters. So made the new fork title longer and button responded.
  • Where are widgets stored?

    Solved Configure nodebb
    3
    1 Votes
    3 Posts
    1k Views
    Panda
    @phenomlab Thanks, have DMed you
  • Q&A Plugin Changes NodeBB

    Solved Customisation nodebb q&a plugin
    25
    1
    6 Votes
    25 Posts
    11k Views
    cagatay
    @phenomlab said in Q&A Plugin Changes NodeBB: float: right; left: 10px; } worked thank you
  • Title on homepage of nodebb forum

    Solved Customisation nodebb
    2
    1 Votes
    2 Posts
    2k Views
    phenomlab
    @eveh Welcome board The code you are referring to is custom written as no such functionality exists under NodeBB. However, adding the functionality is relatively trivial. Below are the required steps Navigate to /admin/appearance/customise#custom-header Add the below code to your header, and save once completed <ol id="mainbanner" class="breadcrumb"><li id="addtext">Your Title Goes Here</li></ol> Navigate to /admin/appearance/customise#custom-js and add the below code, then save $(document).ready(function() { $(window).on('action:ajaxify.end', function(data) { // Initialise mainbanner ID, but hide it from view $('#mainbanner').hide(); var pathname = window.location.pathname; if (pathname === "/") { $("#addtext").text("Your Title"); $('#mainbanner').show(); } else {} // If we want to add a title to a sub page, uncomment the below and adjust accordingly //if (pathname === "/yourpath") { //$("#addtext").text("Your Title"); //$('#mainbanner').show(); //} }); }); Navigate to /admin/appearance/customise#custom-css and add the below CSS block .breadcrumb { right: 0; margin-right: auto; text-align: center; background: #0086c4; color: #ffffff; width: 100vw; position: relative; margin-left: -50vw; left: 50%; top: 50px; position: fixed; z-index: 1020; } Note, that you will need to adjust your CSS code to suit your own site / requirements.
  • answers appearance css code request

    Solved Customisation css answers
    11
    1
    1 Votes
    11 Posts
    4k Views
    phenomlab
    @DownPW yes, because of the modifications that Sudonix uses, you’ll need to tailor to fit your needs.
  • background color of the footer area

    Solved Customisation nodebb
    7
    1
    7 Votes
    7 Posts
    4k Views
    crazycells
    @phenomlab thank you very much