floccus icon indicating copy to clipboard operation
floccus copied to clipboard

Linkwarden updating a URL not working

Open Morethanevil opened this issue 1 year ago • 3 comments
trafficstars

Which version of floccus are you using?

5.3.0

How many bookmarks do you have, roughly?

150

Are you using other means to sync bookmarks in parallel to floccus?

No

Sync method

Linkwarden

Which browser are you using? In case you are using the phone App, specify the Android or iOS version and device please.

Firefox latest stable

Which version of Nextcloud Bookmarks are you using? (if relevant)

No response

Which version of Nextcloud? (if relevant)

No response

What kind of WebDAV server are you using? (if relevant)

No response

Describe the Bug

If you create a bookmark and later update its URL, it is not updated in Linkwarden. It still refers to the old URL. Sometimes URLs gets updated like in GitHub when the repo changes from private to organization, or you remove unnecessary parts of it like trackers etc...

I know it is not possible to edit URLs in Linkwarden too, but maybe this is something to worked on.

Expected Behavior

Update the URL or delete the old one and save the new one. Maybe moving the old one to an "archive" would be great.

To Reproduce

Create a bookmark, wait for Linkwarden to finish. Update the URL :)

Debug log provided

  • [ ] I have provided a debug log file

Morethanevil avatar Oct 08 '24 05:10 Morethanevil

Hello :wave:

Thank you for taking the time to open this issue with floccus. I know it's frustrating when software causes problems. You have made the right choice to come here and open an issue to make sure your problem gets looked at and if possible solved. I'm Marcel and I created floccus a few years ago, maintaining it ever since. I currently work for Nextcloud which leaves me with less time for side projects like this one than I used to have. I still try to answer all issues and if possible fix all bugs here, but it sometimes takes a while until I get to it. Until then, please be patient. Note also that GitHub is a place where people meet to make software better together. Nobody here is under any obligation to help you, solve your problems or deliver on any expectations or demands you may have, but if enough people come together we can collaborate to make this software better. For everyone. Thus, if you can, you could also have a look at other issues to see whether you can help other people with your knowledge and experience. If you have coding experience it would also be awesome if you could step up to dive into the code and try to fix the odd bug yourself. Everyone will be thankful for extra helping hands! To continue the development and maintenance of this project in a sustainable way it is expected that you donate to the project when opening a ticket, if you're not a donor already. You can find donation options at https://floccus.org/donate/. Thank you!

One last word: If you feel, at any point, like you need to vent, this is not the place for it; you can go to the Nextcloud forum, to twitter or somewhere else. But this is a technical issue tracker, so please make sure to focus on the tech and keep your opinions to yourself.

I look forward to working with you on this issue Cheers :blue_heart:

github-actions[bot] avatar Oct 08 '24 05:10 github-actions[bot]

Hey @Morethanevil Good news: In the upcoming Linkwarden release editing URLs will be supported

marcelklehr avatar Oct 09 '24 09:10 marcelklehr

Great news! :)

Will try out when released!

Morethanevil avatar Oct 09 '24 10:10 Morethanevil

Tried today with Linkwarden 2.8.0 and Floccus 5.3.3. Floccus syncs fine, but it does not update the URL in Linkwarden. No error message

Android app still gives me error message: "Failed to map parentid: 0" after a while

Morethanevil avatar Nov 13 '24 03:11 Morethanevil

Mmh, not even when you force a sync up?

The mapping failure on android is a known issue, which is likely unrelated.

marcelklehr avatar Nov 13 '24 08:11 marcelklehr

I changed an URL, then clicked on upload once, opened Linkwarden but still the old URL

Morethanevil avatar Nov 13 '24 09:11 Morethanevil

cc @daniel31x13 It seems that PUT to linkwarden with the new URL still doesn't work

marcelklehr avatar Nov 13 '24 09:11 marcelklehr

Strange, I even used Bruno to check the endpoints but it's working.

FYI here's what the schema looks like in Zod:

export const UpdateLinkSchema = z.object({
  id: z.number(),
  name: z.string().trim().max(2048).optional(),
  url: z.string().trim().max(2048).optional(),
  description: z.string().trim().max(2048).optional(),
  icon: z.string().trim().max(50).nullish(),
  iconWeight: z.string().trim().max(50).nullish(),
  color: z.string().trim().max(10).nullish(),
  collection: z.object({
    id: z.number(),
    ownerId: z.number(),
  }),
  tags: z.array(
    z.object({
      id: z.number().optional(),
      name: z.string().trim().max(50),
    })
  ),
  pinnedBy: z
    .array(
      z
        .object({
          id: z.number().optional(),
        })
        .optional()
    )
    .optional(),
});

https://github.com/linkwarden/linkwarden/blob/c8efd4f9db7b873f0d4b4e31bc1821b1dec91161/lib/shared/schemaValidation.ts#L118

daniel31x13 avatar Nov 14 '24 08:11 daniel31x13

@marcelklehr can you please provide the steps for using Floccus with Linkwarden on your site?

ghost avatar Nov 15 '24 09:11 ghost

@187622085 Ah, you mean publish a linkwarden guide? Yep, good point!

marcelklehr avatar Nov 15 '24 10:11 marcelklehr

This is the code for floccus:

https://github.com/floccusaddon/floccus/blob/develop/src/lib/adapters/Linkwarden.ts#L110-L126

    Logger.log('(linkwarden)UPDATE', {bookmark})
    const {response: collection} = await this.sendRequest('GET', `/api/v1/collections/${bookmark.parentId}`)
    await this.sendRequest(
      'PUT', `/api/v1/links/${bookmark.id}`,
      'application/json',
      {
        url: bookmark.url,
        name: bookmark.title,
        tags: [],
        collection: {
          id: bookmark.parentId,
          name: collection.name,
          ownerId: collection.ownerId,
        },
      })

It seems that I'm missing icon, iconWeight and color? Why doesn't it error though?

marcelklehr avatar Nov 15 '24 11:11 marcelklehr

@marcelklehr because they can be either null or undefined.

In zod:

  • nullable() means it can be null.
  • optional() means it can be undefined.
  • nullish() means it can be either null or undefined.

daniel31x13 avatar Nov 15 '24 11:11 daniel31x13

But then what am I doing wrong?

marcelklehr avatar Nov 15 '24 11:11 marcelklehr

@marcelklehr hmm, could you log the response of the following request as well:

await this.sendRequest(
      'PUT', `/api/v1/links/${bookmark.id}`,
      'application/json',
      {
        url: bookmark.url,
        name: bookmark.title,
        tags: [],
        collection: {
          id: bookmark.parentId,
          name: collection.name,
          ownerId: collection.ownerId,
        },
      })

It seems like link updates reflect correctly from the server to the browser but not vice versa. (It's not just the url field.)

daniel31x13 avatar Nov 16 '24 11:11 daniel31x13

Ah, I'm missing the id

marcelklehr avatar Nov 16 '24 12:11 marcelklehr

Should be fixed in v5.3.4

marcelklehr avatar Nov 18 '24 07:11 marcelklehr

@Morethanevil Can you confirm?

marcelklehr avatar Nov 18 '24 15:11 marcelklehr

@Morethanevil Can you confirm?

Yes works fine, tested with Linkwarden 2.8.3 and Floccus 5.3.4

Thanks! :)

Morethanevil avatar Nov 18 '24 16:11 Morethanevil

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

github-actions[bot] avatar Nov 19 '25 00:11 github-actions[bot]