Fix server-side rendering after first load.

This commit is contained in:
dudeami0 2023-06-22 23:30:42 -04:00
parent e5e8f29c67
commit 2c85c87e44
14 changed files with 35 additions and 16 deletions

View file

@ -5,6 +5,7 @@ import {
setIsoData, setIsoData,
showLocal, showLocal,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { import {
getPageFromString, getPageFromString,
getQueryParams, getQueryParams,
@ -67,7 +68,7 @@ export class Communities extends Component<any, CommunitiesState> {
this.handleListingTypeChange = this.handleListingTypeChange.bind(this); this.handleListingTypeChange = this.handleListingTypeChange.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { listCommunitiesResponse } = this.isoData.routeData; const { listCommunitiesResponse } = this.isoData.routeData;
this.state = { this.state = {

View file

@ -15,6 +15,7 @@ import {
updateCommunityBlock, updateCommunityBlock,
updatePersonBlock, updatePersonBlock,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { import {
getPageFromString, getPageFromString,
getQueryParams, getQueryParams,
@ -197,7 +198,7 @@ export class Community extends Component<
this.handleFeaturePost = this.handleFeaturePost.bind(this); this.handleFeaturePost = this.handleFeaturePost.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { communityRes, commentsRes, postsRes } = this.isoData.routeData; const { communityRes, commentsRes, postsRes } = this.isoData.routeData;
this.state = { this.state = {

View file

@ -4,6 +4,7 @@ import {
setIsoData, setIsoData,
showLocal, showLocal,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { capitalizeFirstLetter } from "@utils/helpers"; import { capitalizeFirstLetter } from "@utils/helpers";
import { RouteDataResponse } from "@utils/types"; import { RouteDataResponse } from "@utils/types";
import classNames from "classnames"; import classNames from "classnames";
@ -74,7 +75,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
this.handleCreateEmoji = this.handleCreateEmoji.bind(this); this.handleCreateEmoji = this.handleCreateEmoji.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { bannedRes, instancesRes } = this.isoData.routeData; const { bannedRes, instancesRes } = this.isoData.routeData;
this.state = { this.state = {

View file

@ -13,6 +13,7 @@ import {
showLocal, showLocal,
updatePersonBlock, updatePersonBlock,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { import {
getPageFromString, getPageFromString,
getQueryParams, getQueryParams,
@ -263,7 +264,7 @@ export class Home extends Component<any, HomeState> {
this.handleFeaturePost = this.handleFeaturePost.bind(this); this.handleFeaturePost = this.handleFeaturePost.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { trendingCommunitiesRes, commentsRes, postsRes } = const { trendingCommunitiesRes, commentsRes, postsRes } =
this.isoData.routeData; this.isoData.routeData;

View file

@ -1,4 +1,5 @@
import { setIsoData } from "@utils/app"; import { setIsoData } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { RouteDataResponse } from "@utils/types"; import { RouteDataResponse } from "@utils/types";
import { Component } from "inferno"; import { Component } from "inferno";
import { import {
@ -35,7 +36,7 @@ export class Instances extends Component<any, InstancesState> {
super(props, context); super(props, context);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
this.state = { this.state = {
...this.state, ...this.state,
instancesRes: this.isoData.routeData.federatedInstancesResponse, instancesRes: this.isoData.routeData.federatedInstancesResponse,

View file

@ -5,6 +5,7 @@ import {
personToChoice, personToChoice,
setIsoData, setIsoData,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { import {
debounce, debounce,
getIdFromString, getIdFromString,
@ -660,7 +661,7 @@ export class Modlog extends Component<
this.handleModChange = this.handleModChange.bind(this); this.handleModChange = this.handleModChange.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { res, communityRes, modUserResponse, userResponse } = const { res, communityRes, modUserResponse, userResponse } =
this.isoData.routeData; this.isoData.routeData;

View file

@ -11,6 +11,7 @@ import {
setIsoData, setIsoData,
updatePersonBlock, updatePersonBlock,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { RouteDataResponse } from "@utils/types"; import { RouteDataResponse } from "@utils/types";
import { Component, linkEvent } from "inferno"; import { Component, linkEvent } from "inferno";
import { import {
@ -163,7 +164,7 @@ export class Inbox extends Component<any, InboxState> {
this.handleEditMessage = this.handleEditMessage.bind(this); this.handleEditMessage = this.handleEditMessage.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { mentionsRes, messagesRes, repliesRes } = this.isoData.routeData; const { mentionsRes, messagesRes, repliesRes } = this.isoData.routeData;
this.state = { this.state = {

View file

@ -10,7 +10,11 @@ import {
setIsoData, setIsoData,
updatePersonBlock, updatePersonBlock,
} from "@utils/app"; } from "@utils/app";
import { restoreScrollPosition, saveScrollPosition } from "@utils/browser"; import {
isBrowser,
restoreScrollPosition,
saveScrollPosition,
} from "@utils/browser";
import { import {
capitalizeFirstLetter, capitalizeFirstLetter,
futureDaysToUnixTime, futureDaysToUnixTime,
@ -206,7 +210,7 @@ export class Profile extends Component<
this.handleFeaturePost = this.handleFeaturePost.bind(this); this.handleFeaturePost = this.handleFeaturePost.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
this.state = { this.state = {
...this.state, ...this.state,
personRes: this.isoData.routeData.personResponse, personRes: this.isoData.routeData.personResponse,

View file

@ -3,6 +3,7 @@ import {
myAuthRequired, myAuthRequired,
setIsoData, setIsoData,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { RouteDataResponse } from "@utils/types"; import { RouteDataResponse } from "@utils/types";
import { Component, linkEvent } from "inferno"; import { Component, linkEvent } from "inferno";
import { import {
@ -58,7 +59,7 @@ export class RegistrationApplications extends Component<
this.handleApproveApplication = this.handleApproveApplication.bind(this); this.handleApproveApplication = this.handleApproveApplication.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
this.state = { this.state = {
...this.state, ...this.state,
appsRes: this.isoData.routeData.listRegistrationApplicationsResponse, appsRes: this.isoData.routeData.listRegistrationApplicationsResponse,

View file

@ -5,6 +5,7 @@ import {
myAuthRequired, myAuthRequired,
setIsoData, setIsoData,
} from "@utils/app"; } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { amAdmin } from "@utils/roles"; import { amAdmin } from "@utils/roles";
import { RouteDataResponse } from "@utils/types"; import { RouteDataResponse } from "@utils/types";
import { Component, linkEvent } from "inferno"; import { Component, linkEvent } from "inferno";
@ -108,7 +109,7 @@ export class Reports extends Component<any, ReportsState> {
this.handleResolvePrivateMessageReport.bind(this); this.handleResolvePrivateMessageReport.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { commentReportsRes, postReportsRes, messageReportsRes } = const { commentReportsRes, postReportsRes, messageReportsRes } =
this.isoData.routeData; this.isoData.routeData;

View file

@ -1,4 +1,5 @@
import { enableDownvotes, enableNsfw, myAuth, setIsoData } from "@utils/app"; import { enableDownvotes, enableNsfw, myAuth, setIsoData } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { getIdFromString, getQueryParams } from "@utils/helpers"; import { getIdFromString, getQueryParams } from "@utils/helpers";
import type { QueryParams } from "@utils/types"; import type { QueryParams } from "@utils/types";
import { Choice, RouteDataResponse } from "@utils/types"; import { Choice, RouteDataResponse } from "@utils/types";
@ -69,7 +70,7 @@ export class CreatePost extends Component<
this.handleSelectedCommunityChange.bind(this); this.handleSelectedCommunityChange.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { communityResponse: communityRes, initialCommunitiesRes } = const { communityResponse: communityRes, initialCommunitiesRes } =
this.isoData.routeData; this.isoData.routeData;

View file

@ -174,7 +174,7 @@ export class Post extends Component<any, PostState> {
this.state = { ...this.state, commentSectionRef: createRef() }; this.state = { ...this.state, commentSectionRef: createRef() };
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { commentsRes, postRes } = this.isoData.routeData; const { commentsRes, postRes } = this.isoData.routeData;
this.state = { this.state = {

View file

@ -1,4 +1,5 @@
import { getRecipientIdFromProps, myAuth, setIsoData } from "@utils/app"; import { getRecipientIdFromProps, myAuth, setIsoData } from "@utils/app";
import { isBrowser } from "@utils/browser";
import { RouteDataResponse } from "@utils/types"; import { RouteDataResponse } from "@utils/types";
import { Component } from "inferno"; import { Component } from "inferno";
import { import {
@ -44,7 +45,7 @@ export class CreatePrivateMessage extends Component<
this.handlePrivateMessageCreate.bind(this); this.handlePrivateMessageCreate.bind(this);
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
this.state = { this.state = {
...this.state, ...this.state,
recipientRes: this.isoData.routeData.recipientDetailsResponse, recipientRes: this.isoData.routeData.recipientDetailsResponse,

View file

@ -11,7 +11,11 @@ import {
setIsoData, setIsoData,
showLocal, showLocal,
} from "@utils/app"; } from "@utils/app";
import { restoreScrollPosition, saveScrollPosition } from "@utils/browser"; import {
isBrowser,
restoreScrollPosition,
saveScrollPosition,
} from "@utils/browser";
import { import {
capitalizeFirstLetter, capitalizeFirstLetter,
debounce, debounce,
@ -270,7 +274,7 @@ export class Search extends Component<any, SearchState> {
}; };
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (!isBrowser() || FirstLoadService.isFirstLoad) {
const { const {
communityResponse: communityRes, communityResponse: communityRes,
creatorDetailsResponse: creatorDetailsRes, creatorDetailsResponse: creatorDetailsRes,