summaryrefslogtreecommitdiff
path: root/packages/backend/src/server
diff options
context:
space:
mode:
authorMar0xy <marie@kaifa.ch>2023-10-29 02:06:19 +0200
committerMar0xy <marie@kaifa.ch>2023-10-29 02:06:19 +0200
commit43f27a639fb75c9e4ccc8bea02eaf83382b93ea1 (patch)
tree7acb464fe865339a51ebae322f580ed2b7699c60 /packages/backend/src/server
parentfix: lockfile (diff)
downloadsharkey-43f27a639fb75c9e4ccc8bea02eaf83382b93ea1.tar.gz
sharkey-43f27a639fb75c9e4ccc8bea02eaf83382b93ea1.tar.bz2
sharkey-43f27a639fb75c9e4ccc8bea02eaf83382b93ea1.zip
upd: simplify importing of mastoconverter, fix bug
Lets you import stuff into mastoconverter without needing to also import them everywhere else Fixes not being able to get statuses on accounts
Diffstat (limited to 'packages/backend/src/server')
-rw-r--r--packages/backend/src/server/ServerModule.ts2
-rw-r--r--packages/backend/src/server/api/mastodon/MastodonApiServerService.ts41
-rw-r--r--packages/backend/src/server/api/mastodon/converters.ts26
-rw-r--r--packages/backend/src/server/api/mastodon/endpoints/account.ts16
-rw-r--r--packages/backend/src/server/api/mastodon/endpoints/status.ts4
-rw-r--r--packages/backend/src/server/api/mastodon/endpoints/timeline.ts4
6 files changed, 39 insertions, 54 deletions
diff --git a/packages/backend/src/server/ServerModule.ts b/packages/backend/src/server/ServerModule.ts
index fc6f019602..fc5eece01f 100644
--- a/packages/backend/src/server/ServerModule.ts
+++ b/packages/backend/src/server/ServerModule.ts
@@ -23,6 +23,7 @@ import { SigninService } from './api/SigninService.js';
import { SignupApiService } from './api/SignupApiService.js';
import { StreamingApiServerService } from './api/StreamingApiServerService.js';
import { ClientServerService } from './web/ClientServerService.js';
+import { MastoConverters } from './api/mastodon/converters.js';
import { FeedService } from './web/FeedService.js';
import { UrlPreviewService } from './web/UrlPreviewService.js';
import { MainChannelService } from './api/stream/channels/main.js';
@@ -87,6 +88,7 @@ import { OAuth2ProviderService } from './oauth/OAuth2ProviderService.js';
OpenApiServerService,
MastodonApiServerService,
OAuth2ProviderService,
+ MastoConverters,
],
exports: [
ServerService,
diff --git a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
index 9a2890f507..13cf45368d 100644
--- a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
+++ b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
@@ -8,7 +8,7 @@ import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import type { Config } from '@/config.js';
import { MetaService } from '@/core/MetaService.js';
-import { convertAccount, convertAnnouncement, convertFilter, convertAttachment, convertFeaturedTag, convertList } from './converters.js';
+import { convertAccount, convertAnnouncement, convertFilter, convertAttachment, convertFeaturedTag, convertList, MastoConverters } from './converters.js';
import { getInstance } from './endpoints/meta.js';
import { ApiAuthMastodon, ApiAccountMastodon, ApiFilterMastodon, ApiNotifyMastodon, ApiSearchMastodon, ApiTimelineMastodon, ApiStatusMastodon } from './endpoints.js';
import type { FastifyInstance, FastifyPluginOptions } from 'fastify';
@@ -37,6 +37,7 @@ export class MastodonApiServerService {
private config: Config,
private metaService: MetaService,
private userEntityService: UserEntityService,
+ private mastoConverter: MastoConverters,
) { }
@bindThis
@@ -236,7 +237,7 @@ export class MastodonApiServerService {
const client = getClient(BASE_URL, accessTokens); // we are using this here, because in private mode some info isnt
// displayed without being logged in
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.verifyCredentials());
} catch (e: any) {
/* console.error(e); */
@@ -286,7 +287,7 @@ export class MastodonApiServerService {
ids = [ids];
}
users = ids;
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getRelationships(users));
} catch (e: any) {
/* console.error(e); */
@@ -319,7 +320,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getStatuses());
} catch (e: any) {
/* console.error(e);
@@ -347,7 +348,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getFollowers());
} catch (e: any) {
/* console.error(e);
@@ -361,7 +362,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getFollowing());
} catch (e: any) {
/* console.error(e);
@@ -389,7 +390,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.addFollow());
} catch (e: any) {
/* console.error(e);
@@ -403,7 +404,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.rmFollow());
} catch (e: any) {
/* console.error(e);
@@ -417,7 +418,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.addBlock());
} catch (e: any) {
/* console.error(e);
@@ -431,7 +432,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.rmBlock());
} catch (e: any) {
/* console.error(e);
@@ -445,7 +446,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.addMute());
} catch (e: any) {
/* console.error(e);
@@ -459,7 +460,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.rmMute());
} catch (e: any) {
/* console.error(e);
@@ -487,7 +488,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getBookmarks());
} catch (e: any) {
/* console.error(e);
@@ -501,7 +502,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getFavourites());
} catch (e: any) {
/* console.error(e);
@@ -515,7 +516,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getMutes());
} catch (e: any) {
/* console.error(e);
@@ -529,7 +530,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.getBlocks());
} catch (e: any) {
/* console.error(e);
@@ -557,7 +558,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.acceptFollow());
} catch (e: any) {
/* console.error(e);
@@ -571,7 +572,7 @@ export class MastodonApiServerService {
const accessTokens = _request.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const account = new ApiAccountMastodon(_request, client, BASE_URL, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const account = new ApiAccountMastodon(_request, client, BASE_URL, this.mastoConverter);
reply.send(await account.rejectFollow());
} catch (e: any) {
/* console.error(e);
@@ -756,7 +757,7 @@ export class MastodonApiServerService {
//#endregion
//#region Timelines
- const TLEndpoint = new ApiTimelineMastodon(fastify, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const TLEndpoint = new ApiTimelineMastodon(fastify, this.config, this.mastoConverter);
// GET Endpoints
TLEndpoint.getTL();
@@ -781,7 +782,7 @@ export class MastodonApiServerService {
//#endregion
//#region Status
- const NoteEndpoint = new ApiStatusMastodon(fastify, this.config, this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
+ const NoteEndpoint = new ApiStatusMastodon(fastify, this.mastoConverter);
// GET Endpoints
NoteEndpoint.getStatus();
diff --git a/packages/backend/src/server/api/mastodon/converters.ts b/packages/backend/src/server/api/mastodon/converters.ts
index a839145609..6019b825e6 100644
--- a/packages/backend/src/server/api/mastodon/converters.ts
+++ b/packages/backend/src/server/api/mastodon/converters.ts
@@ -1,7 +1,7 @@
import type { Config } from '@/config.js';
import { MfmService } from '@/core/MfmService.js';
import { DI } from '@/di-symbols.js';
-import { Inject } from '@nestjs/common';
+import { Inject, Injectable } from '@nestjs/common';
import { Entity } from 'megalodon';
import mfm from 'mfm-js';
import { GetterService } from '../GetterService.js';
@@ -25,27 +25,15 @@ export const escapeMFM = (text: string): string => text
.replace(/`/g, "&#x60;")
.replace(/\r?\n/g, "<br>");
+@Injectable()
export class MastoConverters {
- private MfmService: MfmService;
- private GetterService: GetterService;
-
constructor(
@Inject(DI.config)
private config: Config,
- @Inject(DI.usersRepository)
- private usersRepository: UsersRepository,
-
- @Inject(DI.notesRepository)
- private notesRepository: NotesRepository,
-
- @Inject(DI.noteEditRepository)
- private noteEditRepository: NoteEditRepository,
-
- private userEntityService: UserEntityService
+ private mfmService: MfmService,
+ private getterService: GetterService,
) {
- this.MfmService = new MfmService(this.config);
- this.GetterService = new GetterService(this.usersRepository, this.notesRepository, this.noteEditRepository, this.userEntityService);
}
private encode(u: MiUser, m: IMentionedRemoteUsers): Entity.Mention {
@@ -67,7 +55,7 @@ export class MastoConverters {
}
public async getUser(id: string): Promise<MiUser> {
- return this.GetterService.getUser(id).then(p => {
+ return this.getterService.getUser(id).then(p => {
return p;
});
}
@@ -100,7 +88,7 @@ export class MastoConverters {
public async convertStatus(status: Entity.Status) {
const convertedAccount = this.convertAccount(status.account);
- const note = await this.GetterService.getNote(status.id);
+ const note = await this.getterService.getNote(status.id);
const mentions = Promise.all(note.mentions.map(p =>
this.getUser(p)
@@ -109,7 +97,7 @@ export class MastoConverters {
.then(p => p.filter(m => m)) as Promise<Entity.Mention[]>;
const content = note.text !== null
- ? this.MfmService.toMastoHtml(mfm.parse(note.text!), JSON.parse(note.mentionedRemoteUsers), false, null)
+ ? this.mfmService.toMastoHtml(mfm.parse(note.text!), JSON.parse(note.mentionedRemoteUsers), false, null)
.then(p => p ?? escapeMFM(note.text!))
: '';
diff --git a/packages/backend/src/server/api/mastodon/endpoints/account.ts b/packages/backend/src/server/api/mastodon/endpoints/account.ts
index 802f1f5a67..f2525c723f 100644
--- a/packages/backend/src/server/api/mastodon/endpoints/account.ts
+++ b/packages/backend/src/server/api/mastodon/endpoints/account.ts
@@ -5,6 +5,7 @@ import type { FastifyRequest } from 'fastify';
import { NoteEditRepository, NotesRepository, UsersRepository } from '@/models/_.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import type { Config } from '@/config.js';
+import { Injectable } from '@nestjs/common';
const relationshipModel = {
id: '',
@@ -23,23 +24,16 @@ const relationshipModel = {
note: '',
};
+@Injectable()
export class ApiAccountMastodon {
private request: FastifyRequest;
private client: MegalodonInterface;
private BASE_URL: string;
- private mastoconverter: MastoConverters;
- constructor(request: FastifyRequest, client: MegalodonInterface, BASE_URL: string,
- config: Config,
- usersrepo: UsersRepository,
- notesrepo: NotesRepository,
- noteeditrepo: NoteEditRepository,
- userentity: UserEntityService,
- ) {
+ constructor(request: FastifyRequest, client: MegalodonInterface, BASE_URL: string, private mastoconverter: MastoConverters) {
this.request = request;
this.client = client;
this.BASE_URL = BASE_URL;
- this.mastoconverter = new MastoConverters(config, usersrepo, notesrepo, noteeditrepo, userentity);
}
public async verifyCredentials() {
@@ -104,7 +98,9 @@ export class ApiAccountMastodon {
public async getStatuses() {
try {
const data = await this.client.getAccountStatuses((this.request.params as any).id, argsToBools(limitToInt(this.request.query as any)));
- return data.data.map((status) => this.mastoconverter.convertStatus(status));
+ const a = await Promise.all(data.data.map(async (status) => await this.mastoconverter.convertStatus(status)));
+ console.error(a);
+ return a;
} catch (e: any) {
console.error(e);
console.error(e.response.data);
diff --git a/packages/backend/src/server/api/mastodon/endpoints/status.ts b/packages/backend/src/server/api/mastodon/endpoints/status.ts
index a15e9761b4..294d38f200 100644
--- a/packages/backend/src/server/api/mastodon/endpoints/status.ts
+++ b/packages/backend/src/server/api/mastodon/endpoints/status.ts
@@ -18,9 +18,9 @@ export class ApiStatusMastodon {
private fastify: FastifyInstance;
private mastoconverter: MastoConverters;
- constructor(fastify: FastifyInstance, config: Config, usersrepo: UsersRepository, notesrepo: NotesRepository, noteeditrepo: NoteEditRepository, userentity: UserEntityService) {
+ constructor(fastify: FastifyInstance, mastoconverter: MastoConverters) {
this.fastify = fastify;
- this.mastoconverter = new MastoConverters(config, usersrepo, notesrepo, noteeditrepo, userentity);
+ this.mastoconverter = mastoconverter;
}
public async getStatus() {
diff --git a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts
index b1b487f394..152d4a7729 100644
--- a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts
+++ b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts
@@ -34,11 +34,9 @@ export function argsToBools(q: ParsedUrlQuery) {
export class ApiTimelineMastodon {
private fastify: FastifyInstance;
- private mastoconverter: MastoConverters;
- constructor(fastify: FastifyInstance, config: Config, usersRepository: UsersRepository, notesRepository: NotesRepository, noteEditRepository: NoteEditRepository, userEntityService: UserEntityService) {
+ constructor(fastify: FastifyInstance, config: Config, private mastoconverter: MastoConverters) {
this.fastify = fastify;
- this.mastoconverter = new MastoConverters(config, usersRepository, notesRepository, noteEditRepository, userEntityService);
}
public async getTL() {