24

In September 2022, Bookmarks evolved into Saves. (See: Bookmarks have evolved into Saves)

Features of this evolution are the abilities to add private notes to a saved post, and to organise saved post into lists, both of which are quite useful.

But while both of these actions are easy to do, once they are done, the only way that you can view the private notes or check which list the post is saved in, is by finding the post in the saves tab on your profile page — you can't see these details on the post's page.


I often happen to come across a post that I have previously saved, but to find out the details I have to open a separate tab/window, and then find the post in the All saves list (or in one of various particular lists). Not only does this take a while (on the site that I use the most I have hundreds of items in about a dozen lists), but then the details are in a separate tab/window to the actual post.

Please add a box that shows what the private notes are, and which list a saved post is in, to the saved post's page.

This would make Saves much easier to make the most out of.


Mock-up

It could look like something like this:

mockup: saved post, showing (circled) below the post: which list it is in, and the private note below


To the aforementioned post, I left this answer which got lots of up-votes but no real response. I presume it just got lost in the 3 pages of answers — which is why I'm reposting it here.

2
  • 5
    Very nice to have, but considering not a single bug or request related to the evolved "Saves" was done yet, I wouldn't hold my breath. Commented Mar 2, 2023 at 9:16
  • 5
    +1 I was thinking for a similar idea. This will actually help users who organise the 'Saves'. E.g. "Saved in Power BI" etc. Also adding personal notes will help in understanding what to do the next time you visit the answer instead of adding a comment for the same.
    – Himanshu
    Commented Mar 2, 2023 at 12:33

1 Answer 1

4
+50

I would support this feature request, but… with everything that is happening at SE right now, I don't know if this would get done soon.

That said, it might be possible to do this with a userscript. Unfortunately, I don't see an obvious API path for it. Regardless, it's likely possible by looking at how the "real" Saves page gets them, and make a similar API call.

Having this feature could be useful for me, so I might further investigate making a userscript for this when I have a chance (if so, I’ll update this).


Update: Unfortunately, I don't see an API endpoint for Saves. We could request one on stackapps, but there isn't one now. Still, it's possible to fetch the saves by fetching the entire Saves page and parsing the DOM, and I show that below.

Warning: this fetches the DOM every time you load a page. A better approach is probably to cache it somehow, but this is a decent starting point if I (or someone else) finish it later.

// ==UserScript==
// @name         Saves Fetcher
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Script to fetch your saves list on MSE on questions pages
// @author       cocomac
// @match        https://meta.stackexchange.com/questions/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=stackexchange.com
// @grant        none
// ==/UserScript==

(() => {
    'use strict';
    $(() => {
        // figure out the user ID of the current user
        let uid = document.getElementsByClassName("s-user-card__small")[0].href.split('/')[4];

        // fetch the saves list for current user
        // sadly, API endpoint doesn't exist - fetch the whole page
        $.get(`https://meta.stackexchange.com/users/saves/${uid}`, (res) => {
            // parse the DOM
            let dom = new DOMParser().parseFromString(res, "text/html");

            // find the saves elements
            let targets = Array.from(dom.getElementsByClassName("js-saves-post-summary"));
            let savesNotes = [];
            targets.forEach((elem) => {
                // if it's a save that actually has a note attached
                if ($.trim(elem.children[1].children[4].outerText).length !== 0) {
                    // add it to the list
                    savesNotes.push(
                        {
                            "id": elem.id.split("-")[2],
                            "note": elem.children[1].children[4].outerText
                        }
                    )
                }
            });

            // log the list to the console
            console.log(savesNotes);
        });
    });
})();

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .