wip: clip

This commit is contained in:
syuilo 2020-11-15 12:47:54 +09:00
parent 67d731cc64
commit 99f270397e
2 changed files with 25 additions and 2 deletions

View file

@ -4,6 +4,9 @@
<div class="description" v-if="clip.description">
<Mfm :text="clip.description" :is-note="false" :i="$store.state.i"/>
</div>
<div class="user">
<MkAvatar :user="clip.user" class="avatar"/> <MkUserName :user="clip.user" :nowrap="false"/>
</div>
</div>
<XNotes class="_content _vMargin" :pagination="pagination" :detail="true"/>
@ -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;
}
}
}
</style>

View file

@ -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<typeof packedClipSchema>;
@ -12,14 +14,15 @@ export class ClipRepository extends Repository<Clip> {
): Promise<PackedClip> {
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,