Mod action history (#2437)

* Add action for viewing moderation history

* Add translations

* Remove unnecessary function

* Update packageManager

* Package manager
This commit is contained in:
SleeplessOne1917 2024-04-24 02:34:52 +00:00 committed by GitHub
parent b2a3f29fe2
commit d89dc07e71
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 676 additions and 661 deletions

@ -1 +1 @@
Subproject commit c88dd1e3b36ee1617f1b86acf94c1b7946e97cd4 Subproject commit 866e4056656755f7b31e20094b46391e6931e3e7

File diff suppressed because it is too large Load diff

View file

@ -298,5 +298,8 @@
<symbol id="icon-info" fill="currentColor" viewBox="0 0 256 256"> <symbol id="icon-info" fill="currentColor" viewBox="0 0 256 256">
<path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z" /> <path d="M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z" />
</symbol> </symbol>
<symbol id="icon-history" viewBox="0 0 256 256">
<path d="M136,80v43.47l36.12,21.67a8,8,0,0,1-8.24,13.72l-40-24A8,8,0,0,1,120,128V80a8,8,0,0,1,16,0Zm-8-48A95.44,95.44,0,0,0,60.08,60.15C52.81,67.51,46.35,74.59,40,82V64a8,8,0,0,0-16,0v40a8,8,0,0,0,8,8H72a8,8,0,0,0,0-16H49c7.15-8.42,14.27-16.35,22.39-24.57a80,80,0,1,1,1.66,114.75,8,8,0,1,0-11,11.64A96,96,0,1,0,128,32Z" />
</symbol>
</defs> </defs>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View file

@ -346,6 +346,20 @@ export default class ContentActionDropdown extends Component<
/> />
</li> </li>
)} )}
<li>
<Link
className="btn btn-link btn-sm d-flex align-items-center rounded-0 dropdown-item"
to={`/modlog?${type === "post" ? "postId" : "commentId"}=${id}`}
title={I18NextService.i18n.t("moderation_history")}
aria-label={I18NextService.i18n.t("moderation_history")}
data-tippy-content={I18NextService.i18n.t(
"moderation_history",
)}
>
<Icon icon="history" inline classes="me-2" />
{I18NextService.i18n.t("moderation_history")}
</Link>
</li>
{(this.canMod || this.canAdmin) && ( {(this.canMod || this.canAdmin) && (
<li> <li>
<ActionButton <ActionButton
@ -415,7 +429,8 @@ export default class ContentActionDropdown extends Component<
)} )}
</> </>
)} )}
{(amCommunityCreator(this.id, moderators) || this.canAdmin) && {(amCommunityCreator(creator.id, moderators) ||
this.canAdmin) &&
creator_is_moderator && ( creator_is_moderator && (
<li> <li>
<ActionButton <ActionButton
@ -842,12 +857,6 @@ export default class ContentActionDropdown extends Component<
); );
} }
get id() {
return this.props.type === "post"
? this.props.postView.creator.id
: this.props.commentView.creator.id;
}
wrapHandler(handler: (arg?: any) => Promise<void>) { wrapHandler(handler: (arg?: any) => Promise<void>) {
return async (arg?: any) => { return async (arg?: any) => {
await handler(arg); await handler(arg);

View file

@ -107,6 +107,8 @@ export function getModlogQueryParams(source?: string): ModlogProps {
modId: getIdFromString, modId: getIdFromString,
userId: getIdFromString, userId: getIdFromString,
page: getPageFromString, page: getPageFromString,
commentId: getIdFromString,
postId: getIdFromString,
}, },
source, source,
); );
@ -127,6 +129,8 @@ interface ModlogProps {
userId?: number; userId?: number;
modId?: number; modId?: number;
actionType: ModlogActionType; actionType: ModlogActionType;
postId?: number;
commentId?: number;
} }
function getActionFromString(action?: string): ModlogActionType { function getActionFromString(action?: string): ModlogActionType {
@ -991,7 +995,7 @@ export class Modlog extends Component<ModlogRouteProps, ModlogState> {
} }
async refetch() { async refetch() {
const { actionType, page, modId, userId } = this.props; const { actionType, page, modId, userId, postId, commentId } = this.props;
const { communityId: urlCommunityId } = this.props.match.params; const { communityId: urlCommunityId } = this.props.match.params;
const communityId = getIdFromString(urlCommunityId); const communityId = getIdFromString(urlCommunityId);
@ -1007,6 +1011,8 @@ export class Modlog extends Component<ModlogRouteProps, ModlogState> {
.hide_modlog_mod_names .hide_modlog_mod_names
? modId ? modId
: undefined, : undefined,
comment_id: commentId,
post_id: postId,
}), }),
}); });
@ -1022,7 +1028,7 @@ export class Modlog extends Component<ModlogRouteProps, ModlogState> {
static async fetchInitialData({ static async fetchInitialData({
headers, headers,
query: { page, userId, modId: modId_, actionType }, query: { page, userId, modId: modId_, actionType, commentId, postId },
match: { match: {
params: { communityId: urlCommunityId }, params: { communityId: urlCommunityId },
}, },
@ -1043,6 +1049,8 @@ export class Modlog extends Component<ModlogRouteProps, ModlogState> {
type_: actionType, type_: actionType,
mod_person_id: modId, mod_person_id: modId,
other_person_id: userId, other_person_id: userId,
comment_id: commentId,
post_id: postId,
}; };
let communityResponse: RequestState<GetCommunityResponse> = EMPTY_REQUEST; let communityResponse: RequestState<GetCommunityResponse> = EMPTY_REQUEST;