Compare commits
No commits in common. "6123df0ebdc0c3eca63b1f4a943bd87dd1c4b53c" and "0569bc3e15e40a29d3922ae3d0abfc5f74a113f9" have entirely different histories.
6123df0ebd
...
0569bc3e15
3 changed files with 8 additions and 16 deletions
|
@ -1,5 +1,4 @@
|
|||
import cluster from 'node:cluster';
|
||||
import net from 'node:net';
|
||||
import Xev from 'xev';
|
||||
|
||||
import Logger from '@/services/logger.js';
|
||||
|
@ -26,8 +25,6 @@ export async function boot(): Promise<void> {
|
|||
process.title = `Foundkey (${process.env.mode})`;
|
||||
}
|
||||
|
||||
net.setDefaultAutoSelectFamily(true);
|
||||
|
||||
if (cluster.isPrimary || envOption.disableClustering) {
|
||||
await masterMain();
|
||||
|
||||
|
|
|
@ -319,14 +319,9 @@ export async function resolveNote(value: string | IObject, resolver: Resolver):
|
|||
throw new StatusError('cannot resolve local note', 400, 'cannot resolve local note');
|
||||
}
|
||||
|
||||
/*
|
||||
If the Note Object attached is specified here instead of uri
|
||||
after fetching from a remote server and registering, the note is
|
||||
generated without going through server fetch, but the attached
|
||||
Note Object may be spoofed, so always specify uri for server
|
||||
Therefore, server fetching is always performed by specifying uri.
|
||||
*/
|
||||
|
||||
// リモートサーバーからフェッチしてきて登録
|
||||
// ここでuriの代わりに添付されてきたNote Objectが指定されていると、サーバーフェッチを経ずにノートが生成されるが
|
||||
// 添付されてきたNote Objectは偽装されている可能性があるため、常にuriを指定してサーバーフェッチを行う。
|
||||
return await createNote(uri, resolver, true);
|
||||
} finally {
|
||||
unlock();
|
||||
|
|
|
@ -27,7 +27,7 @@ import { db } from '@/db/postgre.js';
|
|||
import { fromHtml } from '@/mfm/from-html.js';
|
||||
import { Resolver } from '@/remote/activitypub/resolver.js';
|
||||
import { apLogger } from '../logger.js';
|
||||
import { isCollectionOrOrderedCollection, isCollection, IActor, getApId, getOneApHrefNullable, IObject, isPropertyValue, getApType, isActor, isPost } from '../type.js';
|
||||
import { isCollectionOrOrderedCollection, isCollection, IActor, getApId, getOneApHrefNullable, IObject, isPropertyValue, getApType, isActor } from '../type.js';
|
||||
import { extractApHashtags, extractEmojis } from './tag.js';
|
||||
import { resolveNote } from './note.js';
|
||||
import { resolveImage } from './image.js';
|
||||
|
@ -459,17 +459,17 @@ async function updateFeatured(userId: User['id'], resolver: Resolver) {
|
|||
const unresolvedItems = isCollection(collection) ? collection.items : collection.orderedItems;
|
||||
const items = await Promise.all(toArray(unresolvedItems).map(x => resolver.resolve(x)));
|
||||
|
||||
// Resolve and register Notes
|
||||
// Resolve and regist Notes
|
||||
const limit = promiseLimit<Note | null>(2);
|
||||
const featuredNotes = await Promise.all(items
|
||||
.filter(item => isPost(item))
|
||||
.filter(item => getApType(item) === 'Note') // TODO: Noteでなくてもいいかも
|
||||
.slice(0, 5)
|
||||
.map(item => limit(() => resolveNote(item, resolver).catch(() => null))));
|
||||
.map(item => limit(() => resolveNote(item, resolver))));
|
||||
|
||||
await db.transaction(async transactionalEntityManager => {
|
||||
await transactionalEntityManager.delete(UserNotePining, { userId: user.id });
|
||||
|
||||
// TODO: For now, generate the id at a different time and maintain the order.
|
||||
// とりあえずidを別の時間で生成して順番を維持
|
||||
let td = 0;
|
||||
for (const note of featuredNotes.filter(note => note != null)) {
|
||||
td -= 1000;
|
||||
|
|
Loading…
Add table
Reference in a new issue