]> Untitled Git - lemmy.git/commitdiff
Allow mods that aren't creators to leave the mod team. Fixes #786 (#1091)
authorDessalines <dessalines@users.noreply.github.com>
Sun, 16 Aug 2020 15:05:32 +0000 (11:05 -0400)
committerGitHub <noreply@github.com>
Sun, 16 Aug 2020 15:05:32 +0000 (11:05 -0400)
ui/src/components/sidebar.tsx
ui/translations/en.json

index 411d6eccc0df6690f331fbacf34eea28071da899..b434bb874537158ccfe50d137217fff5fa956ccc 100644 (file)
@@ -7,9 +7,10 @@ import {
   DeleteCommunityForm,
   RemoveCommunityForm,
   UserView,
+  AddModToCommunityForm,
 } from '../interfaces';
 import { WebSocketService, UserService } from '../services';
-import { mdToHtml, getUnixTime, pictrsAvatarThumbnail } from '../utils';
+import { mdToHtml, getUnixTime } from '../utils';
 import { CommunityForm } from './community-form';
 import { UserListing } from './user-listing';
 import { CommunityLink } from './community-link';
@@ -30,6 +31,7 @@ interface SidebarState {
   showRemoveDialog: boolean;
   removeReason: string;
   removeExpires: string;
+  showConfirmLeaveModTeam: boolean;
 }
 
 export class Sidebar extends Component<SidebarProps, SidebarState> {
@@ -38,6 +40,7 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
     showRemoveDialog: false,
     removeReason: null,
     removeExpires: null,
+    showConfirmLeaveModTeam: false,
   };
 
   constructor(props: any, context: any) {
@@ -248,6 +251,45 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
                   </svg>
                 </span>
               </li>
+              {!this.amCreator &&
+                (!this.state.showConfirmLeaveModTeam ? (
+                  <li className="list-inline-item-action">
+                    <span
+                      class="pointer"
+                      onClick={linkEvent(
+                        this,
+                        this.handleShowConfirmLeaveModTeamClick
+                      )}
+                    >
+                      {i18n.t('leave_mod_team')}
+                    </span>
+                  </li>
+                ) : (
+                  <>
+                    <li className="list-inline-item-action">
+                      {i18n.t('are_you_sure')}
+                    </li>
+                    <li className="list-inline-item-action">
+                      <span
+                        class="pointer"
+                        onClick={linkEvent(this, this.handleLeaveModTeamClick)}
+                      >
+                        {i18n.t('yes')}
+                      </span>
+                    </li>
+                    <li className="list-inline-item-action">
+                      <span
+                        class="pointer"
+                        onClick={linkEvent(
+                          this,
+                          this.handleCancelLeaveModTeamClick
+                        )}
+                      >
+                        {i18n.t('no')}
+                      </span>
+                    </li>
+                  </>
+                ))}
               {this.amCreator && (
                 <li className="list-inline-item-action">
                   <span
@@ -344,6 +386,27 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
     WebSocketService.Instance.deleteCommunity(deleteForm);
   }
 
+  handleShowConfirmLeaveModTeamClick(i: Sidebar) {
+    i.state.showConfirmLeaveModTeam = true;
+    i.setState(i.state);
+  }
+
+  handleLeaveModTeamClick(i: Sidebar) {
+    let form: AddModToCommunityForm = {
+      user_id: UserService.Instance.user.id,
+      community_id: i.props.community.id,
+      added: false,
+    };
+    WebSocketService.Instance.addModToCommunity(form);
+    i.state.showConfirmLeaveModTeam = false;
+    i.setState(i.state);
+  }
+
+  handleCancelLeaveModTeamClick(i: Sidebar) {
+    i.state.showConfirmLeaveModTeam = false;
+    i.setState(i.state);
+  }
+
   handleUnsubscribe(communityId: number) {
     event.preventDefault();
     let form: FollowCommunityForm = {
index e3ccf8d9b5154b28251e2f49f1ef54cc61273fe9..cc73c326a242a52c1f1416412d5c1ab50d1ba228 100644 (file)
@@ -72,6 +72,7 @@
     "site_config": "Site Configuration",
     "remove_as_mod": "remove as mod",
     "appoint_as_mod": "appoint as mod",
+    "leave_mod_team": "leave mod team",
     "modlog": "Modlog",
     "admin": "admin",
     "admins": "admins",