Changes in src/routes/posts.js [d7e72b8:e9ec5e4] in Klonkt


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/posts.js

    rd7e72b8 re9ec5e4  
    12851285});
    12861286
     1287// ── Je volglijst meenemen ─────────────────────────────────────────
     1288//
     1289// Zonder dit was verhuizen halfslachtig: de Move vertelt je VOLGERS waar je heen
     1290// ging, maar niets vertelde JOU wie jij volgde. Die lijst stond alleen in de
     1291// database die je achterlaat.
     1292router.get('/news/following.csv', requireSiteManager, async (req, res) => {
     1293  const site = res.locals.site;
     1294  const { followingCsv } = await import('../services/ArchiveExportService.js');
     1295  const csv = site ? followingCsv(site.slug) : null;
     1296  if (!csv) return res.redirect('/following?error=' + encodeURIComponent('Je volgt nog niemand'));
     1297  res.set('Content-Type', 'text/csv; charset=utf-8');
     1298  res.set('Content-Disposition', `attachment; filename="following-${site.slug}.csv"`);
     1299  // Privé: dit is de lijst van wie jij volgt, niets voor een cache onderweg.
     1300  res.set('Cache-Control', 'private, no-store');
     1301  res.send(csv);
     1302});
     1303
     1304router.post('/news/following/import', requireSiteManager, express.urlencoded({ extended: false, limit: '256kb' }), async (req, res) => {
     1305  const site = res.locals.site;
     1306  const csv = (req.body && req.body.csv) || '';
     1307  if (!site || !String(csv).trim()) return res.redirect('/following?error=' + encodeURIComponent('Geen lijst ontvangen'));
     1308
     1309  const { importFollowing } = await import('../services/ArchiveImportService.js');
     1310  // followActor als followFn: die doet de webfinger, stuurt de Follow en zet
     1311  // auto_boost meteen goed. Zo blijft er één pad naar een volgrelatie.
     1312  const r = await importFollowing(site, csv, {
     1313    followFn: async (s, adres, uitgelicht) => {
     1314      const uit = await ActivityPubService.followActor(s, adres, !!uitgelicht);
     1315      // followActor meldt een fout als VELD, niet als exception. Zonder deze
     1316      // vertaling telde een onvindbaar account gewoon als geslaagd mee.
     1317      if (uit && uit.error) throw new Error(uit.error);
     1318      return true;
     1319    },
     1320  });
     1321
     1322  const delen = [`${r.gevolgd} gevolgd`];
     1323  if (r.overgeslagen) delen.push(`${r.overgeslagen} overgeslagen`);
     1324  if (r.mislukt.length) {
     1325    const namen = r.mislukt.slice(0, 3).map((m) => m.adres).join(', ');
     1326    delen.push(`${r.mislukt.length} mislukt (${namen}${r.mislukt.length > 3 ? '…' : ''})`);
     1327  }
     1328  res.redirect('/following?' + (r.mislukt.length ? 'error=' : 'success=') + encodeURIComponent(delen.join(', ')));
     1329});
     1330
    12871331router.post('/news/unfollow', requireSiteManager, async (req, res) => {
    12881332  const site = res.locals.site;
Note: See TracChangeset for help on using the changeset viewer.