SavePostForm,
CommunityUser,
UserView,
- BanType,
BanFromCommunityForm,
BanUserForm,
AddModToCommunityForm,
AddAdminForm,
TransferSiteForm,
TransferCommunityForm,
-} from '../interfaces';
+} from 'lemmy-js-client';
+import { BanType } from '../interfaces';
import { MomentTime } from './moment-time';
import { PostForm } from './post-form';
import { IFramelyCard } from './iframely-card';
showRemoveDialog: boolean;
removeReason: string;
showBanDialog: boolean;
+ removeData: boolean;
banReason: string;
banExpires: string;
banType: BanType;
showRemoveDialog: false,
removeReason: null,
showBanDialog: false,
+ removeData: null,
banReason: null,
banExpires: null,
banType: BanType.Community,
</li>
{(showVotes || this.state.upvotes !== this.state.score) && (
<>
- <li className="list-inline-item">•</li>
<span
- class="unselectable pointer mr-2"
+ class="unselectable pointer ml-3"
data-tippy-content={this.pointsTippy}
>
<li className="list-inline-item">
}`}
onClick={linkEvent(this, this.handlePostLike)}
>
- <svg class="small icon icon-inline mr-1">
- <use xlinkHref="#icon-arrow-up"></use>
+ <svg class="small icon icon-inline mx-1">
+ <use xlinkHref="#icon-arrow-up1"></use>
</svg>
{this.state.upvotes}
</a>
}`}
onClick={linkEvent(this, this.handlePostDisLike)}
>
- <svg class="small icon icon-inline mr-1">
- <use xlinkHref="#icon-arrow-down"></use>
+ <svg class="small icon icon-inline mx-1">
+ <use xlinkHref="#icon-arrow-down1"></use>
</svg>
{this.state.downvotes}
</a>
)}
</li>
)}
- {!post.banned_from_community && (
+ {!post.banned_from_community && post.creator_local && (
<li className="list-inline-item">
<span
class="pointer"
</>
)}
{/* Community creators and admins can transfer community to another mod */}
- {(this.amCommunityCreator || this.canAdmin) && this.isMod && (
- <li className="list-inline-item">
- {!this.state.showConfirmTransferCommunity ? (
- <span
- class="pointer"
- onClick={linkEvent(
- this,
- this.handleShowConfirmTransferCommunity
- )}
- >
- {i18n.t('transfer_community')}
- </span>
- ) : (
- <>
- <span class="d-inline-block mr-1">
- {i18n.t('are_you_sure')}
- </span>
- <span
- class="pointer d-inline-block mr-1"
- onClick={linkEvent(
- this,
- this.handleTransferCommunity
- )}
- >
- {i18n.t('yes')}
- </span>
+ {(this.amCommunityCreator || this.canAdmin) &&
+ this.isMod &&
+ post.creator_local && (
+ <li className="list-inline-item">
+ {!this.state.showConfirmTransferCommunity ? (
<span
- class="pointer d-inline-block"
+ class="pointer"
onClick={linkEvent(
this,
- this.handleCancelShowConfirmTransferCommunity
+ this.handleShowConfirmTransferCommunity
)}
>
- {i18n.t('no')}
+ {i18n.t('transfer_community')}
</span>
- </>
- )}
- </li>
- )}
+ ) : (
+ <>
+ <span class="d-inline-block mr-1">
+ {i18n.t('are_you_sure')}
+ </span>
+ <span
+ class="pointer d-inline-block mr-1"
+ onClick={linkEvent(
+ this,
+ this.handleTransferCommunity
+ )}
+ >
+ {i18n.t('yes')}
+ </span>
+ <span
+ class="pointer d-inline-block"
+ onClick={linkEvent(
+ this,
+ this.handleCancelShowConfirmTransferCommunity
+ )}
+ >
+ {i18n.t('no')}
+ </span>
+ </>
+ )}
+ </li>
+ )}
{/* Admins can ban from all, and appoint other admins */}
{this.canAdmin && (
<>
)}
</li>
)}
- {!post.banned && (
+ {!post.banned && post.creator_local && (
<li className="list-inline-item">
<span
class="pointer"
value={this.state.banReason}
onInput={linkEvent(this, this.handleModBanReasonChange)}
/>
+ <div class="form-group">
+ <div class="form-check">
+ <input
+ class="form-check-input"
+ id="mod-ban-remove-data"
+ type="checkbox"
+ checked={this.state.removeData}
+ onChange={linkEvent(this, this.handleModRemoveDataChange)}
+ />
+ <label class="form-check-label" htmlFor="mod-ban-remove-data">
+ {i18n.t('remove_posts_comments')}
+ </label>
+ </div>
+ </div>
</div>
{/* TODO hold off on expires until later */}
{/* <div class="form-group row"> */}
let post = this.props.post;
if (post.url) {
- params += `&url=${post.url}`;
+ params += `&url=${encodeURIComponent(post.url)}`;
}
if (this.props.post.body) {
params += `&body=${this.props.post.body}`;
i.setState(i.state);
}
+ handleModRemoveDataChange(i: PostListing, event: any) {
+ i.state.removeData = event.target.checked;
+ i.setState(i.state);
+ }
+
handleModRemoveSubmit(i: PostListing) {
event.preventDefault();
let form: RemovePostForm = {
event.preventDefault();
if (i.state.banType == BanType.Community) {
+ // If its an unban, restore all their data
+ let ban = !i.props.post.banned_from_community;
+ if (ban == false) {
+ i.state.removeData = false;
+ }
let form: BanFromCommunityForm = {
user_id: i.props.post.creator_id,
community_id: i.props.post.community_id,
- ban: !i.props.post.banned_from_community,
+ ban,
+ remove_data: i.state.removeData,
reason: i.state.banReason,
expires: getUnixTime(i.state.banExpires),
};
WebSocketService.Instance.banFromCommunity(form);
} else {
+ // If its an unban, restore all their data
+ let ban = !i.props.post.banned;
+ if (ban == false) {
+ i.state.removeData = false;
+ }
let form: BanUserForm = {
user_id: i.props.post.creator_id,
- ban: !i.props.post.banned,
+ ban,
+ remove_data: i.state.removeData,
reason: i.state.banReason,
expires: getUnixTime(i.state.banExpires),
};