feat(admin): update delete message logic with call

We need to post deleteMessage socket event to user and not just in database.
Reuse message service
pull/90/head
moonrailgun 2 years ago
parent cbb436cfbe
commit 0cd4268a65

@ -8,6 +8,7 @@ import {
TextField, TextField,
SearchInput, SearchInput,
useTranslate, useTranslate,
BulkDeleteButton,
} from 'react-admin'; } from 'react-admin';
import { UserField } from '../components/UserField'; import { UserField } from '../components/UserField';
@ -25,7 +26,10 @@ export const MessageList: React.FC = () => {
/>, />,
]} ]}
> >
<Datagrid rowClick="show"> <Datagrid
rowClick="show"
bulkActionButtons={<BulkDeleteButton mutationMode="optimistic" />}
>
<TextField source="id" sortable={true} sortByOrder="DESC" /> <TextField source="id" sortable={true} sortByOrder="DESC" />
<TextField source="content" /> <TextField source="content" />
<UserField source="author" /> <UserField source="author" />

@ -1,4 +1,4 @@
import { TcBroker } from 'tailchat-server-sdk'; import { TcBroker, SYSTEM_USERID } from 'tailchat-server-sdk';
import brokerConfig from '../../../moleculer.config'; import brokerConfig from '../../../moleculer.config';
const transporter = process.env.TRANSPORTER; const transporter = process.env.TRANSPORTER;
@ -12,3 +12,11 @@ export const broker = new TcBroker({
broker.start().then(() => { broker.start().then(() => {
console.log('Linked to Tailchat network, TRANSPORTER: ', transporter); console.log('Linked to Tailchat network, TRANSPORTER: ', transporter);
}); });
export function call<T>(actionName: string, params: any): Promise<T> {
return broker.call(actionName, params, {
meta: {
userId: SYSTEM_USERID,
},
});
}

@ -1,6 +1,7 @@
import { Router } from 'express'; import { Router } from 'express';
import raExpressMongoose from 'express-mongoose-ra-json-server'; import raExpressMongoose from 'express-mongoose-ra-json-server';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import { call } from '../broker';
import { adminAuth, auth, authSecret } from '../middleware/auth'; import { adminAuth, auth, authSecret } from '../middleware/auth';
import { networkRouter } from './network'; import { networkRouter } from './network';
@ -46,6 +47,19 @@ router.use(
q: ['nickname', 'email'], q: ['nickname', 'email'],
}) })
); );
router.delete('/messages/:id', auth(), async (req, res) => {
try {
const messageId = req.params.id;
await call('chat.message.deleteMessage', {
messageId,
});
res.json({ id: messageId });
} catch (err) {
console.error(err);
res.status(500).json({ message: err.message });
}
});
router.use( router.use(
'/messages', '/messages',
auth(), auth(),

@ -16,6 +16,7 @@ import {
GroupPanelType, GroupPanelType,
NoPermissionError, NoPermissionError,
PERMISSION, PERMISSION,
SYSTEM_USERID,
TcContext, TcContext,
} from 'tailchat-server-sdk'; } from 'tailchat-server-sdk';
import { User } from '../user/user'; import { User } from '../user/user';
@ -275,6 +276,10 @@ export class Group extends TimeStamps implements Base {
throw new Error('Not Found Group'); throw new Error('Not Found Group');
} }
if (userId === SYSTEM_USERID) {
return allPermission;
}
const member = group.members.find( const member = group.members.find(
(member) => String(member.userId) === userId (member) => String(member.userId) === userId
); );

Loading…
Cancel
Save