diff --git a/src/client/pages/clip.vue b/src/client/pages/clip.vue
index ad9e076fd6..7535e4de2e 100644
--- a/src/client/pages/clip.vue
+++ b/src/client/pages/clip.vue
@@ -4,6 +4,9 @@
+
+
+
@@ -135,5 +138,17 @@ export default defineComponent({
> .description {
padding: 16px;
}
+
+ > .user {
+ $height: 32px;
+ padding: 16px;
+ border-top: solid 1px var(--divider);
+ line-height: $height;
+
+ > .avatar {
+ width: $height;
+ height: $height;
+ }
+ }
}
diff --git a/src/models/repositories/clip.ts b/src/models/repositories/clip.ts
index f5c70a1829..2830546528 100644
--- a/src/models/repositories/clip.ts
+++ b/src/models/repositories/clip.ts
@@ -2,6 +2,8 @@ import { EntityRepository, Repository } from 'typeorm';
import { Clip } from '../entities/clip';
import { ensure } from '../../prelude/ensure';
import { SchemaType } from '../../misc/schema';
+import { Users } from '..';
+import { awaitAll } from '../../prelude/await-all';
export type PackedClip = SchemaType;
@@ -12,14 +14,15 @@ export class ClipRepository extends Repository {
): Promise {
const clip = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
- return {
+ return await awaitAll({
id: clip.id,
createdAt: clip.createdAt.toISOString(),
userId: clip.userId,
+ user: Users.pack(clip.user || clip.userId),
name: clip.name,
description: clip.description,
isPublic: clip.isPublic,
- };
+ });
}
}
@@ -45,6 +48,11 @@ export const packedClipSchema = {
optional: false as const, nullable: false as const,
format: 'id',
},
+ user: {
+ type: 'object' as const,
+ ref: 'User',
+ optional: false as const, nullable: false as const,
+ },
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,