Skip to content
  • 0 Votes
    18 Posts
    0 Views
    jupiter_rowland@hub.netzgemeinde.euJ
    @Stefan Bohacek @jdp23 @julian "Shadow mentioning" is a thing. (streams) and Forte do it to avoid clutter. Mentions don't have to be visible in a post/comment to work.
  • 0 Votes
    5 Posts
    0 Views
    scott@authorship.studioS
    Interesting. I received a repeat notification from @ActivityPub on my last comment. I suppose that is how you are acknowledging that my post was sent to people following that category. I like it.
  • 0 Votes
    9 Posts
    0 Views
    D
    To be fair I have this cool software I'm working on that helps me answer that question immediately
  • 0 Votes
    8 Posts
    0 Views
    caesar@community.nodebb.orgC
    Ok, found the problem. It only works with the privilege guests / View Users enabled. I had fediverse / View Users enabled anyway but that wasn't enough. I'm not sure if that's intended? I guess it makes sense in principle…
  • 0 Votes
    19 Posts
    1 Views
    S
    @Julian I filtered out the null names and the upgrade went through: "use strict"; const db = require("../../database"); const meta = require("../../meta"); const categories = require("../../categories"); const slugify = require("../../slugify"); module.exports = { name: "Setting up default configs/privileges re: ActivityPub", timestamp: Date.UTC(2024, 1, 22), method: async () => { // Disable ActivityPub (upgraded installs have to opt-in to AP) meta.configs.set("activitypubEnabled", 0); // Set default privileges for world category const install = require("../../install"); await install.giveWorldPrivileges(); // Run through all categories and ensure their slugs are unique (incl. users/groups too) const cids = await db.getSortedSetMembers("categories:cid"); const names = await db.getObjectsFields( cids.map((cid) => `category:${cid}`), cids.map(() => "name"), ); const nullIndexes = names .map((element, index) => (element["name"] === null ? index : -1)) // mark null elements .filter((index) => index !== -1); let filteredNames = names.filter(element => element["name"] !== null); let filteredCids = cids.filter((_, index) => !nullIndexes.includes(index)); const handles = await Promise.all( filteredCids.map(async (cid, idx) => { const { name } = filteredNames[idx]; const handle = await categories.generateHandle(slugify(name)); return handle; }), ); await Promise.all([ db.setObjectBulk( filteredCids.map((cid, idx) => [`category:${cid}`, { handle: handles[idx] }]), ), db.sortedSetAdd("categoryhandle:cid", filteredCids, handles), ]); }, };
  • 0 Votes
    9 Posts
    6 Views
    antonio5609@socialhub.activitypub.rocksA
    Hi,I think It would be helpful to include examples of common use cases for ActivityPub integration in NodeBB detailed setup instructions with screenshots and troubleshooting tips for potential issues users might encounter. Additionally a FAQ section addressing common questions could be valuable.Thanks
  • 0 Votes
    1 Posts
    7 Views
    No one has replied
  • 0 Votes
    2 Posts
    10 Views
    beaware@social.beaware.liveB
    @julian nice! I love reading your progress posts. Always excited for new AP implementations and seeing how each dev handles things once it's done.I'm obviously not a dev myself, but I really admire your work.
  • 0 Votes
    1 Posts
    7 Views
    No one has replied
  • 0 Votes
    6 Posts
    20 Views
    beaware@social.beaware.liveB
    @julian that's a good point. I feel it'd mostly be better for integration with Lemmy/Kbin type systems that mimic forums.
  • 0 Votes
    2 Posts
    11 Views
    julian@community.nodebb.orgJ
    Technical stuff ahead ... This is merely exposing the frontend UI to the already established backend logic. We have two methods internally that are used for this: Notes.assert, which when given a object url or id, parses it and attempts to resolve the parent chain all the way to the top-level post. It then creates a topic to house all of those posts. Actors.assert, which when given an object url, id, or handle, creates a local representation of the user. How come "query"/etc. didn't show up? For both user and post searching, if the passed-in url does not resolve or does not resolve to a processable object, then we do not proceed. It's important to realize that while in an ideal world, we'd all be passing immutable identifiers everywhere, the real world is just a bit messier. Search queries could be a post or user URL, or a webfinger handle, so additional logic was required to handle those use cases. Most ActivityPub-enabled software I've encountered handle these vanity URLs when queried via ActivityPub — it returns the appropriate representation for processing. Some do not, and so in those cases, those items will not show up in the search results.