Просмотр исходного кода

avoid lint error by use any type

ryoji-s 3 лет назад
Родитель
Сommit
4b0e8370fd

+ 5 - 4
apps/app/src/components/InAppNotification/InAppNotificationElm.tsx

@@ -40,11 +40,12 @@ const InAppNotificationElm: FC<Props> = (props: Props) => {
   };
 
   const getActionUsers = () => {
+    if (notification.targetModel === 'User') {
+      return notification.target.username;
+    }
+
     const latestActionUsers = notification.actionUsers.slice(0, 3);
     const latestUsers = latestActionUsers.map((user) => {
-      if (user == null) {
-        return;
-      }
       return `@${user.name}`;
     });
 
@@ -184,7 +185,7 @@ const InAppNotificationElm: FC<Props> = (props: Props) => {
             notification={notification}
             actionMsg={actionMsg}
             actionIcon={actionIcon}
-            actionUsers={notification.target.username}
+            actionUsers={actionUsers}
           />
         )}
       </div>

+ 7 - 4
apps/app/src/interfaces/in-app-notification.ts

@@ -1,6 +1,7 @@
 import type { IPageSnapshot } from '~/models/serializers/in-app-notification-snapshot/page';
 import type { IUserSnapshot } from '~/models/serializers/in-app-notification-snapshot/user';
 
+import { SupportedTargetModelType, SupportedActionType } from './activity';
 import { IPage } from './page';
 import { IUser } from './user';
 
@@ -10,16 +11,18 @@ export enum InAppNotificationStatuses {
   STATUS_OPENED = 'OPENED',
 }
 
+// TODO: do not use any type
+// https://redmine.weseek.co.jp/issues/120632
 export interface IInAppNotification {
   user: IUser
-  targetModel: 'Page' | 'User'
-  target: IPage | IUser
-  action: 'COMMENT' | 'LIKE'
+  targetModel: SupportedTargetModelType
+  target: any
+  action: SupportedActionType
   status: InAppNotificationStatuses
   actionUsers: IUser[]
   createdAt: Date
   snapshot: string
-  parsedSnapshot?: IPageSnapshot | IUserSnapshot
+  parsedSnapshot?: any
 }
 
 /*

+ 6 - 2
apps/app/src/server/service/in-app-notification.ts

@@ -51,7 +51,9 @@ export default class InAppNotificationService {
   }
 
   initActivityEventListeners(): void {
-    this.activityEvent.on('updated', async(activity: ActivityDocument, target: IPage, users?: Ref<IUser>[]) => {
+    // TODO: do not use any type
+    // https://redmine.weseek.co.jp/issues/120632
+    this.activityEvent.on('updated', async(activity: ActivityDocument, target: any, users?: Ref<IUser>[]) => {
       try {
         const shouldNotification = activity != null && target != null && (AllEssentialActions as ReadonlyArray<string>).includes(activity.action);
         if (shouldNotification) {
@@ -199,7 +201,9 @@ export default class InAppNotificationService {
     return;
   };
 
-  createInAppNotification = async function(activity: ActivityDocument, target: IPage | IUser, users?: Ref<IUser>[]): Promise<void> {
+  // TODO: do not use any type
+  // https://redmine.weseek.co.jp/issues/120632
+  createInAppNotification = async function(activity: ActivityDocument, target, users?: Ref<IUser>[]): Promise<void> {
     if (activity.action === SupportedAction.ACTION_USER_REGISTRATION_APPROVAL_REQUEST) {
       const snapshot = userSerializers.stringifySnapshot(target);
       await this.upsertByActivity(users, activity, snapshot);