chore: formatting
This commit is contained in:
parent
9708170559
commit
ad969a28cc
17 changed files with 204 additions and 145 deletions
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "calckey",
|
||||
"version": "13.2.0-dev41",
|
||||
"version": "13.2.0-dev42",
|
||||
"codename": "aqua",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -10,7 +10,13 @@ import { renderPerson } from "@/remote/activitypub/renderer/person.js";
|
|||
import renderEmoji from "@/remote/activitypub/renderer/emoji.js";
|
||||
import { inbox as processInbox } from "@/queue/index.js";
|
||||
import { isSelfHost, toPuny } from "@/misc/convert-host.js";
|
||||
import { Notes, Users, Emojis, NoteReactions, FollowRequests } from "@/models/index.js";
|
||||
import {
|
||||
Notes,
|
||||
Users,
|
||||
Emojis,
|
||||
NoteReactions,
|
||||
FollowRequests,
|
||||
} from "@/models/index.js";
|
||||
import type { ILocalUser, User } from "@/models/entities/user.js";
|
||||
import { renderLike } from "@/remote/activitypub/renderer/like.js";
|
||||
import { getUserKeypair } from "@/misc/keypair-store.js";
|
||||
|
@ -330,40 +336,43 @@ router.get("/likes/:like", async (ctx) => {
|
|||
});
|
||||
|
||||
// follow
|
||||
router.get("/follows/:follower/:followee", async (ctx: Router.RouterContext) => {
|
||||
const verify = await checkFetch(ctx.req);
|
||||
if (verify !== 200) {
|
||||
ctx.status = verify;
|
||||
return;
|
||||
}
|
||||
// This may be used before the follow is completed, so we do not
|
||||
// check if the following exists.
|
||||
router.get(
|
||||
"/follows/:follower/:followee",
|
||||
async (ctx: Router.RouterContext) => {
|
||||
const verify = await checkFetch(ctx.req);
|
||||
if (verify !== 200) {
|
||||
ctx.status = verify;
|
||||
return;
|
||||
}
|
||||
// This may be used before the follow is completed, so we do not
|
||||
// check if the following exists.
|
||||
|
||||
const [follower, followee] = await Promise.all([
|
||||
Users.findOneBy({
|
||||
id: ctx.params.follower,
|
||||
host: IsNull(),
|
||||
}),
|
||||
Users.findOneBy({
|
||||
id: ctx.params.followee,
|
||||
host: Not(IsNull()),
|
||||
}),
|
||||
]);
|
||||
const [follower, followee] = await Promise.all([
|
||||
Users.findOneBy({
|
||||
id: ctx.params.follower,
|
||||
host: IsNull(),
|
||||
}),
|
||||
Users.findOneBy({
|
||||
id: ctx.params.followee,
|
||||
host: Not(IsNull()),
|
||||
}),
|
||||
]);
|
||||
|
||||
if (follower == null || followee == null) {
|
||||
ctx.status = 404;
|
||||
return;
|
||||
}
|
||||
if (follower == null || followee == null) {
|
||||
ctx.status = 404;
|
||||
return;
|
||||
}
|
||||
|
||||
ctx.body = renderActivity(renderFollow(follower, followee));
|
||||
const meta = await fetchMeta();
|
||||
if (meta.secureMode || meta.privateMode) {
|
||||
ctx.set("Cache-Control", "private, max-age=0, must-revalidate");
|
||||
} else {
|
||||
ctx.set("Cache-Control", "public, max-age=180");
|
||||
}
|
||||
setResponseType(ctx);
|
||||
});
|
||||
ctx.body = renderActivity(renderFollow(follower, followee));
|
||||
const meta = await fetchMeta();
|
||||
if (meta.secureMode || meta.privateMode) {
|
||||
ctx.set("Cache-Control", "private, max-age=0, must-revalidate");
|
||||
} else {
|
||||
ctx.set("Cache-Control", "public, max-age=180");
|
||||
}
|
||||
setResponseType(ctx);
|
||||
},
|
||||
);
|
||||
|
||||
// follow request
|
||||
router.get("/follows/:followRequestId", async (ctx: Router.RouterContext) => {
|
||||
|
|
|
@ -70,7 +70,9 @@ export function apiMastodonCompatible(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getInstanceAnnouncements();
|
||||
ctx.body = data.data.map(announcement => convertAnnouncement(announcement));
|
||||
ctx.body = data.data.map((announcement) =>
|
||||
convertAnnouncement(announcement),
|
||||
);
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
ctx.status = 401;
|
||||
|
@ -104,7 +106,7 @@ export function apiMastodonCompatible(router: Router): void {
|
|||
// displayed without being logged in
|
||||
try {
|
||||
const data = await client.getFilters();
|
||||
ctx.body = data.data.map(filter => convertFilter(filter));
|
||||
ctx.body = data.data.map((filter) => convertFilter(filter));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
ctx.status = 401;
|
||||
|
|
|
@ -6,11 +6,21 @@ function simpleConvert(data: any) {
|
|||
return data;
|
||||
}
|
||||
|
||||
export function convertAccount(account: Entity.Account) { return simpleConvert(account); }
|
||||
export function convertAnnouncement(announcement: Entity.Announcement) { return simpleConvert(announcement); }
|
||||
export function convertAttachment(attachment: Entity.Attachment) { return simpleConvert(attachment); }
|
||||
export function convertFilter(filter: Entity.Filter) { return simpleConvert(filter); }
|
||||
export function convertList(list: Entity.List) { return simpleConvert(list); }
|
||||
export function convertAccount(account: Entity.Account) {
|
||||
return simpleConvert(account);
|
||||
}
|
||||
export function convertAnnouncement(announcement: Entity.Announcement) {
|
||||
return simpleConvert(announcement);
|
||||
}
|
||||
export function convertAttachment(attachment: Entity.Attachment) {
|
||||
return simpleConvert(attachment);
|
||||
}
|
||||
export function convertFilter(filter: Entity.Filter) {
|
||||
return simpleConvert(filter);
|
||||
}
|
||||
export function convertList(list: Entity.List) {
|
||||
return simpleConvert(list);
|
||||
}
|
||||
|
||||
export function convertNotification(notification: Entity.Notification) {
|
||||
notification.account = convertAccount(notification.account);
|
||||
|
@ -20,25 +30,32 @@ export function convertNotification(notification: Entity.Notification) {
|
|||
return notification;
|
||||
}
|
||||
|
||||
export function convertPoll(poll: Entity.Poll) { return simpleConvert(poll); }
|
||||
export function convertRelationship(relationship: Entity.Relationship) { return simpleConvert(relationship); }
|
||||
export function convertPoll(poll: Entity.Poll) {
|
||||
return simpleConvert(poll);
|
||||
}
|
||||
export function convertRelationship(relationship: Entity.Relationship) {
|
||||
return simpleConvert(relationship);
|
||||
}
|
||||
|
||||
export function convertStatus(status: Entity.Status) {
|
||||
status.account = convertAccount(status.account);
|
||||
status.id = convertId(status.id, IdType.MastodonId);
|
||||
if (status.in_reply_to_account_id)
|
||||
status.in_reply_to_account_id = convertId(status.in_reply_to_account_id, IdType.MastodonId);
|
||||
status.in_reply_to_account_id = convertId(
|
||||
status.in_reply_to_account_id,
|
||||
IdType.MastodonId,
|
||||
);
|
||||
if (status.in_reply_to_id)
|
||||
status.in_reply_to_id = convertId(status.in_reply_to_id, IdType.MastodonId);
|
||||
status.media_attachments = status.media_attachments.map(attachment => convertAttachment(attachment));
|
||||
status.mentions = status.mentions.map(mention => ({
|
||||
status.media_attachments = status.media_attachments.map((attachment) =>
|
||||
convertAttachment(attachment),
|
||||
);
|
||||
status.mentions = status.mentions.map((mention) => ({
|
||||
...mention,
|
||||
id: convertId(mention.id, IdType.MastodonId),
|
||||
}));
|
||||
if (status.poll)
|
||||
status.poll = convertPoll(status.poll);
|
||||
if (status.reblog)
|
||||
status.reblog = convertStatus(status.reblog);
|
||||
if (status.poll) status.poll = convertPoll(status.poll);
|
||||
if (status.reblog) status.reblog = convertStatus(status.reblog);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,12 @@ import { FindOptionsWhere, IsNull } from "typeorm";
|
|||
import { getClient } from "../ApiMastodonCompatibleService.js";
|
||||
import { argsToBools, convertTimelinesArgsId, limitToInt } from "./timeline.js";
|
||||
import { convertId, IdType } from "../../index.js";
|
||||
import { convertAccount, convertList, convertRelationship, convertStatus } from "../converters.js";
|
||||
import {
|
||||
convertAccount,
|
||||
convertList,
|
||||
convertRelationship,
|
||||
convertStatus,
|
||||
} from "../converters.js";
|
||||
|
||||
const relationshipModel = {
|
||||
id: "",
|
||||
|
@ -112,7 +117,9 @@ export function apiAccountMastodon(router: Router): void {
|
|||
}
|
||||
|
||||
const data = await client.getRelationships(reqIds);
|
||||
ctx.body = data.data.map(relationship => convertRelationship(relationship));
|
||||
ctx.body = data.data.map((relationship) =>
|
||||
convertRelationship(relationship),
|
||||
);
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
let data = e.response.data;
|
||||
|
@ -148,7 +155,7 @@ export function apiAccountMastodon(router: Router): void {
|
|||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
convertTimelinesArgsId(argsToBools(limitToInt(ctx.query as any))),
|
||||
);
|
||||
ctx.body = data.data.map(status => convertStatus(status));
|
||||
ctx.body = data.data.map((status) => convertStatus(status));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -168,7 +175,7 @@ export function apiAccountMastodon(router: Router): void {
|
|||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
convertTimelinesArgsId(limitToInt(ctx.query as any)),
|
||||
);
|
||||
ctx.body = data.data.map(account => convertAccount(account));
|
||||
ctx.body = data.data.map((account) => convertAccount(account));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -188,7 +195,7 @@ export function apiAccountMastodon(router: Router): void {
|
|||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
convertTimelinesArgsId(limitToInt(ctx.query as any)),
|
||||
);
|
||||
ctx.body = data.data.map(account => convertAccount(account));
|
||||
ctx.body = data.data.map((account) => convertAccount(account));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -205,9 +212,9 @@ export function apiAccountMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getAccountLists(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = data.data.map(list => convertList(list));
|
||||
ctx.body = data.data.map((list) => convertList(list));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -340,10 +347,10 @@ export function apiAccountMastodon(router: Router): void {
|
|||
const accessTokens = ctx.headers.authorization;
|
||||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = (await client.getBookmarks(
|
||||
const data = await client.getBookmarks(
|
||||
convertTimelinesArgsId(limitToInt(ctx.query as any)),
|
||||
));
|
||||
ctx.body = data.data.map(status => convertStatus(status));
|
||||
);
|
||||
ctx.body = data.data.map((status) => convertStatus(status));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -356,8 +363,10 @@ export function apiAccountMastodon(router: Router): void {
|
|||
const accessTokens = ctx.headers.authorization;
|
||||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getFavourites(convertTimelinesArgsId(limitToInt(ctx.query as any)));
|
||||
ctx.body = data.data.map(status => convertStatus(status));
|
||||
const data = await client.getFavourites(
|
||||
convertTimelinesArgsId(limitToInt(ctx.query as any)),
|
||||
);
|
||||
ctx.body = data.data.map((status) => convertStatus(status));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -370,8 +379,10 @@ export function apiAccountMastodon(router: Router): void {
|
|||
const accessTokens = ctx.headers.authorization;
|
||||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getMutes(convertTimelinesArgsId(limitToInt(ctx.query as any)));
|
||||
ctx.body = data.data.map(account => convertAccount(account));
|
||||
const data = await client.getMutes(
|
||||
convertTimelinesArgsId(limitToInt(ctx.query as any)),
|
||||
);
|
||||
ctx.body = data.data.map((account) => convertAccount(account));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -384,8 +395,10 @@ export function apiAccountMastodon(router: Router): void {
|
|||
const accessTokens = ctx.headers.authorization;
|
||||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getBlocks(convertTimelinesArgsId(limitToInt(ctx.query as any)));
|
||||
ctx.body = data.data.map(account => convertAccount(account));
|
||||
const data = await client.getBlocks(
|
||||
convertTimelinesArgsId(limitToInt(ctx.query as any)),
|
||||
);
|
||||
ctx.body = data.data.map((account) => convertAccount(account));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -401,7 +414,7 @@ export function apiAccountMastodon(router: Router): void {
|
|||
const data = await client.getFollowRequests(
|
||||
((ctx.query as any) || { limit: 20 }).limit,
|
||||
);
|
||||
ctx.body = data.data.map(account => convertAccount(account));
|
||||
ctx.body = data.data.map((account) => convertAccount(account));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
|
|
@ -12,7 +12,7 @@ export function apiFilterMastodon(router: Router): void {
|
|||
const body: any = ctx.request.body;
|
||||
try {
|
||||
const data = await client.getFilters();
|
||||
ctx.body = data.data.map(filter => convertFilter(filter));
|
||||
ctx.body = data.data.map((filter) => convertFilter(filter));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
ctx.status = 401;
|
||||
|
@ -27,7 +27,7 @@ export function apiFilterMastodon(router: Router): void {
|
|||
const body: any = ctx.request.body;
|
||||
try {
|
||||
const data = await client.getFilter(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertFilter(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -78,7 +78,7 @@ export function apiFilterMastodon(router: Router): void {
|
|||
const body: any = ctx.request.body;
|
||||
try {
|
||||
const data = await client.deleteFilter(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = data.data;
|
||||
} catch (e: any) {
|
||||
|
|
|
@ -17,7 +17,9 @@ export function apiNotificationsMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
const body: any = ctx.request.body;
|
||||
try {
|
||||
const data = await client.getNotifications(convertTimelinesArgsId(toLimitToInt(ctx.query)));
|
||||
const data = await client.getNotifications(
|
||||
convertTimelinesArgsId(toLimitToInt(ctx.query)),
|
||||
);
|
||||
const notfs = data.data;
|
||||
const ret = notfs.map((n) => {
|
||||
n = convertNotification(n);
|
||||
|
@ -47,7 +49,7 @@ export function apiNotificationsMastodon(router: Router): void {
|
|||
const body: any = ctx.request.body;
|
||||
try {
|
||||
const dataRaw = await client.getNotification(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
const data = convertNotification(dataRaw.data);
|
||||
if (data.type !== "follow" && data.type !== "follow_request") {
|
||||
|
@ -85,7 +87,7 @@ export function apiNotificationsMastodon(router: Router): void {
|
|||
const body: any = ctx.request.body;
|
||||
try {
|
||||
const data = await client.dismissNotification(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = data.data;
|
||||
} catch (e: any) {
|
||||
|
|
|
@ -32,14 +32,16 @@ export function apiSearchMastodon(router: Router): void {
|
|||
const type = query.type;
|
||||
if (type) {
|
||||
const data = await client.search(query.q, type, query);
|
||||
ctx.body = data.data.accounts.map(account => convertAccount(account));
|
||||
ctx.body = data.data.accounts.map((account) => convertAccount(account));
|
||||
} else {
|
||||
const acct = await client.search(query.q, "accounts", query);
|
||||
const stat = await client.search(query.q, "statuses", query);
|
||||
const tags = await client.search(query.q, "hashtags", query);
|
||||
ctx.body = {
|
||||
accounts: acct.data.accounts.map(account => convertAccount(account)),
|
||||
statuses: stat.data.statuses.map(status => convertStatus(status)),
|
||||
accounts: acct.data.accounts.map((account) =>
|
||||
convertAccount(account),
|
||||
),
|
||||
statuses: stat.data.statuses.map((status) => convertStatus(status)),
|
||||
hashtags: tags.data.hashtags,
|
||||
};
|
||||
}
|
||||
|
@ -58,7 +60,7 @@ export function apiSearchMastodon(router: Router): void {
|
|||
ctx.request.hostname,
|
||||
accessTokens,
|
||||
);
|
||||
ctx.body = data.map(status => convertStatus(status));
|
||||
ctx.body = data.map((status) => convertStatus(status));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
ctx.status = 401;
|
||||
|
@ -76,7 +78,7 @@ export function apiSearchMastodon(router: Router): void {
|
|||
accessTokens,
|
||||
query.limit || 20,
|
||||
);
|
||||
data = data.map(suggestion => {
|
||||
data = data.map((suggestion) => {
|
||||
suggestion.account = convertAccount(suggestion.account);
|
||||
return suggestion;
|
||||
});
|
||||
|
|
|
@ -6,7 +6,12 @@ import querystring from "node:querystring";
|
|||
import qs from "qs";
|
||||
import { convertTimelinesArgsId, limitToInt } from "./timeline.js";
|
||||
import { convertId, IdType } from "../../index.js";
|
||||
import { convertAccount, convertAttachment, convertPoll, convertStatus } from "../converters.js";
|
||||
import {
|
||||
convertAccount,
|
||||
convertAttachment,
|
||||
convertPoll,
|
||||
convertStatus,
|
||||
} from "../converters.js";
|
||||
|
||||
function normalizeQuery(data: any) {
|
||||
const str = querystring.stringify(data);
|
||||
|
@ -86,7 +91,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.deleteStatus(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = data.data;
|
||||
} catch (e: any) {
|
||||
|
@ -134,8 +139,12 @@ export function apiStatusMastodon(router: Router): void {
|
|||
text,
|
||||
),
|
||||
);
|
||||
data.data.ancestors = data.data.ancestors.map(status => convertStatus(status));
|
||||
data.data.descendants = data.data.descendants.map(status => convertStatus(status));
|
||||
data.data.ancestors = data.data.ancestors.map((status) =>
|
||||
convertStatus(status),
|
||||
);
|
||||
data.data.descendants = data.data.descendants.map((status) =>
|
||||
convertStatus(status),
|
||||
);
|
||||
ctx.body = data.data;
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
|
@ -152,9 +161,9 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getStatusRebloggedBy(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = data.data.map(account => convertAccount(account));
|
||||
ctx.body = data.data.map((account) => convertAccount(account));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
ctx.status = 401;
|
||||
|
@ -200,7 +209,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
try {
|
||||
const data = await client.deleteEmojiReaction(
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
react
|
||||
react,
|
||||
);
|
||||
ctx.body = convertStatus(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -219,7 +228,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.reblogStatus(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertStatus(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -238,7 +247,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.unreblogStatus(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertStatus(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -257,7 +266,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.bookmarkStatus(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertStatus(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -276,7 +285,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.unbookmarkStatus(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertStatus(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -295,7 +304,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.pinStatus(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertStatus(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -314,7 +323,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.unpinStatus(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertStatus(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -330,7 +339,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getMedia(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertAttachment(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -361,7 +370,7 @@ export function apiStatusMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getPoll(
|
||||
convertId(ctx.params.id, IdType.CalckeyId)
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
);
|
||||
ctx.body = convertPoll(data.data);
|
||||
} catch (e: any) {
|
||||
|
|
|
@ -109,9 +109,13 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
try {
|
||||
const query: any = ctx.query;
|
||||
const data = query.local
|
||||
? await client.getLocalTimeline(convertTimelinesArgsId(argsToBools(limitToInt(query))))
|
||||
: await client.getPublicTimeline(convertTimelinesArgsId(argsToBools(limitToInt(query))));
|
||||
let resp = data.data.map(status => convertStatus(status));
|
||||
? await client.getLocalTimeline(
|
||||
convertTimelinesArgsId(argsToBools(limitToInt(query))),
|
||||
)
|
||||
: await client.getPublicTimeline(
|
||||
convertTimelinesArgsId(argsToBools(limitToInt(query))),
|
||||
);
|
||||
let resp = data.data.map((status) => convertStatus(status));
|
||||
ctx.body = toTextWithReaction(resp, ctx.hostname);
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
|
@ -131,7 +135,7 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
ctx.params.hashtag,
|
||||
convertTimelinesArgsId(argsToBools(limitToInt(ctx.query))),
|
||||
);
|
||||
let resp = data.data.map(status => convertStatus(status));
|
||||
let resp = data.data.map((status) => convertStatus(status));
|
||||
ctx.body = toTextWithReaction(resp, ctx.hostname);
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
|
@ -146,8 +150,10 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
const accessTokens = ctx.headers.authorization;
|
||||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getHomeTimeline(convertTimelinesArgsId(limitToInt(ctx.query)));
|
||||
let resp = data.data.map(status => convertStatus(status));
|
||||
const data = await client.getHomeTimeline(
|
||||
convertTimelinesArgsId(limitToInt(ctx.query)),
|
||||
);
|
||||
let resp = data.data.map((status) => convertStatus(status));
|
||||
ctx.body = toTextWithReaction(resp, ctx.hostname);
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
|
@ -167,7 +173,7 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
convertId(ctx.params.listId, IdType.CalckeyId),
|
||||
convertTimelinesArgsId(limitToInt(ctx.query)),
|
||||
);
|
||||
let resp = data.data.map(status => convertStatus(status));
|
||||
let resp = data.data.map((status) => convertStatus(status));
|
||||
ctx.body = toTextWithReaction(resp, ctx.hostname);
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
|
@ -182,7 +188,9 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
const accessTokens = ctx.headers.authorization;
|
||||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getConversationTimeline(convertTimelinesArgsId(limitToInt(ctx.query)));
|
||||
const data = await client.getConversationTimeline(
|
||||
convertTimelinesArgsId(limitToInt(ctx.query)),
|
||||
);
|
||||
ctx.body = data.data;
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
|
@ -197,7 +205,7 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
const client = getClient(BASE_URL, accessTokens);
|
||||
try {
|
||||
const data = await client.getLists();
|
||||
ctx.body = data.data.map(list => convertList(list));
|
||||
ctx.body = data.data.map((list) => convertList(list));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -247,7 +255,7 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
try {
|
||||
const data = await client.updateList(
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
(ctx.request.body as any).title
|
||||
(ctx.request.body as any).title,
|
||||
);
|
||||
ctx.body = convertList(data.data);
|
||||
} catch (e: any) {
|
||||
|
@ -288,7 +296,7 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
convertTimelinesArgsId(ctx.query as any),
|
||||
);
|
||||
ctx.body = data.data.map(account => convertAccount(account));
|
||||
ctx.body = data.data.map((account) => convertAccount(account));
|
||||
} catch (e: any) {
|
||||
console.error(e);
|
||||
console.error(e.response.data);
|
||||
|
@ -306,7 +314,9 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
try {
|
||||
const data = await client.addAccountsToList(
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
(ctx.query.account_ids as string[]).map(id => convertId(id, IdType.CalckeyId)),
|
||||
(ctx.query.account_ids as string[]).map((id) =>
|
||||
convertId(id, IdType.CalckeyId),
|
||||
),
|
||||
);
|
||||
ctx.body = data.data;
|
||||
} catch (e: any) {
|
||||
|
@ -326,7 +336,9 @@ export function apiTimelineMastodon(router: Router): void {
|
|||
try {
|
||||
const data = await client.deleteAccountsFromList(
|
||||
convertId(ctx.params.id, IdType.CalckeyId),
|
||||
(ctx.query.account_ids as string[]).map(id => convertId(id, IdType.CalckeyId)),
|
||||
(ctx.query.account_ids as string[]).map((id) =>
|
||||
convertId(id, IdType.CalckeyId),
|
||||
),
|
||||
);
|
||||
ctx.body = data.data;
|
||||
} catch (e: any) {
|
||||
|
|
|
@ -402,8 +402,10 @@ router.get("/notes/:note", async (ctx, next) => {
|
|||
try {
|
||||
if (note) {
|
||||
const _note = await Notes.pack(note);
|
||||
|
||||
const profile = await UserProfiles.findOneByOrFail({ userId: note.userId });
|
||||
|
||||
const profile = await UserProfiles.findOneByOrFail({
|
||||
userId: note.userId,
|
||||
});
|
||||
const meta = await fetchMeta();
|
||||
await ctx.render("note", {
|
||||
note: _note,
|
||||
|
|
|
@ -462,18 +462,23 @@ if (
|
|||
props.reply &&
|
||||
["home", "followers", "specified"].includes(props.reply.visibility)
|
||||
) {
|
||||
if (props.reply.visibility === 'home' && visibility === 'followers') {
|
||||
visibility = 'followers';
|
||||
} else if (['home', 'followers'].includes(props.reply.visibility) && visibility === 'specified') {
|
||||
visibility = 'specified';
|
||||
if (props.reply.visibility === "home" && visibility === "followers") {
|
||||
visibility = "followers";
|
||||
} else if (
|
||||
["home", "followers"].includes(props.reply.visibility) &&
|
||||
visibility === "specified"
|
||||
) {
|
||||
visibility = "specified";
|
||||
} else {
|
||||
visibility = props.reply.visibility;
|
||||
}
|
||||
if (visibility === 'specified') {
|
||||
if (visibility === "specified") {
|
||||
if (props.reply.visibleUserIds) {
|
||||
os.api('users/show', {
|
||||
userIds: props.reply.visibleUserIds.filter(uid => uid !== $i.id && uid !== props.reply.userId),
|
||||
}).then(users => {
|
||||
os.api("users/show", {
|
||||
userIds: props.reply.visibleUserIds.filter(
|
||||
(uid) => uid !== $i.id && uid !== props.reply.userId
|
||||
),
|
||||
}).then((users) => {
|
||||
users.forEach(pushVisibleUser);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,16 +1,8 @@
|
|||
<template>
|
||||
<button
|
||||
v-if="modelValue"
|
||||
class="fade _button"
|
||||
@click.stop="toggle"
|
||||
>
|
||||
<button v-if="modelValue" class="fade _button" @click.stop="toggle">
|
||||
<span>{{ i18n.ts.showMore }}</span>
|
||||
</button>
|
||||
<button
|
||||
v-if="!modelValue"
|
||||
class="showLess _button"
|
||||
@click.stop="toggle"
|
||||
>
|
||||
<button v-if="!modelValue" class="showLess _button" @click.stop="toggle">
|
||||
<span>{{ i18n.ts.showLess }}</span>
|
||||
</button>
|
||||
</template>
|
||||
|
|
|
@ -115,7 +115,10 @@
|
|||
v-on:focus="cwButton?.focus()"
|
||||
></div>
|
||||
</div>
|
||||
<XShowMoreButton v-if="isLong" v-model="collapsed"></XShowMoreButton>
|
||||
<XShowMoreButton
|
||||
v-if="isLong"
|
||||
v-model="collapsed"
|
||||
></XShowMoreButton>
|
||||
<XCwButton v-if="note.cw" v-model="showContent" :note="note" />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -58,7 +58,10 @@
|
|||
:custom-emojis="user.emojis"
|
||||
/>
|
||||
</div>
|
||||
<XShowMoreButton v-if="isLong" v-model="collapsed"></XShowMoreButton>
|
||||
<XShowMoreButton
|
||||
v-if="isLong"
|
||||
v-model="collapsed"
|
||||
></XShowMoreButton>
|
||||
<div v-if="user.fields.length > 0" class="fields">
|
||||
<dl
|
||||
v-for="(field, i) in user.fields"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
export default {
|
||||
mounted: (el) => el.focus()
|
||||
}
|
||||
mounted: (el) => el.focus(),
|
||||
};
|
||||
|
|
|
@ -87,23 +87,11 @@ export default {
|
|||
self.hideTimer = window.setTimeout(self.close, delay);
|
||||
}
|
||||
|
||||
el.addEventListener(
|
||||
start, showTooltip,
|
||||
{ passive: true },
|
||||
);
|
||||
el.addEventListener(
|
||||
"focusin", showTooltip,
|
||||
{ passive: true },
|
||||
);
|
||||
el.addEventListener(start, showTooltip, { passive: true });
|
||||
el.addEventListener("focusin", showTooltip, { passive: true });
|
||||
|
||||
el.addEventListener(
|
||||
end, hideTooltip,
|
||||
{ passive: true },
|
||||
);
|
||||
el.addEventListener(
|
||||
"focusout", hideTooltip,
|
||||
{ passive: true },
|
||||
);
|
||||
el.addEventListener(end, hideTooltip, { passive: true });
|
||||
el.addEventListener("focusout", hideTooltip, { passive: true });
|
||||
|
||||
el.addEventListener("click", () => {
|
||||
window.clearTimeout(self.showTimer);
|
||||
|
|
Loading…
Reference in a new issue