Merge pull request #2001 from umputun/fix/admin-edit-frontend-1986
Fix frontend not respecting ADMIN_EDIT config
This commit is contained in:
@@ -8,6 +8,7 @@ beforeEach(() => {
|
||||
critical_score: -15,
|
||||
low_score: -5,
|
||||
edit_duration: 300,
|
||||
admin_edit: false,
|
||||
max_comment_size: 3000,
|
||||
max_image_size: 5000,
|
||||
positive_score: false,
|
||||
|
||||
@@ -15,6 +15,7 @@ export const StaticStore: StaticStoreType = {
|
||||
config: {
|
||||
version: '',
|
||||
edit_duration: 5000,
|
||||
admin_edit: false,
|
||||
max_comment_size: 5000,
|
||||
admins: [],
|
||||
admin_email: '',
|
||||
|
||||
@@ -109,6 +109,7 @@ export interface Config {
|
||||
version: string;
|
||||
auth_providers: Provider[];
|
||||
edit_duration: number;
|
||||
admin_edit: boolean;
|
||||
max_comment_size: number;
|
||||
admins: string[];
|
||||
admin_email: string;
|
||||
|
||||
@@ -73,13 +73,15 @@ export function CommentActions({
|
||||
<Button kind="link" size="sm" onClick={onToggleEditing}>
|
||||
{intl.formatMessage(editing ? messages.cancel : messages.edit)}
|
||||
</Button>
|
||||
<span
|
||||
role="timer"
|
||||
title={intl.formatMessage(messages.editCountdown)}
|
||||
className={clsx('comment-actions-countdown', styles.countdown)}
|
||||
>
|
||||
<Countdown timestamp={editDeadline} onTimePassed={onDisableEditing} />
|
||||
</span>
|
||||
{Number.isFinite(editDeadline) && (
|
||||
<span
|
||||
role="timer"
|
||||
title={intl.formatMessage(messages.editCountdown)}
|
||||
className={clsx('comment-actions-countdown', styles.countdown)}
|
||||
>
|
||||
<Countdown timestamp={editDeadline} onTimePassed={onDisableEditing} />
|
||||
</span>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
<div
|
||||
|
||||
@@ -102,11 +102,15 @@ export class Comment extends Component<CommentProps, State> {
|
||||
|
||||
// set comment edit timer
|
||||
if (this.isCurrentUser()) {
|
||||
const editDuration = StaticStore.config.edit_duration;
|
||||
const timeDiff = StaticStore.serverClientTimeDiff || 0;
|
||||
const editDeadline = new Date(props.data.time).getTime() + timeDiff + editDuration * 1000;
|
||||
if (this.isAdmin() && StaticStore.config.admin_edit) {
|
||||
newState.editDeadline = Infinity;
|
||||
} else {
|
||||
const editDuration = StaticStore.config.edit_duration;
|
||||
const timeDiff = StaticStore.serverClientTimeDiff || 0;
|
||||
const editDeadline = new Date(props.data.time).getTime() + timeDiff + editDuration * 1000;
|
||||
|
||||
newState.editDeadline = editDeadline > Date.now() ? editDeadline : undefined;
|
||||
newState.editDeadline = editDeadline > Date.now() ? editDeadline : undefined;
|
||||
}
|
||||
}
|
||||
|
||||
return newState;
|
||||
@@ -488,7 +492,10 @@ export class Comment extends Component<CommentProps, State> {
|
||||
copied={state.isCopied}
|
||||
editing={isEditing}
|
||||
replying={isReplying}
|
||||
editable={props.repliesCount === 0 && state.editDeadline !== undefined}
|
||||
editable={
|
||||
state.editDeadline !== undefined &&
|
||||
(props.repliesCount === 0 || (isAdmin && StaticStore.config.admin_edit))
|
||||
}
|
||||
editDeadline={state.editDeadline}
|
||||
readOnly={props.post_info?.read_only}
|
||||
onToggleReplying={this.toggleReplying}
|
||||
|
||||
@@ -6,6 +6,7 @@ export interface Config {
|
||||
version: string
|
||||
auth_providers: Provider[]
|
||||
edit_duration: number
|
||||
admin_edit: boolean
|
||||
max_comment_size: number
|
||||
admins: string[]
|
||||
admin_email: string
|
||||
@@ -103,7 +104,7 @@ export function createPublicClient({ siteId: site, baseUrl }: ClientParams) {
|
||||
async function getComments(url: string): Promise<CommentsTree>
|
||||
async function getComments(params: GetUserCommentsParams): Promise<Comment[]>
|
||||
async function getComments(
|
||||
params: string | GetUserCommentsParams
|
||||
params: string | GetUserCommentsParams,
|
||||
): Promise<Comment[] | CommentsTree> {
|
||||
if (typeof params === 'string') {
|
||||
return fetcher.get('/comments', { url: params })
|
||||
|
||||
Reference in New Issue
Block a user