mirror of
https://github.com/LemmyNet/lemmy-ui.git
synced 2024-11-25 23:43:28 +00:00
Don't allow transfer site. (#551)
* Don't allow transfer site. * Updating translations. * Adding leave admin team.
This commit is contained in:
parent
055ed466d3
commit
399149b278
|
@ -1 +1 @@
|
||||||
Subproject commit b18bfc1a8d512d081056cf5aa1f422e4710ef683
|
Subproject commit 0d63b5affe2273bb88b3593cdc13e4bb0f4d2d5d
|
|
@ -75,7 +75,7 @@
|
||||||
"husky": "^7.0.4",
|
"husky": "^7.0.4",
|
||||||
"import-sort-style-module": "^6.0.0",
|
"import-sort-style-module": "^6.0.0",
|
||||||
"iso-639-1": "^2.1.10",
|
"iso-639-1": "^2.1.10",
|
||||||
"lemmy-js-client": "0.15.0",
|
"lemmy-js-client": "0.15.1-rc.1",
|
||||||
"lint-staged": "^12.1.2",
|
"lint-staged": "^12.1.2",
|
||||||
"mini-css-extract-plugin": "^2.4.5",
|
"mini-css-extract-plugin": "^2.4.5",
|
||||||
"node-fetch": "^2.6.1",
|
"node-fetch": "^2.6.1",
|
||||||
|
|
|
@ -18,7 +18,6 @@ import {
|
||||||
RemoveComment,
|
RemoveComment,
|
||||||
SaveComment,
|
SaveComment,
|
||||||
TransferCommunity,
|
TransferCommunity,
|
||||||
TransferSite,
|
|
||||||
} from "lemmy-js-client";
|
} from "lemmy-js-client";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { i18n } from "../../i18next";
|
import { i18n } from "../../i18next";
|
||||||
|
@ -686,51 +685,6 @@ export class CommentNode extends Component<CommentNodeProps, CommentNodeState> {
|
||||||
))}
|
))}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{/* Site Creator can transfer to another admin */}
|
|
||||||
{this.amSiteCreator &&
|
|
||||||
this.isAdmin &&
|
|
||||||
cv.creator.local &&
|
|
||||||
(!this.state.showConfirmTransferSite ? (
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted"
|
|
||||||
onClick={linkEvent(
|
|
||||||
this,
|
|
||||||
this.handleShowConfirmTransferSite
|
|
||||||
)}
|
|
||||||
aria-label={i18n.t("transfer_site")}
|
|
||||||
>
|
|
||||||
{i18n.t("transfer_site")}
|
|
||||||
</button>
|
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted"
|
|
||||||
aria-label={i18n.t("are_you_sure")}
|
|
||||||
>
|
|
||||||
{i18n.t("are_you_sure")}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted"
|
|
||||||
onClick={linkEvent(
|
|
||||||
this,
|
|
||||||
this.handleTransferSite
|
|
||||||
)}
|
|
||||||
aria-label={i18n.t("yes")}
|
|
||||||
>
|
|
||||||
{i18n.t("yes")}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted"
|
|
||||||
onClick={linkEvent(
|
|
||||||
this,
|
|
||||||
this.handleCancelShowConfirmTransferSite
|
|
||||||
)}
|
|
||||||
aria-label={i18n.t("no")}
|
|
||||||
>
|
|
||||||
{i18n.t("no")}
|
|
||||||
</button>
|
|
||||||
</>
|
|
||||||
))}
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
@ -1339,16 +1293,6 @@ export class CommentNode extends Component<CommentNodeProps, CommentNodeState> {
|
||||||
i.setState(i.state);
|
i.setState(i.state);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleTransferSite(i: CommentNode) {
|
|
||||||
let form: TransferSite = {
|
|
||||||
person_id: i.props.node.comment_view.creator.id,
|
|
||||||
auth: authField(),
|
|
||||||
};
|
|
||||||
WebSocketService.Instance.send(wsClient.transferSite(form));
|
|
||||||
i.state.showConfirmTransferSite = false;
|
|
||||||
i.setState(i.state);
|
|
||||||
}
|
|
||||||
|
|
||||||
get isCommentNew(): boolean {
|
get isCommentNew(): boolean {
|
||||||
let now = moment.utc().subtract(10, "minutes");
|
let now = moment.utc().subtract(10, "minutes");
|
||||||
let then = moment.utc(this.props.node.comment_view.comment.published);
|
let then = moment.utc(this.props.node.comment_view.comment.published);
|
||||||
|
|
|
@ -39,6 +39,7 @@ interface AdminSettingsState {
|
||||||
loading: boolean;
|
loading: boolean;
|
||||||
banned: PersonViewSafe[];
|
banned: PersonViewSafe[];
|
||||||
siteConfigLoading: boolean;
|
siteConfigLoading: boolean;
|
||||||
|
leaveAdminTeamLoading: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class AdminSettings extends Component<any, AdminSettingsState> {
|
export class AdminSettings extends Component<any, AdminSettingsState> {
|
||||||
|
@ -57,6 +58,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
|
||||||
banned: [],
|
banned: [],
|
||||||
loading: true,
|
loading: true,
|
||||||
siteConfigLoading: null,
|
siteConfigLoading: null,
|
||||||
|
leaveAdminTeamLoading: null,
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(props: any, context: any) {
|
constructor(props: any, context: any) {
|
||||||
|
@ -159,10 +161,26 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
{this.leaveAdmin()}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
leaveAdmin() {
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
onClick={linkEvent(this, this.handleLeaveAdminTeam)}
|
||||||
|
class="btn btn-danger mb-2"
|
||||||
|
>
|
||||||
|
{this.state.leaveAdminTeamLoading ? (
|
||||||
|
<Spinner />
|
||||||
|
) : (
|
||||||
|
i18n.t("leave_admin_team")
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
bannedUsers() {
|
bannedUsers() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -230,6 +248,12 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
|
||||||
i.setState(i.state);
|
i.setState(i.state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleLeaveAdminTeam(i: AdminSettings) {
|
||||||
|
i.state.leaveAdminTeamLoading = true;
|
||||||
|
WebSocketService.Instance.send(wsClient.leaveAdmin({ auth: authField() }));
|
||||||
|
i.setState(i.state);
|
||||||
|
}
|
||||||
|
|
||||||
parseMessage(msg: any) {
|
parseMessage(msg: any) {
|
||||||
let op = wsUserOp(msg);
|
let op = wsUserOp(msg);
|
||||||
console.log(msg);
|
console.log(msg);
|
||||||
|
@ -257,6 +281,14 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
|
||||||
this.setState(this.state);
|
this.setState(this.state);
|
||||||
var textarea: any = document.getElementById(this.siteConfigTextAreaId);
|
var textarea: any = document.getElementById(this.siteConfigTextAreaId);
|
||||||
autosize(textarea);
|
autosize(textarea);
|
||||||
|
} else if (op == UserOperation.LeaveAdmin) {
|
||||||
|
let data = wsJsonToRes<GetSiteResponse>(msg).data;
|
||||||
|
this.state.siteRes.site_view = data.site_view;
|
||||||
|
this.setState(this.state);
|
||||||
|
this.state.leaveAdminTeamLoading = false;
|
||||||
|
toast(i18n.t("left_admin_team"));
|
||||||
|
this.setState(this.state);
|
||||||
|
this.context.router.history.push("/");
|
||||||
} else if (op == UserOperation.SaveSiteConfig) {
|
} else if (op == UserOperation.SaveSiteConfig) {
|
||||||
let data = wsJsonToRes<GetSiteConfigResponse>(msg).data;
|
let data = wsJsonToRes<GetSiteConfigResponse>(msg).data;
|
||||||
this.state.siteConfigRes = data;
|
this.state.siteConfigRes = data;
|
||||||
|
|
|
@ -18,7 +18,6 @@ import {
|
||||||
SavePost,
|
SavePost,
|
||||||
StickyPost,
|
StickyPost,
|
||||||
TransferCommunity,
|
TransferCommunity,
|
||||||
TransferSite,
|
|
||||||
} from "lemmy-js-client";
|
} from "lemmy-js-client";
|
||||||
import { externalHost } from "../../env";
|
import { externalHost } from "../../env";
|
||||||
import { i18n } from "../../i18next";
|
import { i18n } from "../../i18next";
|
||||||
|
@ -937,44 +936,6 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{/* Site Creator can transfer to another admin */}
|
|
||||||
{this.amSiteCreator &&
|
|
||||||
this.creatorIsAdmin &&
|
|
||||||
(!this.state.showConfirmTransferSite ? (
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted py-0"
|
|
||||||
onClick={linkEvent(this, this.handleShowConfirmTransferSite)}
|
|
||||||
aria-label={i18n.t("transfer_site")}
|
|
||||||
>
|
|
||||||
{i18n.t("transfer_site")}
|
|
||||||
</button>
|
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted py-0 d-inline-block mr-1"
|
|
||||||
aria-label={i18n.t("are_you_sure")}
|
|
||||||
>
|
|
||||||
{i18n.t("are_you_sure")}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted py-0 d-inline-block mr-1"
|
|
||||||
onClick={linkEvent(this, this.handleTransferSite)}
|
|
||||||
aria-label={i18n.t("yes")}
|
|
||||||
>
|
|
||||||
{i18n.t("yes")}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="btn btn-link btn-animate text-muted py-0 d-inline-block"
|
|
||||||
onClick={linkEvent(
|
|
||||||
this,
|
|
||||||
this.handleCancelShowConfirmTransferSite
|
|
||||||
)}
|
|
||||||
aria-label={i18n.t("no")}
|
|
||||||
>
|
|
||||||
{i18n.t("no")}
|
|
||||||
</button>
|
|
||||||
</>
|
|
||||||
))}
|
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -1617,16 +1578,6 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
|
||||||
i.setState(i.state);
|
i.setState(i.state);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleTransferSite(i: PostListing) {
|
|
||||||
let form: TransferSite = {
|
|
||||||
person_id: i.props.post_view.creator.id,
|
|
||||||
auth: authField(),
|
|
||||||
};
|
|
||||||
WebSocketService.Instance.send(wsClient.transferSite(form));
|
|
||||||
i.state.showConfirmTransferSite = false;
|
|
||||||
i.setState(i.state);
|
|
||||||
}
|
|
||||||
|
|
||||||
handleImageExpandClick(i: PostListing, event: any) {
|
handleImageExpandClick(i: PostListing, event: any) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
i.state.imageExpanded = !i.state.imageExpanded;
|
i.state.imageExpanded = !i.state.imageExpanded;
|
||||||
|
|
|
@ -645,7 +645,7 @@ export class Post extends Component<any, PostState> {
|
||||||
p => p.post.id != Number(this.props.match.params.id)
|
p => p.post.id != Number(this.props.match.params.id)
|
||||||
);
|
);
|
||||||
this.setState(this.state);
|
this.setState(this.state);
|
||||||
} else if (op == UserOperation.TransferSite) {
|
} else if (op == UserOperation.LeaveAdmin) {
|
||||||
let data = wsJsonToRes<GetSiteResponse>(msg).data;
|
let data = wsJsonToRes<GetSiteResponse>(msg).data;
|
||||||
this.state.siteRes = data;
|
this.state.siteRes = data;
|
||||||
this.setState(this.state);
|
this.setState(this.state);
|
||||||
|
|
|
@ -4629,10 +4629,10 @@ lcid@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
invert-kv "^1.0.0"
|
invert-kv "^1.0.0"
|
||||||
|
|
||||||
lemmy-js-client@0.15.0:
|
lemmy-js-client@0.15.1-rc.1:
|
||||||
version "0.15.0"
|
version "0.15.1-rc.1"
|
||||||
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.15.0.tgz#984aadbfb2c8e7cebb61d429f0cf576245876a0b"
|
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.15.1-rc.1.tgz#9d914098eefc25834f077c4690d4e3e2ab4f2c57"
|
||||||
integrity sha512-BWeI0cQOdjxDLHShyNGjYCMxdZf08sJnKKg2DNe9Js/sgMpv9OY9ZDiDOvV8R1QatqdAbwPv8HOgVQRAV6SYDQ==
|
integrity sha512-rs80HTzwayt2EpjQ+ruQM82bZydjk9kZUUjZidYzwmy1FBkWpG5+OBnW3X6YQ5ebswiobL8HraNfnWMm0zqvjQ==
|
||||||
|
|
||||||
levn@^0.4.1:
|
levn@^0.4.1:
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
|
|
Loading…
Reference in a new issue