From cffdfab8eb7157d09895074b559fd4aa6cbf6e99 Mon Sep 17 00:00:00 2001
From: Dessalines <dessalines@users.noreply.github.com>
Date: Wed, 21 Jul 2021 11:01:32 -0400
Subject: [PATCH] Removing community and user routes in favor of shortnames.
 Fixes #317 (#343)

---
 .../components/community/community-link.tsx   |  9 ++++-----
 src/shared/components/community/community.tsx | 20 ++++---------------
 .../components/person/person-listing.tsx      |  7 +++++--
 src/shared/components/person/person.tsx       |  8 +-------
 src/shared/components/post/create-post.tsx    |  5 -----
 src/shared/routes.ts                          | 20 -------------------
 6 files changed, 14 insertions(+), 55 deletions(-)

diff --git a/src/shared/components/community/community-link.tsx b/src/shared/components/community/community-link.tsx
index fe68a27..96db808 100644
--- a/src/shared/components/community/community-link.tsx
+++ b/src/shared/components/community/community-link.tsx
@@ -27,11 +27,10 @@ export class CommunityLink extends Component<CommunityLinkProps, any> {
       title = community.title;
       link = `/c/${community.name}`;
     } else {
-      name_ = `${community.name}@${hostname(community.actor_id)}`;
-      title = `${community.title}@${hostname(community.actor_id)}`;
-      link = !this.props.realLink
-        ? `/community/${community.id}`
-        : community.actor_id;
+      let domain = hostname(community.actor_id);
+      name_ = `${community.name}@${domain}`;
+      title = `${community.title}@${domain}`;
+      link = !this.props.realLink ? `/c/${name_}` : community.actor_id;
     }
 
     let apubName = `!${name_}`;
