]> Untitled Git - lemmy-ui.git/blob - src/shared/components/instances.tsx
First pass at v2_api
[lemmy-ui.git] / src / shared / components / instances.tsx
1 import { Component } from 'inferno';
2 import { GetSiteResponse } from 'lemmy-js-client';
3 import { setIsoData } from '../utils';
4 import { i18n } from '../i18next';
5 import { HtmlTags } from './html-tags';
6
7 interface InstancesState {
8   siteRes: GetSiteResponse;
9 }
10
11 export class Instances extends Component<any, InstancesState> {
12   private isoData = setIsoData(this.context);
13   private emptyState: InstancesState = {
14     siteRes: this.isoData.site_res,
15   };
16
17   constructor(props: any, context: any) {
18     super(props, context);
19     this.state = this.emptyState;
20   }
21
22   get documentTitle(): string {
23     return `${i18n.t('instances')} - ${this.state.siteRes.site_view.site.name}`;
24   }
25
26   render() {
27     return (
28       <div class="container">
29         <HtmlTags
30           title={this.documentTitle}
31           path={this.context.router.route.match.url}
32         />
33         <div>
34           <h5>{i18n.t('linked_instances')}</h5>
35           {this.state.siteRes &&
36           this.state.siteRes.federated_instances.length ? (
37             <ul>
38               {this.state.siteRes.federated_instances.map(i => (
39                 <li>
40                   <a href={`https://${i}`} target="_blank" rel="noopener">
41                     {i}
42                   </a>
43                 </li>
44               ))}
45             </ul>
46           ) : (
47             <div>{i18n.t('none_found')}</div>
48           )}
49         </div>
50       </div>
51     );
52   }
53 }