|
|
@ -6,7 +6,7 @@ import { UserOperation, CommunityUser, GetFollowedCommunitiesResponse, ListCommu
|
|
|
|
import { WebSocketService, UserService } from '../services';
|
|
|
|
import { WebSocketService, UserService } from '../services';
|
|
|
|
import { PostListings } from './post-listings';
|
|
|
|
import { PostListings } from './post-listings';
|
|
|
|
import { SiteForm } from './site-form';
|
|
|
|
import { SiteForm } from './site-form';
|
|
|
|
import { msgOp, repoUrl, mdToHtml, fetchLimit, routeSortTypeToEnum, routeListingTypeToEnum } from '../utils';
|
|
|
|
import { msgOp, repoUrl, mdToHtml, fetchLimit, routeSortTypeToEnum, routeListingTypeToEnum, postRefetchSeconds } from '../utils';
|
|
|
|
import { i18n } from '../i18next';
|
|
|
|
import { i18n } from '../i18next';
|
|
|
|
import { T } from 'inferno-i18next';
|
|
|
|
import { T } from 'inferno-i18next';
|
|
|
|
|
|
|
|
|
|
|
@ -25,6 +25,7 @@ interface MainState {
|
|
|
|
export class Main extends Component<any, MainState> {
|
|
|
|
export class Main extends Component<any, MainState> {
|
|
|
|
|
|
|
|
|
|
|
|
private subscription: Subscription;
|
|
|
|
private subscription: Subscription;
|
|
|
|
|
|
|
|
private postFetcher: any;
|
|
|
|
private emptyState: MainState = {
|
|
|
|
private emptyState: MainState = {
|
|
|
|
subscribedCommunities: [],
|
|
|
|
subscribedCommunities: [],
|
|
|
|
trendingCommunities: [],
|
|
|
|
trendingCommunities: [],
|
|
|
@ -98,11 +99,12 @@ export class Main extends Component<any, MainState> {
|
|
|
|
|
|
|
|
|
|
|
|
WebSocketService.Instance.listCommunities(listCommunitiesForm);
|
|
|
|
WebSocketService.Instance.listCommunities(listCommunitiesForm);
|
|
|
|
|
|
|
|
|
|
|
|
this.fetchPosts();
|
|
|
|
this.keepFetchingPosts();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
componentWillUnmount() {
|
|
|
|
componentWillUnmount() {
|
|
|
|
this.subscription.unsubscribe();
|
|
|
|
this.subscription.unsubscribe();
|
|
|
|
|
|
|
|
clearInterval(this.postFetcher);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Necessary for back button for some reason
|
|
|
|
// Necessary for back button for some reason
|
|
|
@ -362,6 +364,7 @@ export class Main extends Component<any, MainState> {
|
|
|
|
i.setState(i.state);
|
|
|
|
i.setState(i.state);
|
|
|
|
i.updateUrl();
|
|
|
|
i.updateUrl();
|
|
|
|
i.fetchPosts();
|
|
|
|
i.fetchPosts();
|
|
|
|
|
|
|
|
window.scrollTo(0,0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
prevPage(i: Main) {
|
|
|
|
prevPage(i: Main) {
|
|
|
@ -370,6 +373,7 @@ export class Main extends Component<any, MainState> {
|
|
|
|
i.setState(i.state);
|
|
|
|
i.setState(i.state);
|
|
|
|
i.updateUrl();
|
|
|
|
i.updateUrl();
|
|
|
|
i.fetchPosts();
|
|
|
|
i.fetchPosts();
|
|
|
|
|
|
|
|
window.scrollTo(0,0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleSortChange(i: Main, event: any) {
|
|
|
|
handleSortChange(i: Main, event: any) {
|
|
|
@ -379,6 +383,7 @@ export class Main extends Component<any, MainState> {
|
|
|
|
i.setState(i.state);
|
|
|
|
i.setState(i.state);
|
|
|
|
i.updateUrl();
|
|
|
|
i.updateUrl();
|
|
|
|
i.fetchPosts();
|
|
|
|
i.fetchPosts();
|
|
|
|
|
|
|
|
window.scrollTo(0,0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleTypeChange(i: Main, event: any) {
|
|
|
|
handleTypeChange(i: Main, event: any) {
|
|
|
@ -388,6 +393,12 @@ export class Main extends Component<any, MainState> {
|
|
|
|
i.setState(i.state);
|
|
|
|
i.setState(i.state);
|
|
|
|
i.updateUrl();
|
|
|
|
i.updateUrl();
|
|
|
|
i.fetchPosts();
|
|
|
|
i.fetchPosts();
|
|
|
|
|
|
|
|
window.scrollTo(0,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
keepFetchingPosts() {
|
|
|
|
|
|
|
|
this.fetchPosts();
|
|
|
|
|
|
|
|
this.postFetcher = setInterval(() => this.fetchPosts(), postRefetchSeconds);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fetchPosts() {
|
|
|
|
fetchPosts() {
|
|
|
@ -437,7 +448,6 @@ export class Main extends Component<any, MainState> {
|
|
|
|
let res: GetPostsResponse = msg;
|
|
|
|
let res: GetPostsResponse = msg;
|
|
|
|
this.state.posts = res.posts;
|
|
|
|
this.state.posts = res.posts;
|
|
|
|
this.state.loading = false;
|
|
|
|
this.state.loading = false;
|
|
|
|
window.scrollTo(0,0);
|
|
|
|
|
|
|
|
this.setState(this.state);
|
|
|
|
this.setState(this.state);
|
|
|
|
} else if (op == UserOperation.CreatePostLike) {
|
|
|
|
} else if (op == UserOperation.CreatePostLike) {
|
|
|
|
let res: CreatePostLikeResponse = msg;
|
|
|
|
let res: CreatePostLikeResponse = msg;
|
|
|
|