diff --git a/src/shared/components/community/community.tsx b/src/shared/components/community/community.tsx
index 247391d..09bc837 100644
--- a/src/shared/components/community/community.tsx
+++ b/src/shared/components/community/community.tsx
@@ -61,7 +61,6 @@ import { CommunityLink } from "./community-link";
 interface State {
   communityRes: GetCommunityResponse;
   siteRes: GetSiteResponse;
-  communityId: number;
   communityName: string;
   communityLoading: boolean;
   postsLoading: boolean;
@@ -91,7 +90,6 @@ export class Community extends Component<any, State> {
   private subscription: Subscription;
   private emptyState: State = {
     communityRes: undefined,
-    communityId: Number(this.props.match.params.id),
     communityName: this.props.match.params.name,
     communityLoading: true,
     postsLoading: true,
@@ -136,7 +134,6 @@ export class Community extends Component<any, State> {
 
   fetchCommunity() {
     let form: GetCommunity = {
-      id: this.state.communityId ? this.state.communityId : null,
       name: this.state.communityName ? this.state.communityName : null,
       auth: authField(false),
     };
@@ -198,7 +195,7 @@ export class Community extends Component<any, State> {
         saved_only: false,
       };
       setOptionalAuth(getPostsForm, req.auth);
-      this.setIdOrName(getPostsForm, id, name_);
+      this.setName(getPostsForm, name_);
       promises.push(req.client.getPosts(getPostsForm));
     } else {
       let getCommentsForm: GetComments = {
@@ -209,19 +206,14 @@ export class Community extends Component<any, State> {
         saved_only: false,
       };
       setOptionalAuth(getCommentsForm, req.auth);
-      this.setIdOrName(getCommentsForm, id, name_);
       promises.push(req.client.getComments(getCommentsForm));
     }
 
     return promises;
   }
 
-  static setIdOrName(obj: any, id: number, name_: string) {
-    if (id) {
-      obj.community_id = id;
-    } else {
-      obj.community_name = name_;
-    }
+  static setName(obj: any, name_: string) {
+    obj.community_name = name_;
   }
 
   componentDidUpdate(_: any, lastState: State) {
@@ -404,9 +396,7 @@ export class Community extends Component<any, State> {
     const sortStr = paramUpdates.sort || this.state.sort;
     const page = paramUpdates.page || this.state.page;
 
-    let typeView = this.state.communityName
-      ? `/c/${this.state.communityName}`
-      : `/community/${this.state.communityId}`;
+    let typeView = `/c/${this.state.communityName}`;
 
     this.props.history.push(
       `${typeView}/data_type/${dataTypeStr}/sort/${sortStr}/page/${page}`
@@ -420,7 +410,6 @@ export class Community extends Component<any, State> {
         limit: fetchLimit,
         sort: this.state.sort,
         type_: ListingType.Community,
-        community_id: this.state.communityId,
         community_name: this.state.communityName,
         saved_only: false,
         auth: authField(false),
@@ -432,7 +421,6 @@ export class Community extends Component<any, State> {
         limit: fetchLimit,
         sort: this.state.sort,
         type_: ListingType.Community,
-        community_id: this.state.communityId,
         community_name: this.state.communityName,
         saved_only: false,
         auth: authField(false),
diff --git a/src/shared/components/person/person-listing.tsx b/src/shared/components/person/person-listing.tsx
index cfd4161..60e509c 100644
--- a/src/shared/components/person/person-listing.tsx
+++ b/src/shared/components/person/person-listing.tsx
@@ -28,8 +28,11 @@ export class PersonListing extends Component<PersonListingProps, any> {
       apubName = `@${person.name}`;
       link = `/u/${person.name}`;
     } else {
-      apubName = `@${person.name}@${hostname(person.actor_id)}`;
-      link = !this.props.realLink ? `/user/${person.id}` : person.actor_id;
+      let domain = hostname(person.actor_id);
+      apubName = `@${person.name}@${domain}`;
+      link = !this.props.realLink
+        ? `/u/${person.name}@${domain}`
+        : person.actor_id;
     }
 
     let displayName = this.props.useApubName
diff --git a/src/shared/components/person/person.tsx b/src/shared/components/person/person.tsx
index a314a30..320c046 100644
--- a/src/shared/components/person/person.tsx
+++ b/src/shared/components/person/person.tsx
@@ -31,7 +31,6 @@ import {
   editPostFindRes,
   elementUrl,
   fetchLimit,
-  getIdFromProps,
   getLanguage,
   getUsernameFromProps,
   languages,
@@ -67,7 +66,6 @@ import { PersonListing } from "./person-listing";
 
 interface PersonState {
   personRes: GetPersonDetailsResponse;
-  personId: number;
   userName: string;
   view: PersonDetailsView;
   sort: SortType;
@@ -102,7 +100,6 @@ export class Person extends Component<any, PersonState> {
   private subscription: Subscription;
   private emptyState: PersonState = {
     personRes: undefined,
-    personId: getIdFromProps(this.props),
     userName: getUsernameFromProps(this.props),
     loading: true,
     view: Person.getViewFromProps(this.props.match.view),
@@ -164,7 +161,6 @@ export class Person extends Component<any, PersonState> {
 
   fetchUserData() {
     let form: GetPersonDetails = {
-      person_id: this.state.personId,
       username: this.state.userName,
       sort: this.state.sort,
       saved_only: this.state.view === PersonDetailsView.Saved,
@@ -969,9 +965,7 @@ export class Person extends Component<any, PersonState> {
     const viewStr = paramUpdates.view || PersonDetailsView[this.state.view];
     const sortStr = paramUpdates.sort || this.state.sort;
 
-    let typeView = this.state.userName
-      ? `/u/${this.state.userName}`
-      : `/user/${this.state.personId}`;
+    let typeView = `/u/${this.state.userName}`;
 
     this.props.history.push(
       `${typeView}/view/${viewStr}/sort/${sortStr}/page/${page}`
diff --git a/src/shared/components/post/create-post.tsx b/src/shared/components/post/create-post.tsx
index edd768d..d2945b5 100644
--- a/src/shared/components/post/create-post.tsx
+++ b/src/shared/components/post/create-post.tsx
@@ -161,11 +161,6 @@ export class CreatePost extends Component<any, CreatePostState> {
   get prevCommunityId(): number {
     if (this.props.match.params.id) {
       return this.props.match.params.id;
-    } else if (this.props.location.state) {
-      let lastLocation = this.props.location.state.prevPath;
-      if (lastLocation.includes("/community/")) {
-        return Number(lastLocation.split("/community/")[1]);
-      }
     }
     return null;
   }
diff --git a/src/shared/routes.ts b/src/shared/routes.ts
index 7bfc8f9..d486316 100644
--- a/src/shared/routes.ts
+++ b/src/shared/routes.ts
@@ -71,16 +71,6 @@ export const routes: IRoutePropsWithFetch[] = [
     component: Post,
     fetchInitialData: req => Post.fetchInitialData(req),
   },
-  {
-    path: `/community/:id/data_type/:data_type/sort/:sort/page/:page`,
-    component: Community,
-    fetchInitialData: req => Community.fetchInitialData(req),
-  },
-  {
-    path: `/community/:id`,
-    component: Community,
-    fetchInitialData: req => Community.fetchInitialData(req),
-  },
   {
     path: `/c/:name/data_type/:data_type/sort/:sort/page/:page`,
     component: Community,
@@ -96,16 +86,6 @@ export const routes: IRoutePropsWithFetch[] = [
     component: Person,
     fetchInitialData: req => Person.fetchInitialData(req),
   },
-  {
-    path: `/user/:id/view/:view/sort/:sort/page/:page`,
-    component: Person,
-    fetchInitialData: req => Person.fetchInitialData(req),
-  },
-  {
-    path: `/user/:id`,
-    component: Person,
-    fetchInitialData: req => Person.fetchInitialData(req),
-  },
   {
     path: `/u/:username`,
     component: Person,
-- 
2.44.1