]> Untitled Git - lemmy.git/commitdiff
Finishing up interpolation rework.
authorDessalines <tyhou13@gmx.com>
Sun, 2 Feb 2020 18:50:44 +0000 (13:50 -0500)
committerDessalines <tyhou13@gmx.com>
Sun, 2 Feb 2020 18:50:44 +0000 (13:50 -0500)
22 files changed:
README.md
ui/src/components/communities.tsx
ui/src/components/community-form.tsx
ui/src/components/community.tsx
ui/src/components/create-community.tsx
ui/src/components/create-post.tsx
ui/src/components/inbox.tsx
ui/src/components/login.tsx
ui/src/components/main.tsx
ui/src/components/modlog.tsx
ui/src/components/navbar.tsx
ui/src/components/password_change.tsx
ui/src/components/post-form.tsx
ui/src/components/post-listing.tsx
ui/src/components/post-listings.tsx
ui/src/components/post.tsx
ui/src/components/search.tsx
ui/src/components/setup.tsx
ui/src/components/sidebar.tsx
ui/src/components/site-form.tsx
ui/src/components/sort-select.tsx
ui/src/components/user.tsx

index dd550fdd659eb0ac4f1d0f98f2eca430eca0db23..74c0d05e4e44b8d8be49f604ee92883af052c819 100644 (file)
--- a/README.md
+++ b/README.md
@@ -167,18 +167,18 @@ If you'd like to add translations, take a look at the [English translation file]
 
 lang | done | missing
 ---- | ---- | -------
-ca | 100% | old
-de | 87% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,old,docs,message_sent,messages,old_password,matrix_user_id,private_message_disclaimer,send_notifications_to_email,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
-fa | 73% | cross_post,subscribed_to_communities,trending_communities,create_private_message,send_secure_message,send_message,message,mod,mods,moderates,remove_as_mod,appoint_as_mod,modlog,stickied,ban,ban_from_site,unban,unban_from_site,banned,number_of_subscribers,subscribers,both,saved,unsubscribe,subscribe,subscribed,old,api,docs,inbox,inbox_for,message_sent,notifications_error,messages,no_email_setup,matrix_user_id,private_message_disclaimer,url,body,copy_suggested_title,community,expand_here,subscribe_to_communities,theme,sponsor_message,general_sponsors,joined,by,to,from,landing_0,logged_in,community_moderator_already_exists,community_follower_already_exists,community_user_already_banned,no_slurs,admin_already_created,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
-eo | 75% | number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,theme,donate_to_lemmy,donate,from,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
-es | 100% | old
-fi | 100% | old
-fr | 83% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
-it | 84% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
-nl | 100% | 
-ru | 72% | cross_posts,cross_post,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
-sv | 83% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
-zh | 70% | cross_posts,cross_post,users,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,settings,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,nsfw,show_nsfw,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
+ca | 99% | old,time,action
+de | 87% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,old,docs,message_sent,messages,old_password,matrix_user_id,private_message_disclaimer,send_notifications_to_email,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+fa | 72% | cross_post,subscribed_to_communities,trending_communities,create_private_message,send_secure_message,send_message,message,mod,mods,moderates,remove_as_mod,appoint_as_mod,modlog,stickied,ban,ban_from_site,unban,unban_from_site,banned,number_of_subscribers,subscribers,both,saved,unsubscribe,subscribe,subscribed,old,api,docs,inbox,inbox_for,message_sent,notifications_error,messages,no_email_setup,matrix_user_id,private_message_disclaimer,url,body,copy_suggested_title,community,expand_here,subscribe_to_communities,theme,sponsor_message,general_sponsors,joined,by,to,from,landing_0,logged_in,community_moderator_already_exists,community_follower_already_exists,community_user_already_banned,no_slurs,admin_already_created,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+eo | 75% | number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,theme,donate_to_lemmy,donate,from,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+es | 99% | old,time,action
+fi | 99% | old,time,action
+fr | 82% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+it | 83% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+nl | 99% | time,action
+ru | 71% | cross_posts,cross_post,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+sv | 82% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+zh | 69% | cross_posts,cross_post,users,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,settings,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,nsfw,show_nsfw,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
 <!-- translationsstop -->
 
 If you'd like to update this report, run:
index eef39ccf2a28ff89441e8c9c597c961ae00340cd..8d130ae7119bb2d20e63a90d72d5dc7cc94dc993 100644 (file)
@@ -15,7 +15,6 @@ import {
 import { WebSocketService } from '../services';
 import { wsJsonToRes, toast } from '../utils';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 declare const Sortable: any;
 
@@ -76,37 +75,27 @@ export class Communities extends Component<any, CommunitiesState> {
     return (
       <div class="container">
         {this.state.loading ? (
-          <p class="text-center">
+          <h5 class="">
             <svg class="icon icon-spinner spin">
               <use xlinkHref="#icon-spinner"></use>
             </svg>
-          </p>
+          </h5>
         ) : (
           <div>
-            <h5>
-              { i18n.t('list_of_communities') }
-            </h5>
+            <h5>{i18n.t('list_of_communities')}</h5>
             <div class="table-responsive">
               <table id="community_table" class="table table-sm table-hover">
                 <thead class="pointer">
                   <tr>
-                    <th>
-                      { i18n.t('name') }
-                    </th>
-                    <th class="d-none d-lg-table-cell">
-                      { i18n.t('title') }
-                    </th>
-                    <th>
-                      { i18n.t('category') }
-                    </th>
-                    <th class="text-right">
-                      { i18n.t('subscribers') }
-                    </th>
+                    <th>{i18n.t('name')}</th>
+                    <th class="d-none d-lg-table-cell">{i18n.t('title')}</th>
+                    <th>{i18n.t('category')}</th>
+                    <th class="text-right">{i18n.t('subscribers')}</th>
                     <th class="text-right d-none d-lg-table-cell">
-                      { i18n.t('posts') }
+                      {i18n.t('posts')}
                     </th>
                     <th class="text-right d-none d-lg-table-cell">
-                      { i18n.t('comments') }
+                      {i18n.t('comments')}
                     </th>
                     <th></th>
                   </tr>
@@ -139,7 +128,7 @@ export class Communities extends Component<any, CommunitiesState> {
                               this.handleUnsubscribe
                             )}
                           >
-                            <T i18nKey="unsubscribe">#</T>
+                            {i18n.t('unsubscribe')}
                           </span>
                         ) : (
                           <span
@@ -149,7 +138,7 @@ export class Communities extends Component<any, CommunitiesState> {
                               this.handleSubscribe
                             )}
                           >
-                            { i18n.t('subscribe') }
+                            {i18n.t('subscribe')}
                           </span>
                         )}
                       </td>
@@ -173,7 +162,7 @@ export class Communities extends Component<any, CommunitiesState> {
             class="btn btn-sm btn-secondary mr-1"
             onClick={linkEvent(this, this.prevPage)}
           >
-            { i18n.t('prev') }
+            {i18n.t('prev')}
           </button>
         )}
 
@@ -182,7 +171,7 @@ export class Communities extends Component<any, CommunitiesState> {
             class="btn btn-sm btn-secondary"
             onClick={linkEvent(this, this.nextPage)}
           >
-            { i18n.t('next') }
+            {i18n.t('next')}
           </button>
         )}
       </div>
index 46fc41857e9919deb9640afaa7d4f72608b3694a..aaa3e6c41161c841e1b0281a382acf3513fd5f14 100644 (file)
@@ -21,7 +21,6 @@ import {
 import Tribute from 'tributejs/src/Tribute.js';
 import autosize from 'autosize';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 import { Community } from '../interfaces';
 
@@ -108,8 +107,8 @@ export class CommunityForm extends Component<
     return (
       <form onSubmit={linkEvent(this, this.handleCreateCommunitySubmit)}>
         <div class="form-group row">
-          <label class="col-12 col-form-label" for="community-name">
-            { i18n.t('name') }
+          <label class="col-12 col-form-label" htmlFor="community-name">
+            {i18n.t('name')}
           </label>
           <div class="col-12">
             <input
@@ -128,8 +127,8 @@ export class CommunityForm extends Component<
         </div>
 
         <div class="form-group row">
-          <label class="col-12 col-form-label" for="community-title">
-            { i18n.t('title') }
+          <label class="col-12 col-form-label" htmlFor="community-title">
+            {i18n.t('title')}
           </label>
           <div class="col-12">
             <input
@@ -145,14 +144,13 @@ export class CommunityForm extends Component<
           </div>
         </div>
         <div class="form-group row">
-          <label class="col-12 col-form-label" for="community-sidebar">
-            { i18n.t('sidebar') }
+          <label class="col-12 col-form-label" htmlFor={this.id}>
+            {i18n.t('sidebar')}
           </label>
           <div class="col-12">
             <textarea
               id={this.id}
               value={this.state.communityForm.description}
-              id="community-sidebar"
               onInput={linkEvent(this, this.handleCommunityDescriptionChange)}
               class="form-control"
               rows={3}
@@ -161,8 +159,8 @@ export class CommunityForm extends Component<
           </div>
         </div>
         <div class="form-group row">
-          <label class="col-12 col-form-label" for="community-category">
-            { i18n.t('category') }
+          <label class="col-12 col-form-label" htmlFor="community-category">
+            {i18n.t('category')}
           </label>
           <div class="col-12">
             <select
@@ -189,8 +187,8 @@ export class CommunityForm extends Component<
                   checked={this.state.communityForm.nsfw}
                   onChange={linkEvent(this, this.handleCommunityNsfwChange)}
                 />
-                <label class="form-check-label" for="community-nsfw">
-                  { i18n.t('nsfw') }
+                <label class="form-check-label" htmlFor="community-nsfw">
+                  {i18n.t('nsfw')}
                 </label>
               </div>
             </div>
@@ -215,7 +213,7 @@ export class CommunityForm extends Component<
                 class="btn btn-secondary"
                 onClick={linkEvent(this, this.handleCancel)}
               >
-                { i18n.t('cancel') }
+                {i18n.t('cancel')}
               </button>
             )}
           </div>
