mirror of
https://github.com/LemmyNet/lemmy-ui.git
synced 2024-11-29 07:41:13 +00:00
Add moderator view button (#1993)
* update lemmy-js-client version * add moderator view to moderator view select * fix some linting problems introduced in recent lemmy-js-client changes * remove form id from mardown-textarea submit * add default delete_content as false * manually check if a user is an admin * update lemmy-js-client to 0.19.0-rc.7
This commit is contained in:
parent
c49ca9e195
commit
8e2609a96d
9 changed files with 45 additions and 17 deletions
15
package.json
15
package.json
|
@ -23,9 +23,16 @@
|
||||||
"translations:update": "git submodule update --remote --recursive"
|
"translations:update": "git submodule update --remote --recursive"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"*.{ts,tsx,js}": ["prettier --write", "eslint --fix"],
|
"*.{ts,tsx,js}": [
|
||||||
"*.{css, scss}": ["prettier --write"],
|
"prettier --write",
|
||||||
"package.json": ["sortpack"]
|
"eslint --fix"
|
||||||
|
],
|
||||||
|
"*.{css, scss}": [
|
||||||
|
"prettier --write"
|
||||||
|
],
|
||||||
|
"package.json": [
|
||||||
|
"sortpack"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/plugin-proposal-decorators": "^7.21.5",
|
"@babel/plugin-proposal-decorators": "^7.21.5",
|
||||||
|
@ -61,7 +68,7 @@
|
||||||
"inferno-router": "^8.2.2",
|
"inferno-router": "^8.2.2",
|
||||||
"inferno-server": "^8.2.2",
|
"inferno-server": "^8.2.2",
|
||||||
"jwt-decode": "^3.1.2",
|
"jwt-decode": "^3.1.2",
|
||||||
"lemmy-js-client": "0.19.0-rc.1",
|
"lemmy-js-client": "^0.19.0-rc.7",
|
||||||
"lodash.isequal": "^4.5.0",
|
"lodash.isequal": "^4.5.0",
|
||||||
"markdown-it": "^13.0.1",
|
"markdown-it": "^13.0.1",
|
||||||
"markdown-it-container": "^3.0.0",
|
"markdown-it-container": "^3.0.0",
|
||||||
|
|
|
@ -73,7 +73,8 @@ export default async function ({
|
||||||
description: "Create a post.",
|
description: "Create a post.",
|
||||||
},
|
},
|
||||||
].concat(
|
].concat(
|
||||||
my_user?.local_user_view.person.admin || !community_creation_admin_only
|
my_user?.local_user_view.local_user.admin ||
|
||||||
|
!community_creation_admin_only
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
name: "Create Community",
|
name: "Create Community",
|
||||||
|
|
|
@ -84,7 +84,7 @@ export class CommentForm extends Component<CommentFormProps, any> {
|
||||||
: capitalizeFirstLetter(I18NextService.i18n.t("reply"));
|
: capitalizeFirstLetter(I18NextService.i18n.t("reply"));
|
||||||
}
|
}
|
||||||
|
|
||||||
handleCommentSubmit(content: string, form_id: string, language_id?: number) {
|
handleCommentSubmit(content: string, language_id?: number) {
|
||||||
const { node, onUpsertComment, edit } = this.props;
|
const { node, onUpsertComment, edit } = this.props;
|
||||||
if (typeof node === "number") {
|
if (typeof node === "number") {
|
||||||
const post_id = node;
|
const post_id = node;
|
||||||
|
@ -92,7 +92,6 @@ export class CommentForm extends Component<CommentFormProps, any> {
|
||||||
content,
|
content,
|
||||||
post_id,
|
post_id,
|
||||||
language_id,
|
language_id,
|
||||||
form_id,
|
|
||||||
auth: myAuthRequired(),
|
auth: myAuthRequired(),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -101,7 +100,6 @@ export class CommentForm extends Component<CommentFormProps, any> {
|
||||||
onUpsertComment({
|
onUpsertComment({
|
||||||
content,
|
content,
|
||||||
comment_id,
|
comment_id,
|
||||||
form_id,
|
|
||||||
language_id,
|
language_id,
|
||||||
auth: myAuthRequired(),
|
auth: myAuthRequired(),
|
||||||
});
|
});
|
||||||
|
@ -112,7 +110,6 @@ export class CommentForm extends Component<CommentFormProps, any> {
|
||||||
content,
|
content,
|
||||||
parent_id,
|
parent_id,
|
||||||
post_id,
|
post_id,
|
||||||
form_id,
|
|
||||||
language_id,
|
language_id,
|
||||||
auth: myAuthRequired(),
|
auth: myAuthRequired(),
|
||||||
});
|
});
|
||||||
|
|
|
@ -107,6 +107,27 @@ export class ListingTypeSelect extends Component<
|
||||||
>
|
>
|
||||||
{I18NextService.i18n.t("all")}
|
{I18NextService.i18n.t("all")}
|
||||||
</label>
|
</label>
|
||||||
|
{(UserService.Instance.myUserInfo?.moderates.length ?? 0) > 0 && (
|
||||||
|
<>
|
||||||
|
<input
|
||||||
|
id={`${this.id}-moderator-view`}
|
||||||
|
type="radio"
|
||||||
|
className="btn-check"
|
||||||
|
value={"ModeratorView"}
|
||||||
|
checked={this.state.type_ === "ModeratorView"}
|
||||||
|
onChange={linkEvent(this, this.handleTypeChange)}
|
||||||
|
/>
|
||||||
|
<label
|
||||||
|
htmlFor={`${this.id}-moderator-view`}
|
||||||
|
title={I18NextService.i18n.t("moderator_view_description")}
|
||||||
|
className={classNames("pointer btn btn-outline-secondary", {
|
||||||
|
active: this.state.type_ === "ModeratorView",
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{I18NextService.i18n.t("moderator_view")}
|
||||||
|
</label>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ interface MarkdownTextAreaProps {
|
||||||
hideNavigationWarnings?: boolean;
|
hideNavigationWarnings?: boolean;
|
||||||
onContentChange?(val: string): void;
|
onContentChange?(val: string): void;
|
||||||
onReplyCancel?(): void;
|
onReplyCancel?(): void;
|
||||||
onSubmit?(content: string, formId: string, languageId?: number): void;
|
onSubmit?(content: string, languageId?: number): void;
|
||||||
allLanguages: Language[]; // TODO should probably be nullable
|
allLanguages: Language[]; // TODO should probably be nullable
|
||||||
siteLanguages: number[]; // TODO same
|
siteLanguages: number[]; // TODO same
|
||||||
}
|
}
|
||||||
|
@ -534,7 +534,7 @@ export class MarkdownTextArea extends Component<
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (i.state.content) {
|
if (i.state.content) {
|
||||||
i.setState({ loading: true, submitted: true });
|
i.setState({ loading: true, submitted: true });
|
||||||
i.props.onSubmit?.(i.state.content, i.formId, i.state.languageId);
|
i.props.onSubmit?.(i.state.content, i.state.languageId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -499,7 +499,7 @@ export class Profile extends Component<
|
||||||
classNames="ms-1"
|
classNames="ms-1"
|
||||||
isBanned={isBanned(pv.person)}
|
isBanned={isBanned(pv.person)}
|
||||||
isDeleted={pv.person.deleted}
|
isDeleted={pv.person.deleted}
|
||||||
isAdmin={pv.person.admin}
|
isAdmin={isAdmin(pv.person.id, admins)}
|
||||||
isBot={pv.person.bot_account}
|
isBot={pv.person.bot_account}
|
||||||
/>
|
/>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -1289,6 +1289,8 @@ export class Settings extends Component<any, SettingsState> {
|
||||||
const deleteAccountRes = await HttpService.client.deleteAccount({
|
const deleteAccountRes = await HttpService.client.deleteAccount({
|
||||||
password,
|
password,
|
||||||
auth: myAuthRequired(),
|
auth: myAuthRequired(),
|
||||||
|
// TODO: promt user weather he wants the content to be deleted
|
||||||
|
delete_content: false,
|
||||||
});
|
});
|
||||||
if (deleteAccountRes.state === "success") {
|
if (deleteAccountRes.state === "success") {
|
||||||
UserService.Instance.logout();
|
UserService.Instance.logout();
|
||||||
|
|
|
@ -3,5 +3,5 @@ import { UserService } from "../../services";
|
||||||
export default function amAdmin(
|
export default function amAdmin(
|
||||||
myUserInfo = UserService.Instance.myUserInfo,
|
myUserInfo = UserService.Instance.myUserInfo,
|
||||||
): boolean {
|
): boolean {
|
||||||
return myUserInfo?.local_user_view.person.admin ?? false;
|
return myUserInfo?.local_user_view.local_user.admin ?? false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6035,10 +6035,10 @@ leac@^0.6.0:
|
||||||
resolved "https://registry.yarnpkg.com/leac/-/leac-0.6.0.tgz#dcf136e382e666bd2475f44a1096061b70dc0912"
|
resolved "https://registry.yarnpkg.com/leac/-/leac-0.6.0.tgz#dcf136e382e666bd2475f44a1096061b70dc0912"
|
||||||
integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==
|
integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==
|
||||||
|
|
||||||
lemmy-js-client@0.19.0-rc.1:
|
lemmy-js-client@^0.19.0-rc.7:
|
||||||
version "0.19.0-rc.1"
|
version "0.19.0-rc.7"
|
||||||
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.19.0-rc.1.tgz#e6bf9abdd82ea7bb7035a120925498f6dd8851c9"
|
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.19.0-rc.7.tgz#822dd85c44c2df03eafb71c6e046dbeeb6ed854d"
|
||||||
integrity sha512-d0rDCvGV8lh8JkRjeEZdWjuE2OAvrDSei+4LUUSrcJVVMqG9PdjPRstKJ3JG4kT1aH3Nsp5AQynMyh9iQrfgTg==
|
integrity sha512-dqnyepju5sCRu+zwwm8GeQtXJpRnz/mARo//fZBPz1EgNA70crWheamBoJ9GSm19znsZzu0853t8GxVhNT9iIw==
|
||||||
dependencies:
|
dependencies:
|
||||||
cross-fetch "^3.1.5"
|
cross-fetch "^3.1.5"
|
||||||
form-data "^4.0.0"
|
form-data "^4.0.0"
|
||||||
|
|
Loading…
Reference in a new issue