Jump to content

Generic Edit Framework GenericItemList Treating URLs undesirably


Recommended Posts

ginjaninja
Posted (edited)

4.9.1.90

I have a button in UI.cs defined such

        public GenericItemList ScheduledTaskLink { get; set; } = new GenericItemList
{
    new GenericListItem
    {
        PrimaryText   = "Configure Scheduled Task",
        SecondaryText = "Manage execution intervals and triggers for this plugin",
        HyperLink     = "#!/scheduledtasks"
    }

i set the hyperlink in  the View.cs with the worker id

When i hover over the GenericItemList i get

http://192.168.4.162:8096/web/index.html#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa (correct)

(i can copy that manually and paste into address bar, its all good)

but when i click i get something invalid with an extra index.html/

http://192.168.4.162:8096/web/index.html#!/index.html/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa

 

My goal is to have a nice looking button that takes me to the tasks config page, any ideas why the two controls are treated differently for the same hyperlink?

 

thanks

Edited by ginjaninja
ginjaninja
Posted (edited)

This is a snippet from the configuration page response
 "ScheduledTaskLink": [
                {
                    "IconMode": "LargeInCircle",
                    "Status": "Unavailable",
                    "PrimaryText": "Configure Scheduled Task",
                    "SecondaryText": "Manage execution intervals and triggers for this plugin",
                    "ShowSecondaryFirst": false,
                    "HasPercentage": false,
                    "PercentComplete": 0,
                    "HyperLink": "#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa",
                    "HyperLinkTargetExternal": false
                }
            ],

this is google response helping me analyse the browser, got to be honest i dont know if slop or not
 

markdown
### Bug Report: GenericEdit GenericListItem HyperLink Path Corruption in emby-linkbutton / Page.js

#### Steps to Reproduce
1. Create a GenericListItem inside a GenericEdit panel config screen layout.
2. Supply a standard hash-bang route payload to the HyperLink property block.

#### Step 1: Raw JSON Payload Evidence (Network Tab Response)
The server code populates the item data layout correctly. The raw network transmission string is entirely clean:
"ScheduledTaskLink": [
    {
        "PrimaryText": "Configure Scheduled Task",
        "HyperLink": "#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa"
    }
]

#### Step 2: Rendered DOM State Evidence (Elements Tab)
The frontend framework successfully handles the property mapping and renders a standard HTML anchor extension structure:
<a is="emby-linkbutton" class="..." href="/web/index.html#!/scheduledtask?id=fdd2f33a4070897a6b3df1bb84b5c2aa" id="ScheduledTaskLink.listitem0">

#### Step 3: Click Navigation Mutation (The Bug Context)
When clicked, the emby-linkbutton component executes its click listener, bypassing native link processing and passing execution directly to the base Page.js instance:
`appRouter.handleAnchorClick = _page.default.handleAnchorClick`

Because the client application sits on the file path `/web/index.html`, Page.js parses the href against the window context and mistakenly treats `index.html` as an active directory path component folder rather than a file. It pushes an extra `index.html/` text segment straight into the active routing token address space:

 

FWIW i tried HyperLinkTargetExternal=true , just in case but it seems thats not available yet? devs are already aware?

 

Edited by ginjaninja

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...