index 30756344ad273e419340da78498a711b1b9ffd06..da456fe5aa0d35c64db31f3969b0f199ad0b9147 100644 (file)
@@ -14,7 +14,7 @@ import {
   GetCommunityForm,
   ListingType,
   GetPostsResponse,
-  CreatePostLikeResponse,
+  PostResponse,
   WebSocketJsonResponse,
 } from '../interfaces';
 import { WebSocketService, UserService } from '../services';
@@ -28,7 +28,6 @@ import {
   postRefetchSeconds,
   toast,
 } from '../utils';
-import { T } from 'inferno-i18next';
 import { i18n } from '../i18next';
 
 interface State {
@@ -128,11 +127,11 @@ export class Community extends Component<any, State> {
     return (
       <div class="container">
         {this.state.loading ? (
-          <p class="text-center">
+          <h5>
             <svg class="icon icon-spinner spin">
               <use xlinkHref="#icon-spinner"></use>
             </svg>
-          </p>
+          </h5>
         ) : (
           <div class="row">
             <div class="col-12 col-md-8">
@@ -140,12 +139,12 @@ export class Community extends Component<any, State> {
                 {this.state.community.title}
                 {this.state.community.removed && (
                   <small className="ml-2 text-muted font-italic">
-                    { i18n.t('removed') }
+                    {i18n.t('removed')}
                   </small>
                 )}
                 {this.state.community.nsfw && (
                   <small className="ml-2 text-muted font-italic">
-                    { i18n.t('nsfw') }
+                    {i18n.t('nsfw')}
                   </small>
                 )}
               </h5>
@@ -192,7 +191,7 @@ export class Community extends Component<any, State> {
             class="btn btn-sm btn-secondary mr-1"
             onClick={linkEvent(this, this.prevPage)}
           >
-            { i18n.t('prev') }
+            {i18n.t('prev')}
           </button>
         )}
         {this.state.posts.length == fetchLimit && (
@@ -200,7 +199,7 @@ export class Community extends Component<any, State> {
             class="btn btn-sm btn-secondary"
             onClick={linkEvent(this, this.nextPage)}
           >
-            { i18n.t('next') }
+            {i18n.t('next')}
           </button>
         )}
       </div>
@@ -287,7 +286,7 @@ export class Community extends Component<any, State> {
       this.state.loading = false;
       this.setState(this.state);
     } else if (res.op == UserOperation.CreatePostLike) {
-      let data = res.data as CreatePostLikeResponse;
+      let data = res.data as PostResponse;
       let found = this.state.posts.find(c => c.id == data.post.id);
       found.my_vote = data.post.my_vote;
       found.score = data.post.score;
index 49cfb0e90f474cae93d988a1f4a0ec54d4671662..5c7a0a9b702e309892fffc9420da3145d639c38b 100644 (file)
@@ -3,7 +3,6 @@ import { CommunityForm } from './community-form';
 import { Community } from '../interfaces';
 import { WebSocketService } from '../services';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 export class CreateCommunity extends Component<any, any> {
   constructor(props: any, context: any) {
@@ -22,9 +21,7 @@ export class CreateCommunity extends Component<any, any> {
       <div class="container">
         <div class="row">
           <div class="col-12 col-lg-6 offset-lg-3 mb-4">
-            <h5>
-              { i18n.t('create_community') }
-            </h5>
+            <h5>{i18n.t('create_community')}</h5>
             <CommunityForm onCreate={this.handleCommunityCreate} />
           </div>
         </div>
index 39a5e5f03c5525eddb5979c07537eca4d63cb2e6..adbdfb5823b490a7e67f4d63505cd3c187475943 100644 (file)
@@ -3,7 +3,6 @@ import { PostForm } from './post-form';
 import { WebSocketService } from '../services';
 import { PostFormParams } from '../interfaces';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 export class CreatePost extends Component<any, any> {
   constructor(props: any, context: any) {
@@ -22,9 +21,7 @@ export class CreatePost extends Component<any, any> {
       <div class="container">
         <div class="row">
           <div class="col-12 col-lg-6 offset-lg-3 mb-4">
-            <h5>
-              { i18n.t('create_post') }
-            </h5>
+            <h5>{i18n.t('create_post')}</h5>
             <PostForm onCreate={this.handlePostCreate} params={this.params} />
           </div>
         </div>
index c89beb402d2d69bea9038e654e4c81aa2fc68503..d4fdf910205671c9cf557457e393f724ffeeed1a 100644 (file)
@@ -122,7 +122,7 @@ export class Inbox extends Component<any, InboxState> {
                 <ul class="list-inline mb-1 text-muted small font-weight-bold">
                   <li className="list-inline-item">
                     <span class="pointer" onClick={this.markAllAsRead}>
-                      { i18n.t('mark_all_as_read') }
+                      {i18n.t('mark_all_as_read')}
                     </span>
                   </li>
                 </ul>
@@ -147,40 +147,20 @@ export class Inbox extends Component<any, InboxState> {
           onChange={linkEvent(this, this.handleUnreadOrAllChange)}
           class="custom-select custom-select-sm w-auto mr-2"
         >
-          <option disabled>
-            { i18n.t('type') }
-            
-          </option>
-          <option value={UnreadOrAll.Unread}>
-            { i18n.t('unread') }
-          </option>
-          <option value={UnreadOrAll.All}>
-            { i18n.t('all') }
-          </option>
+          <option disabled>{i18n.t('type')}</option>
+          <option value={UnreadOrAll.Unread}>{i18n.t('unread')}</option>
+          <option value={UnreadOrAll.All}>{i18n.t('all')}</option>
         </select>
         <select
           value={this.state.unreadType}
           onChange={linkEvent(this, this.handleUnreadTypeChange)}
           class="custom-select custom-select-sm w-auto mr-2"
         >
-          <option disabled>
-            { i18n.t('type') }
-          </option>
-          <option value={UnreadType.All}>
-            { i18n.t('all') }
-          </option>
-          <option value={UnreadType.Both}>
-            { i18n.t('both') }
-          </option>
-          <option value={UnreadType.Replies}>
-            { i18n.t('replies') }
-          </option>
-          <option value={UnreadType.Mentions}>
-            { i18n.t('mentions') }
-          </option>
-          <option value={UnreadType.Messages}>
-            { i18n.t('messages') }
-          </option>
+          <option disabled>{i18n.t('type')}</option>
+          <option value={UnreadType.All}>{i18n.t('all')}</option>
+          <option value={UnreadType.Replies}>{i18n.t('replies')}</option>
+          <option value={UnreadType.Mentions}>{i18n.t('mentions')}</option>
+          <option value={UnreadType.Messages}>{i18n.t('messages')}</option>
         </select>
         <SortSelect
           sort={this.state.sort}
@@ -252,14 +232,14 @@ export class Inbox extends Component<any, InboxState> {
             class="btn btn-sm btn-secondary mr-1"
             onClick={linkEvent(this, this.prevPage)}
           >
-            { i18n.t('prev') }
+            {i18n.t('prev')}
           </button>
         )}
         <button
           class="btn btn-sm btn-secondary"
           onClick={linkEvent(this, this.nextPage)}
         >
-          { i18n.t('next') }
+          {i18n.t('next')}
         </button>
       </div>
     );
index 1aacac0ef09fc5404296e91dfa3693f05d36381c..8eee016e4bfc82d86e9acec6b00a16face40fde2 100644 (file)
@@ -13,7 +13,6 @@ import {
 import { WebSocketService, UserService } from '../services';
 import { wsJsonToRes, validEmail, toast } from '../utils';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface State {
   loginForm: LoginForm;
@@ -78,10 +77,13 @@ export class Login extends Component<any, State> {
     return (
       <div>
         <form onSubmit={linkEvent(this, this.handleLoginSubmit)}>
-          <h5>{ i18n.t('login') }</h5>
+          <h5>{i18n.t('login')}</h5>
           <div class="form-group row">
-            <label class="col-sm-2 col-form-label" for="login-email-or-username">
-                { i18n.t('email_or_username') }
+            <label
+              class="col-sm-2 col-form-label"
+              htmlFor="login-email-or-username"
+            >
+              {i18n.t('email_or_username')}
             </label>
             <div class="col-sm-10">
               <input
@@ -96,8 +98,8 @@ export class Login extends Component<any, State> {
             </div>
           </div>
           <div class="form-group row">
-            <label class="col-sm-2 col-form-label" for="login-password">
-                { i18n.t('password') }
+            <label class="col-sm-2 col-form-label" htmlFor="login-password">
+              {i18n.t('password')}
             </label>
             <div class="col-sm-10">
               <input
@@ -113,7 +115,7 @@ export class Login extends Component<any, State> {
                 onClick={linkEvent(this, this.handlePasswordReset)}
                 className="btn p-0 btn-link d-inline-block float-right text-muted small font-weight-bold"
               >
-                { i18n.t('forgot_password') }
+                {i18n.t('forgot_password')}
               </button>
             </div>
           </div>
@@ -137,13 +139,11 @@ export class Login extends Component<any, State> {
   registerForm() {
     return (
       <form onSubmit={linkEvent(this, this.handleRegisterSubmit)}>
-        <h2>
-          { i18n.t('sign_up') }
-        </h2>
+        <h5>{i18n.t('sign_up')}</h5>
 
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="register-username">
-            { i18n.t('username') }
+          <label class="col-sm-2 col-form-label" htmlFor="register-username">
+            {i18n.t('username')}
           </label>
 
           <div class="col-sm-10">
@@ -162,8 +162,8 @@ export class Login extends Component<any, State> {
         </div>
 
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="register-email">
-            { i18n.t('email') }
+          <label class="col-sm-2 col-form-label" htmlFor="register-email">
+            {i18n.t('email')}
           </label>
           <div class="col-sm-10">
             <input
@@ -179,8 +179,8 @@ export class Login extends Component<any, State> {
         </div>
 
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="register-password">
-            { i18n.t('password') }
+          <label class="col-sm-2 col-form-label" htmlFor="register-password">
+            {i18n.t('password')}
           </label>
           <div class="col-sm-10">
             <input
@@ -195,8 +195,11 @@ export class Login extends Component<any, State> {
         </div>
 
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="register-verify-password">
-            { i18n.t('verify_password') }
+          <label
+            class="col-sm-2 col-form-label"
+            htmlFor="register-verify-password"
+          >
+            {i18n.t('verify_password')}
           </label>
           <div class="col-sm-10">
             <input
@@ -210,7 +213,7 @@ export class Login extends Component<any, State> {
           </div>
         </div>
 
-        { this.state.enable_nsfw && (
+        {this.state.enable_nsfw && (
           <div class="form-group row">
             <div class="col-sm-10">
               <div class="form-check">
@@ -221,8 +224,8 @@ export class Login extends Component<any, State> {
                   checked={this.state.registerForm.show_nsfw}
                   onChange={linkEvent(this, this.handleRegisterShowNsfwChange)}
                 />
-                <label class="form-check-label" for="register-show-nsfw">
-                    { i18n.t('show_nsfw') }
+                <label class="form-check-label" htmlFor="register-show-nsfw">
+                  {i18n.t('show_nsfw')}
                 </label>
               </div>
             </div>
index e578cc831e99a5e760ac07902ba858f02cdb8b94..b39cec8bc3ca8a2b2d6467a7223813ecfd4a1cf4 100644 (file)
@@ -14,7 +14,7 @@ import {
   ListingType,
   SiteResponse,
   GetPostsResponse,
-  CreatePostLikeResponse,
+  PostResponse,
   Post,
   GetPostsForm,
   WebSocketJsonResponse,
@@ -159,7 +159,9 @@ export class Main extends Component<any, MainState> {
     return (
       <div class="container">
         <div class="row">
-          <main role="main" class="col-12 col-md-8">{this.posts()}</main>
+          <main role="main" class="col-12 col-md-8">
+            {this.posts()}
+          </main>
           <aside class="col-12 col-md-4">{this.my_sidebar()}</aside>
         </div>
       </div>
@@ -200,7 +202,7 @@ export class Main extends Component<any, MainState> {
                   class="btn btn-sm btn-secondary btn-block"
                   to="/create_community"
                 >
-                  <T i18nKey="create_a_community">#</T>
+                  {i18n.t('create_a_community')}
                 </Link>
               </div>
             </div>
@@ -270,73 +272,43 @@ export class Main extends Component<any, MainState> {
                     class="pointer"
                     onClick={linkEvent(this, this.handleEditClick)}
                   >
-                    <T i18nKey="edit">#</T>
+                    {i18n.t('edit')}
                   </span>
                 </li>
               </ul>
             )}
             <ul class="my-2 list-inline">
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_online"
-                  interpolation={{ count: this.state.site.online }}
-                >
-                  #
-                </T>
+                {i18n.t('number_online', { count: this.state.site.online })}
               </li>
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_of_users"
-                  interpolation={{
-                    count: this.state.site.site.number_of_users,
-                  }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_users', {
+                  count: this.state.site.site.number_of_users,
+                })}
               </li>
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_of_communities"
-                  interpolation={{
-                    count: this.state.site.site.number_of_communities,
-                  }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_communities', {
+                  count: this.state.site.site.number_of_communities,
+                })}
               </li>
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_of_posts"
-                  interpolation={{
-                    count: this.state.site.site.number_of_posts,
-                  }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_posts', {
+                  count: this.state.site.site.number_of_posts,
+                })}
               </li>
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_of_comments"
-                  interpolation={{
-                    count: this.state.site.site.number_of_comments,
-                  }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_comments', {
+                  count: this.state.site.site.number_of_comments,
+                })}
               </li>
               <li className="list-inline-item">
                 <Link className="badge badge-secondary" to="/modlog">
-                  <T i18nKey="modlog">#</T>
+                  {i18n.t('modlog')}
                 </Link>
               </li>
             </ul>
             <ul class="mt-1 list-inline small mb-0">
-              <li class="list-inline-item">
-                <T i18nKey="admins" class="d-inline">
-                  #
-                </T>
-                :
-              </li>
+              <li class="list-inline-item">{i18n.t('admins')}:</li>
               {this.state.site.admins.map(admin => (
                 <li class="list-inline-item">
                   <Link class="text-info" to={`/u/${admin.name}`}>
@@ -376,9 +348,7 @@ export class Main extends Component<any, MainState> {
       <div class="card border-secondary">
         <div class="card-body">
           <h5>
-            <T i18nKey="powered_by" class="d-inline">
-              #
-            </T>
+            {i18n.t('powered_by')}
             <svg class="icon mx-2">
               <use xlinkHref="#icon-mouse">#</use>
             </svg>
@@ -415,11 +385,11 @@ export class Main extends Component<any, MainState> {
     return (
       <div class="main-content-wrapper">
         {this.state.loading ? (
-          <p class="text-center">
+          <h5>
             <svg class="icon icon-spinner spin">
               <use xlinkHref="#icon-spinner"></use>
             </svg>
-          </p>
+          </h5>
         ) : (
           <div>
             {this.selects()}
@@ -476,7 +446,7 @@ export class Main extends Component<any, MainState> {
             class="btn btn-sm btn-secondary mr-1"
             onClick={linkEvent(this, this.prevPage)}
           >
-            <T i18nKey="prev">#</T>
+            {i18n.t('prev')}
           </button>
         )}
         {this.state.posts.length == fetchLimit && (
@@ -484,7 +454,7 @@ export class Main extends Component<any, MainState> {
             class="btn btn-sm btn-secondary"
             onClick={linkEvent(this, this.nextPage)}
           >
-            <T i18nKey="next">#</T>
+            {i18n.t('next')}
           </button>
         )}
       </div>
@@ -601,7 +571,7 @@ export class Main extends Component<any, MainState> {
       this.state.loading = false;
       this.setState(this.state);
     } else if (res.op == UserOperation.CreatePostLike) {
-      let data = res.data as CreatePostLikeResponse;
+      let data = res.data as PostResponse;
       let found = this.state.posts.find(c => c.id == data.post.id);
       found.my_vote = data.post.my_vote;
       found.score = data.post.score;
index 6da10eec39eb939fedd100f9bbe134241b66e7f8..f57e1c6acbaf880b84aaeee3625f636a3faf5585 100644 (file)
@@ -15,6 +15,7 @@ import {
   ModBan,
   ModAddCommunity,
   ModAdd,
+  WebSocketJsonResponse,
 } from '../interfaces';
 import { WebSocketService } from '../services';
 import { wsJsonToRes, addTypeInfo, fetchLimit, toast } from '../utils';
@@ -343,7 +344,7 @@ export class Modlog extends Component<any, ModlogState> {
     return (
       <div class="container">
         {this.state.loading ? (
-          <h5 class="text-center">
+          <h5 class="">
             <svg class="icon icon-spinner spin">
               <use xlinkHref="#icon-spinner"></use>
             </svg>
@@ -359,15 +360,15 @@ export class Modlog extends Component<any, ModlogState> {
                   /c/{this.state.communityName}{' '}
                 </Link>
               )}
-              <span>{ i18n.t('modlog') }</span>
+              <span>{i18n.t('modlog')}</span>
             </h5>
             <div class="table-responsive">
               <table id="modlog_table" class="table table-sm table-hover">
                 <thead class="pointer">
                   <tr>
-                    <th> { i18n.t('time')}</th>
-                    <th>{ i18n.t('mod')}</th>
-                    <th>{ i18n.t('action')}</th>
+                    <th> {i18n.t('time')}</th>
+                    <th>{i18n.t('mod')}</th>
+                    <th>{i18n.t('action')}</th>
                   </tr>
                 </thead>
                 {this.combined()}
@@ -388,14 +389,14 @@ export class Modlog extends Component<any, ModlogState> {
             class="btn btn-sm btn-secondary mr-1"
             onClick={linkEvent(this, this.prevPage)}
           >
-            { i18n.t('prev') }
+            {i18n.t('prev')}
           </button>
         )}
         <button
           class="btn btn-sm btn-secondary"
           onClick={linkEvent(this, this.nextPage)}
         >
-          { i18n.t('next') }
+          {i18n.t('next')}
         </button>
       </div>
     );
index cfec3651673b20a0433b616db100b8f9a8168bc9..fa52680da4f5cd7e55ff97d9f4007b9ce10dec22 100644 (file)
@@ -27,7 +27,6 @@ import {
 } from '../utils';
 import { version } from '../version';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface NavbarState {
   isLoggedIn: boolean;
@@ -113,12 +112,12 @@ export class Navbar extends Component<any, NavbarState> {
           <ul class="navbar-nav mr-auto">
             <li class="nav-item">
               <Link class="nav-link" to="/communities">
-                { i18n.t('communities') }
+                {i18n.t('communities')}
               </Link>
             </li>
             <li class="nav-item">
               <Link class="nav-link" to="/search">
-                { i18n.t('search') }
+                {i18n.t('search')}
               </Link>
             </li>
             <li class="nav-item">
@@ -129,17 +128,17 @@ export class Navbar extends Component<any, NavbarState> {
                   state: { prevPath: this.currentLocation },
                 }}
               >
-                { i18n.t('create_post') }
+                {i18n.t('create_post')}
               </Link>
             </li>
             <li class="nav-item">
               <Link class="nav-link" to="/create_community">
-                { i18n.t('create_community') }
+                {i18n.t('create_community')}
               </Link>
             </li>
             <li className="nav-item">
               <Link
-                class="nav-link ml-2"
+                class="nav-link"
                 to="/sponsors"
                 title={i18n.t('donate_to_lemmy')}
               >
@@ -187,7 +186,7 @@ export class Navbar extends Component<any, NavbarState> {
               </>
             ) : (
               <Link class="nav-link" to="/login">
-                { i18n.t('login_sign_up') }
+                {i18n.t('login_sign_up')}
               </Link>
             )}
           </ul>
index 7774b783b393ff9f7ce54c2c89c0daece3e6c540..9445e8ed610a58ffa831d6ca31976898aad900c5 100644 (file)
@@ -10,7 +10,6 @@ import {
 import { WebSocketService, UserService } from '../services';
 import { wsJsonToRes, capitalizeFirstLetter, toast } from '../utils';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface State {
   passwordChangeForm: PasswordChangeForm;
@@ -58,9 +57,7 @@ export class PasswordChange extends Component<any, State> {
       <div class="container">
         <div class="row">
           <div class="col-12 col-lg-6 offset-lg-3 mb-4">
-            <h5>
-              { i18n.t('password_change') }
-            </h5>
+            <h5>{i18n.t('password_change')}</h5>
             {this.passwordChangeForm()}
           </div>
         </div>
@@ -73,7 +70,7 @@ export class PasswordChange extends Component<any, State> {
       <form onSubmit={linkEvent(this, this.handlePasswordChangeSubmit)}>
         <div class="form-group row">
           <label class="col-sm-2 col-form-label">
-            <T i18nKey="new_password">#</T>
+            {i18n.t('new_password')}
           </label>
           <div class="col-sm-10">
             <input
@@ -87,7 +84,7 @@ export class PasswordChange extends Component<any, State> {
         </div>
         <div class="form-group row">
           <label class="col-sm-2 col-form-label">
-            <T i18nKey="verify_password">#</T>
+            {i18n.t('verify_password')}
           </label>
           <div class="col-sm-10">
             <input
index 858b6b795317dbae12be9e033ec3a3019e2b4115..5d9c0f3cb0f76f68f367f3e8a4549a59ee552ecb 100644 (file)
@@ -36,7 +36,6 @@ import {
 import autosize from 'autosize';
 import Tribute from 'tributejs/src/Tribute.js';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface PostFormProps {
   post?: Post; // If a post is given, that means this is an edit
@@ -151,8 +150,8 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
       <div>
         <form onSubmit={linkEvent(this, this.handlePostSubmit)}>
           <div class="form-group row">
-            <label class="col-sm-2 col-form-label" for="post-url">
-              { i18n.t('url') }
+            <label class="col-sm-2 col-form-label" htmlFor="post-url">
+              {i18n.t('url')}
             </label>
             <div class="col-sm-10">
               <input
@@ -168,12 +167,9 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                   class="mt-1 text-muted small font-weight-bold pointer"
                   onClick={linkEvent(this, this.copySuggestedTitle)}
                 >
-                  <T
-                    i18nKey="copy_suggested_title"
-                    interpolation={{ title: this.state.suggestedTitle }}
-                  >
-                    #
-                  </T>
+                  {i18n.t('copy_suggested_title', {
+                    title: this.state.suggestedTitle,
+                  })}
                 </div>
               )}
               <form>
@@ -182,7 +178,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                   className={`${UserService.Instance.user &&
                     'pointer'} d-inline-block mr-2 float-right text-muted small font-weight-bold`}
                 >
-                  { i18n.t('upload_image') }
+                  {i18n.t('upload_image')}
                 </label>
                 <input
                   id="file-upload"
@@ -202,7 +198,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                   target="_blank"
                   class="mr-2 d-inline-block float-right text-muted small font-weight-bold"
                 >
-                  { i18n.t('archive_link') }
+                  {i18n.t('archive_link')}
                 </a>
               )}
               {this.state.imageLoading && (
@@ -216,7 +212,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
               {this.state.crossPosts.length > 0 && (
                 <>
                   <div class="my-1 text-muted small font-weight-bold">
-                    { i18n.t('cross_posts') }
+                    {i18n.t('cross_posts')}
                   </div>
                   <PostListings showCommunity posts={this.state.crossPosts} />
                 </>
@@ -224,8 +220,8 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
             </div>
           </div>
           <div class="form-group row">
-            <label class="col-sm-2 col-form-label" for="post-title">
-              { i18n.t('title') }
+            <label class="col-sm-2 col-form-label" htmlFor="post-title">
+              {i18n.t('title')}
             </label>
             <div class="col-sm-10">
               <textarea
@@ -241,7 +237,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
               {this.state.suggestedPosts.length > 0 && (
                 <>
                   <div class="my-1 text-muted small font-weight-bold">
-                    { i18n.t('related_posts') }
+                    {i18n.t('related_posts')}
                   </div>
                   <PostListings posts={this.state.suggestedPosts} />
                 </>
@@ -250,14 +246,13 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
           </div>
 
           <div class="form-group row">
-            <label class="col-sm-2 col-form-label" for="post-body">
-              { i18n.t('body') }
+            <label class="col-sm-2 col-form-label" htmlFor={this.id}>
+              {i18n.t('body')}
             </label>
             <div class="col-sm-10">
               <textarea
                 id={this.id}
                 value={this.state.postForm.body}
-                id="post-body"
                 onInput={linkEvent(this, this.handlePostBodyChange)}
                 className={`form-control ${this.state.previewMode && 'd-none'}`}
                 rows={4}
@@ -275,7 +270,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                     .previewMode && 'active'}`}
                   onClick={linkEvent(this, this.handlePreviewToggle)}
                 >
-                  { i18n.t('preview') }
+                  {i18n.t('preview')}
                 </button>
               )}
               <a
@@ -283,14 +278,14 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                 target="_blank"
                 class="d-inline-block float-right text-muted small font-weight-bold"
               >
-                { i18n.t('formatting_help') }
+                {i18n.t('formatting_help')}
               </a>
             </div>
           </div>
           {!this.props.post && (
             <div class="form-group row">
-              <label class="col-sm-2 col-form-label" for="post-community">
-                { i18n.t('community') }
+              <label class="col-sm-2 col-form-label" htmlFor="post-community">
+                {i18n.t('community')}
               </label>
               <div class="col-sm-10">
                 <select
@@ -317,8 +312,8 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                     checked={this.state.postForm.nsfw}
                     onChange={linkEvent(this, this.handlePostNsfwChange)}
                   />
-                  <label class="form-check-label" for="post-nsfw">
-                    { i18n.t('nsfw') }
+                  <label class="form-check-label" htmlFor="post-nsfw">
+                    {i18n.t('nsfw')}
                   </label>
                 </div>
               </div>
@@ -343,7 +338,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
                   class="btn btn-secondary"
                   onClick={linkEvent(this, this.handleCancel)}
                 >
-                  { i18n.t('cancel') }
+                  {i18n.t('cancel')}
                 </button>
               )}
             </div>
index cb2e7316765488ad935cb29d7acff27d5f2082ed..ba8e6980c9149b9f069be5f998aef0d8ce695cba 100644 (file)
@@ -30,7 +30,6 @@ import {
   imageThumbnailer,
 } from '../utils';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface PostListingState {
   showEdit: boolean;
@@ -247,27 +246,27 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
             )}
             {post.removed && (
               <small className="ml-2 text-muted font-italic">
-                { i18n.t('removed') }
+                {i18n.t('removed')}
               </small>
             )}
             {post.deleted && (
               <small className="ml-2 text-muted font-italic">
-                { i18n.t('deleted') }
+                {i18n.t('deleted')}
               </small>
             )}
             {post.locked && (
               <small className="ml-2 text-muted font-italic">
-                { i18n.t('locked') }
+                {i18n.t('locked')}
               </small>
             )}
             {post.stickied && (
               <small className="ml-2 text-muted font-italic">
-                { i18n.t('stickied') }
+                {i18n.t('stickied')}
               </small>
             )}
             {post.nsfw && (
               <small className="ml-2 text-muted font-italic">
-                { i18n.t('nsfw') }
+                {i18n.t('nsfw')}
               </small>
             )}
           </div>
@@ -288,18 +287,16 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                 <span>{post.creator_name}</span>
               </Link>
               {this.isMod && (
-                <span className="mx-1 badge badge-light">
-                  { i18n.t('mod') }
-                </span>
+                <span className="mx-1 badge badge-light">{i18n.t('mod')}</span>
               )}
               {this.isAdmin && (
                 <span className="mx-1 badge badge-light">
-                  { i18n.t('admin') }
+                  {i18n.t('admin')}
                 </span>
               )}
               {(post.banned_from_community || post.banned) && (
                 <span className="mx-1 badge badge-danger">
-                  { i18n.t('banned') }
+                  {i18n.t('banned')}
                 </span>
               )}
               {this.props.showCommunity && (
@@ -326,12 +323,9 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
             </li>
             <li className="list-inline-item">
               <Link className="text-muted" to={`/post/${post.id}`}>
-                <T
-                  i18nKey="number_of_comments"
-                  interpolation={{ count: post.number_of_comments }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_comments', {
+                  count: post.number_of_comments,
+                })}
               </Link>
             </li>
           </ul>
@@ -353,7 +347,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                         className="text-muted"
                         to={`/create_post${this.crossPostParams}`}
                       >
-                        <T i18nKey="cross_post">#</T>
+                        {i18n.t('cross_post')}
                       </Link>
                     </li>
                   </>
@@ -365,7 +359,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                         class="pointer"
                         onClick={linkEvent(this, this.handleEditClick)}
                       >
-                        <T i18nKey="edit">#</T>
+                        {i18n.t('edit')}
                       </span>
                     </li>
                     <li className="list-inline-item mr-2">
@@ -406,14 +400,14 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                         class="pointer"
                         onClick={linkEvent(this, this.handleModRemoveShow)}
                       >
-                        { i18n.t('remove') }
+                        {i18n.t('remove')}
                       </span>
                     ) : (
                       <span
                         class="pointer"
                         onClick={linkEvent(this, this.handleModRemoveSubmit)}
                       >
-                        { i18n.t('restore') }
+                        {i18n.t('restore')}
                       </span>
                     )}
                   </li>
@@ -430,7 +424,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                               this.handleModBanFromCommunityShow
                             )}
                           >
-                            { i18n.t('ban') }
+                            {i18n.t('ban')}
                           </span>
                         ) : (
                           <span
@@ -440,7 +434,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                               this.handleModBanFromCommunitySubmit
                             )}
                           >
-                            { i18n.t('unban') }
+                            {i18n.t('unban')}
                           </span>
                         )}
                       </li>
@@ -473,12 +467,12 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                           this.handleShowConfirmTransferCommunity
                         )}
                       >
-                        <T i18nKey="transfer_community">#</T>
+                        {i18n.t('transfer_community')}
                       </span>
                     ) : (
                       <>
                         <span class="d-inline-block mr-1">
-                          <T i18nKey="are_you_sure">#</T>
+                          {i18n.t('are_you_sure')}
                         </span>
                         <span
                           class="pointer d-inline-block mr-1"
@@ -487,7 +481,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                             this.handleTransferCommunity
                           )}
                         >
-                          { i18n.t('yes') }
+                          {i18n.t('yes')}
                         </span>
                         <span
                           class="pointer d-inline-block"
@@ -496,7 +490,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                             this.handleCancelShowConfirmTransferCommunity
                           )}
                         >
-                          { i18n.t('no') }
+                          {i18n.t('no')}
                         </span>
                       </>
                     )}
@@ -512,14 +506,14 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                             class="pointer"
                             onClick={linkEvent(this, this.handleModBanShow)}
                           >
-                            { i18n.t('ban_from_site') }
+                            {i18n.t('ban_from_site')}
                           </span>
                         ) : (
                           <span
                             class="pointer"
                             onClick={linkEvent(this, this.handleModBanSubmit)}
                           >
-                            { i18n.t('unban_from_site') }
+                            {i18n.t('unban_from_site')}
                           </span>
                         )}
                       </li>
@@ -549,18 +543,18 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                           this.handleShowConfirmTransferSite
                         )}
                       >
-                        { i18n.t('transfer_site') }
+                        {i18n.t('transfer_site')}
                       </span>
                     ) : (
                       <>
                         <span class="d-inline-block mr-1">
-                          { i18n.t('are_you_sure') }
+                          {i18n.t('are_you_sure')}
                         </span>
                         <span
                           class="pointer d-inline-block mr-1"
                           onClick={linkEvent(this, this.handleTransferSite)}
                         >
-                          { i18n.t('yes') }
+                          {i18n.t('yes')}
                         </span>
                         <span
                           class="pointer d-inline-block"
@@ -569,7 +563,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                             this.handleCancelShowConfirmTransferSite
                           )}
                         >
-                          { i18n.t('no') }
+                          {i18n.t('no')}
                         </span>
                       </>
                     )}
@@ -583,7 +577,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                   className="pointer"
                   onClick={linkEvent(this, this.handleViewSource)}
                 >
-                  { i18n.t('view_source') }
+                  {i18n.t('view_source')}
                 </span>
               </li>
             )}
@@ -601,15 +595,15 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
                 onInput={linkEvent(this, this.handleModRemoveReasonChange)}
               />
               <button type="submit" class="btn btn-secondary">
-                { i18n.t('remove_post') }
+                {i18n.t('remove_post')}
               </button>
             </form>
           )}
           {this.state.showBanDialog && (
             <form onSubmit={linkEvent(this, this.handleModBanBothSubmit)}>
               <div class="form-group row">
-                <label class="col-form-label" for="post-listing-reason">
-                  { i18n.t('reason') }
+                <label class="col-form-label" htmlFor="post-listing-reason">
+                  {i18n.t('reason')}
                 </label>
                 <input
                   type="text"
index d61316b5765ff46df4615f091ec412400599848e..df0bac8592f903fdffe888241b009a1a9192db73 100644 (file)
@@ -3,7 +3,6 @@ import { Link } from 'inferno-router';
 import { Post } from '../interfaces';
 import { PostListing } from './post-listing';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface PostListingsProps {
   posts: Array<Post>;
@@ -31,12 +30,12 @@ export class PostListings extends Component<PostListingsProps, any> {
           ))
         ) : (
           <>
-            <h5>
-              { i18n.t('no_posts') }
-            </h5>
+            <div>{i18n.t('no_posts')}</div>
             {this.props.showCommunity !== undefined && (
               <div>
-                <Link to="/communities">{ i18n.t('subscribe_to_communities') }</Link>
+                <Link to="/communities">
+                  {i18n.t('subscribe_to_communities')}
+                </Link>
               </div>
             )}
           </>
index 1d84efac1f1a0a29cb1a0d6dfd12e0137e956b57..9bde8585754df1ac8c84842d9f13c9d16e815494 100644 (file)
@@ -11,7 +11,6 @@ import {
   CommentForm as CommentFormI,
   CommentResponse,
   CommentSortType,
-  CreatePostLikeResponse,
   CommunityUser,
   CommunityResponse,
   CommentNode as CommentNodeI,
@@ -38,7 +37,6 @@ import { CommentForm } from './comment-form';
 import { CommentNodes } from './comment-nodes';
 import autosize from 'autosize';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface PostState {
   post: PostI;
@@ -155,11 +153,11 @@ export class Post extends Component<any, PostState> {
     return (
       <div class="container">
         {this.state.loading ? (
-          <p class="text-center">
+          <h5>
             <svg class="icon icon-spinner spin">
               <use xlinkHref="#icon-spinner"></use>
             </svg>
-          </p>
+          </h5>
         ) : (
           <div class="row">
             <div class="col-12 col-md-8 mb-3">
@@ -173,7 +171,7 @@ export class Post extends Component<any, PostState> {
               {this.state.crossPosts.length > 0 && (
                 <>
                   <div class="my-1 text-muted small font-weight-bold">
-                    { i18n.t('cross_posts') }
+                    {i18n.t('cross_posts')}
                   </div>
                   <PostListings showCommunity posts={this.state.crossPosts} />
                 </>
@@ -243,9 +241,7 @@ export class Post extends Component<any, PostState> {
     return (
       <div class="d-none d-md-block new-comments mb-3 card border-secondary">
         <div class="card-body small">
-          <h6>
-            { i18n.t('recent_comments') }
-          </h6>
+          <h6>{i18n.t('recent_comments')}</h6>
           {this.state.comments.map(comment => (
             <CommentNodes
               nodes={[{ comment: comment }]}
@@ -412,7 +408,7 @@ export class Post extends Component<any, PostState> {
       }
       this.setState(this.state);
     } else if (res.op == UserOperation.CreatePostLike) {
-      let data = res.data as CreatePostLikeResponse;
+      let data = res.data as PostResponse;
       this.state.post.my_vote = data.post.my_vote;
       this.state.post.score = data.post.score;
       this.state.post.upvotes = data.post.upvotes;
index e3789d5a8ed0c08f27dacd9e9cb4ac82f97da404..3acb716728766a69bdf7fa87965f5811d712d56d 100644 (file)
@@ -12,7 +12,7 @@ import {
   SearchForm,
   SearchResponse,
   SearchType,
-  CreatePostLikeResponse,
+  PostResponse,
   CommentResponse,
   WebSocketJsonResponse,
 } from '../interfaces';
@@ -30,7 +30,6 @@ import { PostListing } from './post-listing';
 import { SortSelect } from './sort-select';
 import { CommentNodes } from './comment-nodes';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface SearchState {
   q: string;
@@ -126,9 +125,7 @@ export class Search extends Component<any, SearchState> {
   render() {
     return (
       <div class="container">
-        <h5>
-          { i18n.t('search') }
-        </h5>
+        <h5>{i18n.t('search')}</h5>
         {this.selects()}
         {this.searchForm()}
         {this.state.type_ == SearchType.All && this.all()}
@@ -163,9 +160,7 @@ export class Search extends Component<any, SearchState> {
               <use xlinkHref="#icon-spinner"></use>
             </svg>
           ) : (
-            <span>
-              { i18n.t('search') }
-            </span>
+            <span>{i18n.t('search')}</span>
           )}
         </button>
       </form>
@@ -180,24 +175,14 @@ export class Search extends Component<any, SearchState> {
           onChange={linkEvent(this, this.handleTypeChange)}
           class="custom-select custom-select-sm w-auto"
         >
-          <option disabled>
-            { i18n.t('type') }
-          </option>
-          <option value={SearchType.All}>
-            { i18n.t('all') }
-          </option>
-          <option value={SearchType.Comments}>
-            { i18n.t('comments') }
-          </option>
-          <option value={SearchType.Posts}>
-            { i18n.t('posts') }
-          </option>
+          <option disabled>{i18n.t('type')}</option>
+          <option value={SearchType.All}>{i18n.t('all')}</option>
+          <option value={SearchType.Comments}>{i18n.t('comments')}</option>
+          <option value={SearchType.Posts}>{i18n.t('posts')}</option>
           <option value={SearchType.Communities}>
-            { i18n.t('communities') }
-          </option>
-          <option value={SearchType.Users}>
-            { i18n.t('users') }
+            {i18n.t('communities')}
           </option>
+          <option value={SearchType.Users}>{i18n.t('users')}</option>
         </select>
         <span class="ml-2">
           <SortSelect
@@ -383,14 +368,14 @@ export class Search extends Component<any, SearchState> {
             class="btn btn-sm btn-secondary mr-1"
             onClick={linkEvent(this, this.prevPage)}
           >
-            { i18n.t('prev') }
+            {i18n.t('prev')}
           </button>
         )}
         <button
           class="btn btn-sm btn-secondary"
           onClick={linkEvent(this, this.nextPage)}
         >
-          { i18n.t('next') }
+          {i18n.t('next')}
         </button>
       </div>
     );
@@ -404,11 +389,7 @@ export class Search extends Component<any, SearchState> {
           res.posts.length == 0 &&
           res.comments.length == 0 &&
           res.communities.length == 0 &&
-          res.users.length == 0 && (
-            <span>
-              { i18n.t('no_results') }
-            </span>
-          )}
+          res.users.length == 0 && <span>{i18n.t('no_results')}</span>}
       </div>
     );
   }
@@ -506,7 +487,7 @@ export class Search extends Component<any, SearchState> {
       }
       this.setState(this.state);
     } else if (res.op == UserOperation.CreatePostLike) {
-      let data = res.data as CreatePostLikeResponse;
+      let data = res.data as PostResponse;
       let found = this.state.searchResponse.posts.find(
         c => c.id == data.post.id
       );
index 029f22b96d1872bf6657c83def5bb7ffad8b67c2..ed1c88cd2677cc5b8ca0d5e140e77e19ca7e0dda 100644 (file)
@@ -11,7 +11,6 @@ import { WebSocketService, UserService } from '../services';
 import { wsJsonToRes, toast } from '../utils';
 import { SiteForm } from './site-form';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface State {
   userForm: RegisterForm;
@@ -61,9 +60,7 @@ export class Setup extends Component<any, State> {
       <div class="container">
         <div class="row">
           <div class="col-12 offset-lg-3 col-lg-6">
-            <h3>
-                { i18n.t('lemmy_instance_setup') }
-            </h3>
+            <h3>{i18n.t('lemmy_instance_setup')}</h3>
             {!this.state.doneRegisteringUser ? (
               this.registerUser()
             ) : (
@@ -78,10 +75,10 @@ export class Setup extends Component<any, State> {
   registerUser() {
     return (
       <form onSubmit={linkEvent(this, this.handleRegisterSubmit)}>
-        <h4>{ i18n.t('setup_admin')}</h4>
+        <h5>{i18n.t('setup_admin')}</h5>
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="username">
-            { i18n.t('username') } 
+          <label class="col-sm-2 col-form-label" htmlFor="username">
+            {i18n.t('username')}
           </label>
           <div class="col-sm-10">
             <input
@@ -98,8 +95,8 @@ export class Setup extends Component<any, State> {
           </div>
         </div>
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="email">
-            { i18n.t('email') }
+          <label class="col-sm-2 col-form-label" htmlFor="email">
+            {i18n.t('email')}
           </label>
 
           <div class="col-sm-10">
@@ -115,8 +112,8 @@ export class Setup extends Component<any, State> {
           </div>
         </div>
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="password">
-            { i18n.t('password')}
+          <label class="col-sm-2 col-form-label" htmlFor="password">
+            {i18n.t('password')}
           </label>
           <div class="col-sm-10">
             <input
@@ -130,8 +127,8 @@ export class Setup extends Component<any, State> {
           </div>
         </div>
         <div class="form-group row">
-          <label class="col-sm-2 col-form-label" for="verify-password">
-            { i18n.t('verify_password') }
+          <label class="col-sm-2 col-form-label" htmlFor="verify-password">
+            {i18n.t('verify_password')}
           </label>
           <div class="col-sm-10">
             <input
index 809ec91ed4a06445b8d50926ab5d422ea8954dcb..fe0b28bae42a5ae9108d95303b38bad84a357204 100644 (file)
@@ -16,7 +16,6 @@ import {
 } from '../utils';
 import { CommunityForm } from './community-form';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface SidebarProps {
   community: Community;
@@ -72,12 +71,12 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
               <span>{community.title}</span>
               {community.removed && (
                 <small className="ml-2 text-muted font-italic">
-                  { i18n.t('removed') }
+                  {i18n.t('removed')}
                 </small>
               )}
               {community.deleted && (
                 <small className="ml-2 text-muted font-italic">
-                  <T i18nKey="deleted">#</T>
+                  {i18n.t('deleted')}
                 </small>
               )}
             </h5>
@@ -92,7 +91,7 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
                       class="pointer"
                       onClick={linkEvent(this, this.handleEditClick)}
                     >
-                      { i18n.t('edit') }
+                      {i18n.t('edit')}
                     </span>
                   </li>
                   {this.amCreator && (
@@ -116,14 +115,14 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
                       class="pointer"
                       onClick={linkEvent(this, this.handleModRemoveShow)}
                     >
-                      { i18n.t('remove') }
+                      {i18n.t('remove')}
                     </span>
                   ) : (
                     <span
                       class="pointer"
                       onClick={linkEvent(this, this.handleModRemoveSubmit)}
                     >
-                      { i18n.t('restore') }
+                      {i18n.t('restore')}
                     </span>
                   )}
                 </li>
@@ -132,8 +131,8 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
             {this.state.showRemoveDialog && (
               <form onSubmit={linkEvent(this, this.handleModRemoveSubmit)}>
                 <div class="form-group row">
-                  <label class="col-form-label" for="remove-reason">
-                    { i18n.t('reason') }
+                  <label class="col-form-label" htmlFor="remove-reason">
+                    {i18n.t('reason')}
                   </label>
                   <input
                     type="text"
@@ -151,7 +150,7 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
                 {/* </div> */}
                 <div class="form-group row">
                   <button type="submit" class="btn btn-secondary">
-                    { i18n.t('remove_community') }
+                    {i18n.t('remove_community')}
                   </button>
                 </div>
               </form>
@@ -163,35 +162,26 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
                 </Link>
               </li>
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_of_subscribers"
-                  interpolation={{ count: community.number_of_subscribers }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_subscribers', {
+                  count: community.number_of_subscribers,
+                })}
               </li>
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_of_posts"
-                  interpolation={{ count: community.number_of_posts }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_posts', {
+                  count: community.number_of_posts,
+                })}
               </li>
               <li className="list-inline-item badge badge-secondary">
-                <T
-                  i18nKey="number_of_comments"
-                  interpolation={{ count: community.number_of_comments }}
-                >
-                  #
-                </T>
+                {i18n.t('number_of_comments', {
+                  count: community.number_of_comments,
+                })}
               </li>
               <li className="list-inline-item">
                 <Link
                   className="badge badge-secondary"
                   to={`/modlog/community/${this.props.community.id}`}
                 >
-                  <T i18nKey="modlog">#</T>
+                  {i18n.t('modlog')}
                 </Link>
               </li>
             </ul>
@@ -219,7 +209,7 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
                 'no-click'}`}
               to={`/create_post?community=${community.name}`}
             >
-              { i18n.t('create_a_post') }
+              {i18n.t('create_a_post')}
             </Link>
             <div>
               {community.subscribed ? (
@@ -227,14 +217,14 @@ export class Sidebar extends Component<SidebarProps, SidebarState> {
                   class="btn btn-sm btn-secondary btn-block"
                   onClick={linkEvent(community.id, this.handleUnsubscribe)}
                 >
-                  { i18n.t('unsubscribe') }
+                  {i18n.t('unsubscribe')}
                 </button>
               ) : (
                 <button
                   class="btn btn-sm btn-secondary btn-block"
                   onClick={linkEvent(community.id, this.handleSubscribe)}
                 >
-                  { i18n.t('subscribe') }
+                  {i18n.t('subscribe')}
                 </button>
               )}
             </div>
index 1c4f94ae6c650dcdad24deea9943ac684ef86a94..113e9c66433b42f63ccd8361ab2c09a3820bf572 100644 (file)
@@ -5,7 +5,6 @@ import { capitalizeFirstLetter, randomStr, setupTribute } from '../utils';
 import autosize from 'autosize';
 import Tribute from 'tributejs/src/Tribute.js';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface SiteFormProps {
   site?: Site; // If a site is given, that means this is an edit
@@ -67,8 +66,8 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
             : capitalizeFirstLetter(i18n.t('name'))
         } ${i18n.t('your_site')}`}</h5>
         <div class="form-group row">
-          <label class="col-12 col-form-label" for="create-site-name">
-            { i18n.t('name') }
+          <label class="col-12 col-form-label" htmlFor="create-site-name">
+            {i18n.t('name')}
           </label>
           <div class="col-12">
             <input
@@ -84,14 +83,13 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
           </div>
         </div>
         <div class="form-group row">
-          <label class="col-12 col-form-label" for="create-site-sidebar">
-            { i18n.t('sidebar') }
+          <label class="col-12 col-form-label" htmlFor={this.id}>
+            {i18n.t('sidebar')}
           </label>
           <div class="col-12">
             <textarea
               id={this.id}
               value={this.state.siteForm.description}
-              id="create-site-sidebar"
               onInput={linkEvent(this, this.handleSiteDescriptionChange)}
               class="form-control"
               rows={3}
@@ -109,8 +107,8 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
                 checked={this.state.siteForm.enable_downvotes}
                 onChange={linkEvent(this, this.handleSiteEnableDownvotesChange)}
               />
-              <label class="form-check-label" for="create-site-downvotes">
-                { i18n.t('enable_downvotes') }
+              <label class="form-check-label" htmlFor="create-site-downvotes">
+                {i18n.t('enable_downvotes')}
               </label>
             </div>
           </div>
@@ -125,8 +123,8 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
                 checked={this.state.siteForm.enable_nsfw}
                 onChange={linkEvent(this, this.handleSiteEnableNsfwChange)}
               />
-              <label class="form-check-label" for="create-site-enable-nsfw">
-                { i18n.t('enable_nsfw') }
+              <label class="form-check-label" htmlFor="create-site-enable-nsfw">
+                {i18n.t('enable_nsfw')}
               </label>
             </div>
           </div>
@@ -144,8 +142,11 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
                   this.handleSiteOpenRegistrationChange
                 )}
               />
-              <label class="form-check-label" for="create-site-open-registration">
-                { i18n.t('open_registration') }
+              <label
+                class="form-check-label"
+                htmlFor="create-site-open-registration"
+              >
+                {i18n.t('open_registration')}
               </label>
             </div>
           </div>
@@ -169,7 +170,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
                 class="btn btn-secondary"
                 onClick={linkEvent(this, this.handleCancel)}
               >
-                { i18n.t('cancel') }
+                {i18n.t('cancel')}
               </button>
             )}
           </div>
index fbdaa5942caf16abd1696cea0ba0f20592b4837f..5515f746c7dcfed3364fccf070601c599ca6f40a 100644 (file)
@@ -1,7 +1,6 @@
 import { Component, linkEvent } from 'inferno';
 import { SortType } from '../interfaces';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 interface SortSelectProps {
   sort: SortType;
@@ -30,33 +29,17 @@ export class SortSelect extends Component<SortSelectProps, SortSelectState> {
         onChange={linkEvent(this, this.handleSortChange)}
         class="custom-select custom-select-sm w-auto"
       >
-        <option disabled>
-          { i18n.t('sort_type') }
-        </option>
+        <option disabled>{i18n.t('sort_type')}</option>
         {!this.props.hideHot && (
-          <option value={SortType.Hot}>
-            { i18n.t('hot') }
-          </option>
+          <option value={SortType.Hot}>{i18n.t('hot')}</option>
         )}
-        <option value={SortType.New}>
-          { i18n.t('new') }
-        </option>
+        <option value={SortType.New}>{i18n.t('new')}</option>
         <option disabled>─────</option>
-        <option value={SortType.TopDay}>
-          { i18n.t('top_day') }
-        </option>
-        <option value={SortType.TopWeek}>
-          { i18n.t('week') }
-        </option>
-        <option value={SortType.TopMonth}>
-          { i18n.t('month') }
-        </option>
-        <option value={SortType.TopYear}>
-          { i18n.t('year') }
-        </option>
-        <option value={SortType.TopAll}>
-          { i18n.t('all') }
-        </option>
+        <option value={SortType.TopDay}>{i18n.t('top_day')}</option>
+        <option value={SortType.TopWeek}>{i18n.t('week')}</option>
+        <option value={SortType.TopMonth}>{i18n.t('month')}</option>
+        <option value={SortType.TopYear}>{i18n.t('year')}</option>
+        <option value={SortType.TopAll}>{i18n.t('all')}</option>
       </select>
     );
   }
index a2959d7ee99a26c14d0b2257880f0282408bf54c..ebdf6d5b0019a9898ff06bd70a395f4169747118 100644 (file)
@@ -18,7 +18,7 @@ import {
   BanUserResponse,
   AddAdminResponse,
   DeleteAccountForm,
-  CreatePostLikeResponse,
+  PostResponse,
   WebSocketJsonResponse,
 } from '../interfaces';
 import { WebSocketService, UserService } from '../services';
@@ -39,7 +39,6 @@ import { ListingTypeSelect } from './listing-type-select';
 import { CommentNodes } from './comment-nodes';
 import { MomentTime } from './moment-time';
 import { i18n } from '../i18next';
-import { T } from 'inferno-i18next';
 
 enum View {
   Overview,
@@ -199,11 +198,11 @@ export class User extends Component<any, UserState> {
     return (
       <div class="container">
         {this.state.loading ? (
-          <p class="text-center">
+          <h5>
             <svg class="icon icon-spinner spin">
               <use xlinkHref="#icon-spinner"></use>
             </svg>
-          </p>
+          </h5>
         ) : (
           <div class="row">
             <div class="col-12 col-md-8">
@@ -245,21 +244,11 @@ export class User extends Component<any, UserState> {
           onChange={linkEvent(this, this.handleViewChange)}
           class="custom-select custom-select-sm w-auto"
         >
-          <option disabled>
-            { i18n.t('view') }
-          </option>
-          <option value={View.Overview}>
-            { i18n.t('overview') }
-          </option>
-          <option value={View.Comments}>
-            { i18n.t('comments') }
-          </option>
-          <option value={View.Posts}>
-            { i18n.t('posts') }
-          </option>
-          <option value={View.Saved}>
-            { i18n.t('saved') }
-          </option>
+          <option disabled>{i18n.t('view')}</option>
+          <option value={View.Overview}>{i18n.t('overview')}</option>
+          <option value={View.Comments}>{i18n.t('comments')}</option>
+          <option value={View.Posts}>{i18n.t('posts')}</option>
+          <option value={View.Saved}>{i18n.t('saved')}</option>
         </select>
         <span class="ml-2">
           <SortSelect
@@ -359,7 +348,7 @@ export class User extends Component<any, UserState> {
                 <li className="list-inline-item">{user.name}</li>
                 {user.banned && (
                   <li className="list-inline-item badge badge-danger">
-                    { i18n.t('banned') }
+                    {i18n.t('banned')}
                   </li>
                 )}
               </ul>
@@ -371,38 +360,20 @@ export class User extends Component<any, UserState> {
               <table class="table table-bordered table-sm mt-2 mb-0">
                 <tr>
                   <td>
-                    <T
-                      i18nKey="number_of_points"
-                      interpolation={{ count: user.post_score }}
-                    >
-                      #
-                    </T>
+                    {i18n.t('number_of_points', { count: user.post_score })}
                   </td>
                   <td>
-                    <T
-                      i18nKey="number_of_posts"
-                      interpolation={{ count: user.number_of_posts }}
-                    >
-                      #
-                    </T>
+                    {i18n.t('number_of_posts', { count: user.number_of_posts })}
                   </td>
                 </tr>
                 <tr>
                   <td>
-                    <T
-                      i18nKey="number_of_points"
-                      interpolation={{ count: user.comment_score }}
-                    >
-                      #
-                    </T>
+                    {i18n.t('number_of_points', { count: user.comment_score })}
                   </td>
                   <td>
-                    <T
-                      i18nKey="number_of_comments"
-                      interpolation={{ count: user.number_of_comments }}
-                    >
-                      #
-                    </T>
+                    {i18n.t('number_of_comments', {
+                      count: user.number_of_comments,
+                    })}
                   </td>
                 </tr>
               </table>
@@ -412,7 +383,7 @@ export class User extends Component<any, UserState> {
                 class="btn btn-block btn-secondary mt-3"
                 onClick={linkEvent(this, this.handleLogoutClick)}
               >
-                { i18n.t('logout') }
+                {i18n.t('logout')}
               </button>
             ) : (
               <>
@@ -443,14 +414,10 @@ export class User extends Component<any, UserState> {
       <div>
         <div class="card border-secondary mb-3">
           <div class="card-body">
-            <h5>
-              { i18n.t('settings') }
-            </h5>
+            <h5>{i18n.t('settings')}</h5>
             <form onSubmit={linkEvent(this, this.handleUserSettingsSubmit)}>
               <div class="form-group">
-                <label>
-                  { i18n.t('avatar') }
-                </label>
+                <label>{i18n.t('avatar')}</label>
                 <form class="d-inline">
                   <label
                     htmlFor="file-upload"
@@ -458,7 +425,7 @@ export class User extends Component<any, UserState> {
                   >
                     {!this.state.userSettingsForm.avatar ? (
                       <span class="btn btn-sm btn-secondary">
-                        { i18n.t('upload_avatar') }
+                        {i18n.t('upload_avatar')}
                       </span>
                     ) : (
                       <img
@@ -481,20 +448,14 @@ export class User extends Component<any, UserState> {
                 </form>
               </div>
               <div class="form-group">
-                <label>
-                  { i18n.t('language') }
-                </label>
+                <label>{i18n.t('language')}</label>
                 <select
                   value={this.state.userSettingsForm.lang}
                   onChange={linkEvent(this, this.handleUserSettingsLangChange)}
                   class="ml-2 custom-select custom-select-sm w-auto"
                 >
-                  <option disabled>
-                    { i18n.t('language') }
-                  </option>
-                  <option value="browser">
-                    { i18n.t('browser_default') }
-                  </option>
+                  <option disabled>{i18n.t('language')}</option>
+                  <option value="browser">{i18n.t('browser_default')}</option>
                   <option disabled>──</option>
                   {languages.map(lang => (
                     <option value={lang.code}>{lang.name}</option>
@@ -502,17 +463,13 @@ export class User extends Component<any, UserState> {
                 </select>
               </div>
               <div class="form-group">
-                <label>
-                  { i18n.t('theme') }
-                </label>
+                <label>{i18n.t('theme')}</label>
                 <select
                   value={this.state.userSettingsForm.theme}
                   onChange={linkEvent(this, this.handleUserSettingsThemeChange)}
                   class="ml-2 custom-select custom-select-sm w-auto"
                 >
-                  <option disabled>
-                    { i18n.t('theme') }
-                  </option>
+                  <option disabled>{i18n.t('theme')}</option>
                   {themes.map(theme => (
                     <option value={theme}>{theme}</option>
                   ))}
@@ -520,9 +477,7 @@ export class User extends Component<any, UserState> {
               </div>
               <form className="form-group">
                 <label>
-                  <T i18nKey="sort_type" class="mr-2">
-                    #
-                  </T>
+                  <div class="mr-2">{i18n.t('sort_type')}</div>
                 </label>
                 <ListingTypeSelect
                   type_={this.state.userSettingsForm.default_listing_type}
@@ -531,9 +486,7 @@ export class User extends Component<any, UserState> {
               </form>
               <form className="form-group">
                 <label>
-                  <T i18nKey="type" class="mr-2">
-                    #
-                  </T>
+                  <div class="mr-2">{i18n.t('type')}</div>
                 </label>
                 <SortSelect
                   sort={this.state.userSettingsForm.default_sort_type}
@@ -541,8 +494,8 @@ export class User extends Component<any, UserState> {
                 />
               </form>
               <div class="form-group row">
-                <label class="col-lg-3 col-form-label" for="user-email">
-                  { i18n.t('email') }
+                <label class="col-lg-3 col-form-label" htmlFor="user-email">
+                  {i18n.t('email')}
                 </label>
                 <div class="col-lg-9">
                   <input
@@ -580,8 +533,8 @@ export class User extends Component<any, UserState> {
                 </div>
               </div>
               <div class="form-group row">
-                <label class="col-lg-5 col-form-label" for="user-password">
-                  { i18n.t('new_password') }
+                <label class="col-lg-5 col-form-label" htmlFor="user-password">
+                  {i18n.t('new_password')}
                 </label>
                 <div class="col-lg-7">
                   <input
@@ -597,8 +550,11 @@ export class User extends Component<any, UserState> {
                 </div>
               </div>
               <div class="form-group row">
-                <label class="col-lg-5 col-form-label" for="user-verify-password">
-                  { i18n.t('verify_password') }
+                <label
+                  class="col-lg-5 col-form-label"
+                  htmlFor="user-verify-password"
+                >
+                  {i18n.t('verify_password')}
                 </label>
                 <div class="col-lg-7">
                   <input
@@ -614,8 +570,11 @@ export class User extends Component<any, UserState> {
                 </div>
               </div>
               <div class="form-group row">
-                <label class="col-lg-5 col-form-label" for="user-old-password">
-                  { i18n.t('old_password') }
+                <label
+                  class="col-lg-5 col-form-label"
+                  htmlFor="user-old-password"
+                >
+                  {i18n.t('old_password')}
                 </label>
                 <div class="col-lg-7">
                   <input
@@ -643,8 +602,8 @@ export class User extends Component<any, UserState> {
                         this.handleUserSettingsShowNsfwChange
                       )}
                     />
-                    <label class="form-check-label" for="user-show-nsfw">
-                      { i18n.t('show_nsfw') }
+                    <label class="form-check-label" htmlFor="user-show-nsfw">
+                      {i18n.t('show_nsfw')}
                     </label>
                   </div>
                 </div>
@@ -661,8 +620,8 @@ export class User extends Component<any, UserState> {
                       this.handleUserSettingsShowAvatarsChange
                     )}
                   />
-                  <label class="form-check-label" for="user-show-avatars">
-                    { i18n.t('show_avatars') }
+                  <label class="form-check-label" htmlFor="user-show-avatars">
+                    {i18n.t('show_avatars')}
                   </label>
                 </div>
               </div>
@@ -681,8 +640,11 @@ export class User extends Component<any, UserState> {
                       this.handleUserSettingsSendNotificationsToEmailChange
                     )}
                   />
-                  <label class="form-check-label" for="user-send-notifications-to-email">
-                    { i18n.t('send_notifications_to_email') }
+                  <label
+                    class="form-check-label"
+                    htmlFor="user-send-notifications-to-email"
+                  >
+                    {i18n.t('send_notifications_to_email')}
                   </label>
                 </div>
               </div>
@@ -706,12 +668,12 @@ export class User extends Component<any, UserState> {
                     this.handleDeleteAccountShowConfirmToggle
                   )}
                 >
-                  { i18n.t('delete_account') }
+                  {i18n.t('delete_account')}
                 </button>
                 {this.state.deleteAccountShowConfirm && (
                   <>
                     <div class="my-2 alert alert-danger" role="alert">
-                      { i18n.t('delete_account_confirm') }
+                      {i18n.t('delete_account_confirm')}
                     </div>
                     <input
                       type="password"
@@ -742,7 +704,7 @@ export class User extends Component<any, UserState> {
                         this.handleDeleteAccountShowConfirmToggle
                       )}
                     >
-                      { i18n.t('cancel') }
+                      {i18n.t('cancel')}
                     </button>
                   </>
                 )}
@@ -760,9 +722,7 @@ export class User extends Component<any, UserState> {
         {this.state.moderates.length > 0 && (
           <div class="card border-secondary mb-3">
             <div class="card-body">
-              <h5>
-                { i18n.t('moderates') }
-              </h5>
+              <h5>{i18n.t('moderates')}</h5>
               <ul class="list-unstyled mb-0">
                 {this.state.moderates.map(community => (
                   <li>
@@ -785,9 +745,7 @@ export class User extends Component<any, UserState> {
         {this.state.follows.length > 0 && (
           <div class="card border-secondary mb-3">
             <div class="card-body">
-              <h5>
-                { i18n.t('subscribed') }
-              </h5>
+              <h5>{i18n.t('subscribed')}</h5>
               <ul class="list-unstyled mb-0">
                 {this.state.follows.map(community => (
                   <li>
@@ -812,14 +770,14 @@ export class User extends Component<any, UserState> {
             class="btn btn-sm btn-secondary mr-1"
             onClick={linkEvent(this, this.prevPage)}
           >
-            <T i18nKey="prev">#</T>
+            {i18n.t('prev')}
           </button>
         )}
         <button
           class="btn btn-sm btn-secondary"
           onClick={linkEvent(this, this.nextPage)}
         >
-          { i18n.t('next') }
+          {i18n.t('next')}
         </button>
       </div>
     );
@@ -1097,7 +1055,7 @@ export class User extends Component<any, UserState> {
       if (data.comment.my_vote !== null) found.my_vote = data.comment.my_vote;
       this.setState(this.state);
     } else if (res.op == UserOperation.CreatePostLike) {
-      let data = res.data as CreatePostLikeResponse;
+      let data = res.data as PostResponse;
       let found = this.state.posts.find(c => c.id == data.post.id);
       found.my_vote = data.post.my_vote;
       found.score = data.post.score;