summaryrefslogtreecommitdiff
path: root/src/models
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-02-13 02:17:54 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2020-02-13 02:17:54 +0900
commit2feef8151625d9ba5d9c8b1850679b7fe84af809 (patch)
tree2939f4fe0d06a1ad14ed8b676de99bfc314bc75c /src/models
parentフランス語と関西弁を有効に (#5925) (diff)
downloadsharkey-2feef8151625d9ba5d9c8b1850679b7fe84af809.tar.gz
sharkey-2feef8151625d9ba5d9c8b1850679b7fe84af809.tar.bz2
sharkey-2feef8151625d9ba5d9c8b1850679b7fe84af809.zip
グループ招待の通知とか
Resolve #5880 Resolve #5927
Diffstat (limited to 'src/models')
-rw-r--r--src/models/entities/notification.ts18
-rw-r--r--src/models/entities/user-group-invitation.ts (renamed from src/models/entities/user-group-invite.ts)4
-rw-r--r--src/models/index.ts4
-rw-r--r--src/models/repositories/notification.ts7
-rw-r--r--src/models/repositories/user-group-invitation.ts24
-rw-r--r--src/models/repositories/user-group-invite.ts24
6 files changed, 49 insertions, 32 deletions
diff --git a/src/models/entities/notification.ts b/src/models/entities/notification.ts
index e359640e82..cd3fe9b01e 100644
--- a/src/models/entities/notification.ts
+++ b/src/models/entities/notification.ts
@@ -3,6 +3,7 @@ import { User } from './user';
import { id } from '../id';
import { Note } from './note';
import { FollowRequest } from './follow-request';
+import { UserGroupInvitation } from './user-group-invitation';
@Entity()
export class Notification {
@@ -57,12 +58,13 @@ export class Notification {
* pollVote - (自分または自分がWatchしている)投稿の投票に投票された
* receiveFollowRequest - フォローリクエストされた
* followRequestAccepted - 自分の送ったフォローリクエストが承認された
+ * groupInvited - グループに招待された
*/
@Column('enum', {
- enum: ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest', 'followRequestAccepted'],
+ enum: ['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest', 'followRequestAccepted', 'groupInvited'],
comment: 'The type of the Notification.'
})
- public type: 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollVote' | 'receiveFollowRequest' | 'followRequestAccepted';
+ public type: 'follow' | 'mention' | 'reply' | 'renote' | 'quote' | 'reaction' | 'pollVote' | 'receiveFollowRequest' | 'followRequestAccepted' | 'groupInvited';
/**
* 通知が読まれたかどうか
@@ -97,6 +99,18 @@ export class Notification {
@JoinColumn()
public followRequest: FollowRequest | null;
+ @Column({
+ ...id(),
+ nullable: true
+ })
+ public userGroupInvitationId: UserGroupInvitation['id'] | null;
+
+ @ManyToOne(type => UserGroupInvitation, {
+ onDelete: 'CASCADE'
+ })
+ @JoinColumn()
+ public userGroupInvitation: UserGroupInvitation | null;
+
@Column('varchar', {
length: 128, nullable: true
})
diff --git a/src/models/entities/user-group-invite.ts b/src/models/entities/user-group-invitation.ts
index 2adf2c024e..6fe8f20134 100644
--- a/src/models/entities/user-group-invite.ts
+++ b/src/models/entities/user-group-invitation.ts
@@ -5,12 +5,12 @@ import { id } from '../id';
@Entity()
@Index(['userId', 'userGroupId'], { unique: true })
-export class UserGroupInvite {
+export class UserGroupInvitation {
@PrimaryColumn(id())
public id: string;
@Column('timestamp with time zone', {
- comment: 'The created date of the UserGroupInvite.'
+ comment: 'The created date of the UserGroupInvitation.'
})
public createdAt: Date;
diff --git a/src/models/index.ts b/src/models/index.ts
index 15a5c5470d..ea8fa6f911 100644
--- a/src/models/index.ts
+++ b/src/models/index.ts
@@ -24,7 +24,7 @@ import { UserListRepository } from './repositories/user-list';
import { UserListJoining } from './entities/user-list-joining';
import { UserGroupRepository } from './repositories/user-group';
import { UserGroupJoining } from './entities/user-group-joining';
-import { UserGroupInviteRepository } from './repositories/user-group-invite';
+import { UserGroupInvitationRepository } from './repositories/user-group-invitation';
import { FollowRequestRepository } from './repositories/follow-request';
import { MutingRepository } from './repositories/muting';
import { BlockingRepository } from './repositories/blocking';
@@ -71,7 +71,7 @@ export const UserLists = getCustomRepository(UserListRepository);
export const UserListJoinings = getRepository(UserListJoining);
export const UserGroups = getCustomRepository(UserGroupRepository);
export const UserGroupJoinings = getRepository(UserGroupJoining);
-export const UserGroupInvites = getCustomRepository(UserGroupInviteRepository);
+export const UserGroupInvitations = getCustomRepository(UserGroupInvitationRepository);
export const UserNotePinings = getRepository(UserNotePining);
export const UsedUsernames = getRepository(UsedUsername);
export const Followings = getCustomRepository(FollowingRepository);
diff --git a/src/models/repositories/notification.ts b/src/models/repositories/notification.ts
index 6407c19d4c..f020714f80 100644
--- a/src/models/repositories/notification.ts
+++ b/src/models/repositories/notification.ts
@@ -1,5 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Users, Notes } from '..';
+import { Users, Notes, UserGroupInvitations } from '..';
import { Notification } from '../entities/notification';
import { ensure } from '../../prelude/ensure';
import { awaitAll } from '../../prelude/await-all';
@@ -39,7 +39,10 @@ export class NotificationRepository extends Repository<Notification> {
...(notification.type === 'pollVote' ? {
note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId),
choice: notification.choice
- } : {})
+ } : {}),
+ ...(notification.type === 'groupInvited' ? {
+ invitation: UserGroupInvitations.pack(notification.userGroupInvitationId!),
+ } : {}),
});
}
diff --git a/src/models/repositories/user-group-invitation.ts b/src/models/repositories/user-group-invitation.ts
new file mode 100644
index 0000000000..0d3ad525c3
--- /dev/null
+++ b/src/models/repositories/user-group-invitation.ts
@@ -0,0 +1,24 @@
+import { EntityRepository, Repository } from 'typeorm';
+import { UserGroupInvitation } from '../entities/user-group-invitation';
+import { UserGroups } from '..';
+import { ensure } from '../../prelude/ensure';
+
+@EntityRepository(UserGroupInvitation)
+export class UserGroupInvitationRepository extends Repository<UserGroupInvitation> {
+ public async pack(
+ src: UserGroupInvitation['id'] | UserGroupInvitation,
+ ) {
+ const invitation = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
+
+ return {
+ id: invitation.id,
+ group: await UserGroups.pack(invitation.userGroup || invitation.userGroupId),
+ };
+ }
+
+ public packMany(
+ invitations: any[],
+ ) {
+ return Promise.all(invitations.map(x => this.pack(x)));
+ }
+}
diff --git a/src/models/repositories/user-group-invite.ts b/src/models/repositories/user-group-invite.ts
deleted file mode 100644
index 1d4c2aa15f..0000000000
--- a/src/models/repositories/user-group-invite.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { EntityRepository, Repository } from 'typeorm';
-import { UserGroupInvite } from '../entities/user-group-invite';
-import { UserGroups } from '..';
-import { ensure } from '../../prelude/ensure';
-
-@EntityRepository(UserGroupInvite)
-export class UserGroupInviteRepository extends Repository<UserGroupInvite> {
- public async pack(
- src: UserGroupInvite['id'] | UserGroupInvite,
- ) {
- const invite = typeof src === 'object' ? src : await this.findOne(src).then(ensure);
-
- return {
- id: invite.id,
- group: await UserGroups.pack(invite.userGroup || invite.userGroupId),
- };
- }
-
- public packMany(
- invites: any[],
- ) {
- return Promise.all(invites.map(x => this.pack(x)));
- }
-}