summaryrefslogtreecommitdiff
path: root/packages/backend/src
diff options
context:
space:
mode:
authorMar0xy <marie@kaifa.ch>2023-10-30 01:32:48 +0100
committerMar0xy <marie@kaifa.ch>2023-10-30 01:32:48 +0100
commit81def9457bdf15a566d808dec63e344ee0ebc7d5 (patch)
tree697758b8f44656ec3dd54f19d68d88f39591acfe /packages/backend/src
parentupd: remove debug lines, fix header not being detected (diff)
downloadsharkey-81def9457bdf15a566d808dec63e344ee0ebc7d5.tar.gz
sharkey-81def9457bdf15a566d808dec63e344ee0ebc7d5.tar.bz2
sharkey-81def9457bdf15a566d808dec63e344ee0ebc7d5.zip
upd: allow updating of fields
Diffstat (limited to 'packages/backend/src')
-rw-r--r--packages/backend/src/server/api/mastodon/MastodonApiServerService.ts16
-rw-r--r--packages/backend/src/server/api/mastodon/endpoints/account.ts28
2 files changed, 27 insertions, 17 deletions
diff --git a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
index bdf3af0588..55e4615b91 100644
--- a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
+++ b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts
@@ -14,7 +14,6 @@ import { ApiAuthMastodon, ApiAccountMastodon, ApiFilterMastodon, ApiNotifyMastod
import type { FastifyInstance, FastifyPluginOptions } from 'fastify';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { DriveService } from '@/core/DriveService.js';
-import { toSingleLast } from '@/misc/prelude/array.js';
export function getClient(BASE_URL: string, authorization: string | undefined): MegalodonInterface {
const accessTokenArr = authorization?.split(' ') ?? [null];
@@ -256,6 +255,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 {
+ // Check if there is an Header or Avatar being uploaded, if there is proceed to upload it to the drive of the user and then set it.
if (_request.files.length > 0 && accessTokens) {
const tokeninfo = await this.accessTokensRepository.findOneBy({ token: accessTokens.replace('Bearer ', '') });
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -291,6 +291,20 @@ export class MastodonApiServerService {
}
}
}
+
+ if ((_request.body as any).fields_attributes) {
+ const fields = (_request.body as any).fields_attributes.map((field: any) => {
+ if (!(field.name.trim() === '' && field.value.trim() === '')) {
+ if (field.name.trim() === '') return reply.code(400).send('Field name can not be empty');
+ if (field.value.trim() === '') return reply.code(400).send('Field value can not be empty');
+ }
+ return {
+ ...field,
+ };
+ });
+ (_request.body as any).fields_attributes = fields.filter((field: any) => field.name.trim().length > 0 && field.value.length > 0);
+ }
+
const data = await client.updateCredentials(_request.body!);
reply.send(await this.mastoConverter.convertAccount(data.data));
} catch (e: any) {
diff --git a/packages/backend/src/server/api/mastodon/endpoints/account.ts b/packages/backend/src/server/api/mastodon/endpoints/account.ts
index 39da0e4a53..694879764b 100644
--- a/packages/backend/src/server/api/mastodon/endpoints/account.ts
+++ b/packages/backend/src/server/api/mastodon/endpoints/account.ts
@@ -39,22 +39,18 @@ export class ApiAccountMastodon {
public async verifyCredentials() {
try {
const data = await this.client.verifyAccountCredentials();
- const acct = data.data;
- acct.display_name = acct.display_name || acct.username;
- acct.url = `${this.BASE_URL}/@${acct.url}`;
- acct.note = acct.note || '';
- acct.avatar_static = acct.avatar;
- acct.header = acct.header || '/static-assets/transparent.png';
- acct.header_static = acct.header || '/static-assets/transparent.png';
- acct.source = {
- note: acct.note,
- fields: acct.fields,
- privacy: '',
- sensitive: false,
- language: '',
- };
- console.log(acct);
- return acct;
+ const acct = await this.mastoconverter.convertAccount(data.data);
+ const newAcct = Object.assign({}, acct, {
+ source: {
+ note: acct.note,
+ fields: acct.fields,
+ privacy: '',
+ sensitive: false,
+ language: '',
+ },
+ });
+ console.log(newAcct);
+ return newAcct;
} catch (e: any) {
/* console.error(e);
console.error(e.response.data); */