🆕 Groups Forum

- please add the text in the UITexts
This commit is contained in:
DuckieTM
2026-03-29 14:58:56 +02:00
parent 5d8c5d3eea
commit 522219cbee
7 changed files with 90 additions and 11 deletions
@@ -1,4 +1,4 @@
import { GetMessagesMessageComposer, ModerateMessageMessageComposer, ModerateThreadMessageComposer, PostMessageMessageComposer, PostMessageMessageEvent, PostThreadMessageEvent, ThreadMessagesMessageEvent, UpdateMessageMessageEvent, UpdateThreadMessageComposer, UpdateThreadMessageEvent } from '@nitrots/nitro-renderer';
import { GetMessagesMessageComposer, ModerateMessageMessageComposer, ModerateThreadMessageComposer, PostMessageMessageComposer, PostMessageMessageEvent, PostThreadMessageEvent, ThreadMessagesMessageEvent, UpdateForumReadMarkerMessageComposer, UpdateForumReadMarkerEntry, UpdateMessageMessageEvent, UpdateThreadMessageComposer, UpdateThreadMessageEvent } from '@nitrots/nitro-renderer';
import { FC, useCallback, useEffect, useRef, useState } from 'react';
import { LocalizeText, SendMessageComposer, GetUserProfile } from '../../../../api';
import { Button, Column, Flex, LayoutAvatarImageView, Text } from '../../../../common';
@@ -49,6 +49,15 @@ export const GroupForumThreadView: FC<GroupForumThreadViewProps> = props =>
{
setMessages(prev => [ ...prev, ...parser.messages ]);
}
// Mark messages as read
if(parser.messages.length > 0)
{
const lastMessage = parser.messages[parser.messages.length - 1];
SendMessageComposer(new UpdateForumReadMarkerMessageComposer(
new UpdateForumReadMarkerEntry(effectiveGroupId, lastMessage.messageId, true)
));
}
});
useMessageEvent<PostMessageMessageEvent>(PostMessageMessageEvent, event =>
@@ -153,6 +162,12 @@ export const GroupForumThreadView: FC<GroupForumThreadViewProps> = props =>
onBack();
}, [ effectiveGroupId, threadId, onBack ]);
const deleteThread = useCallback(() =>
{
SendMessageComposer(new ModerateThreadMessageComposer(effectiveGroupId, threadId, STATE_DELETED_BY_MODERATOR));
onBack();
}, [ effectiveGroupId, threadId, onBack ]);
const formatTimeAgo = (seconds: number): string =>
{
if(seconds < 60) return `${ seconds }s ${ LocalizeText('messageboard.time.ago') }`;
@@ -203,6 +218,9 @@ export const GroupForumThreadView: FC<GroupForumThreadViewProps> = props =>
<Button variant="outline-danger" className="btn-sm" onClick={ hideThread }>
{ LocalizeText('groupforum.thread.hide') }
</Button>
<Button variant="danger" className="btn-sm" onClick={ deleteThread }>
{ LocalizeText('groupforum.thread.delete') }
</Button>
</Flex> }
</Flex>
<Column className="overflow-auto flex-1" gap={ 0 }>
@@ -292,6 +310,12 @@ export const GroupForumThreadView: FC<GroupForumThreadViewProps> = props =>
<Flex className="p-2 border-t bg-warning bg-opacity-10" justifyContent="center">
<Text small variant="muted">{ LocalizeText('groupforum.thread.locked') }</Text>
</Flex> }
{ !canPost && !isLocked && forumData &&
<Flex className="p-2 border-t bg-muted" justifyContent="center">
<Text small variant="muted">
{ LocalizeText('groupforum.view.error.' + forumData.postMessagePermissionError) }
</Text>
</Flex> }
</Column>
);
};