problem with rev and lastLogin info changing triggering state updates
This commit is contained in:
parent
aec5e53e13
commit
e537eaedf5
|
@ -73,7 +73,7 @@ import "./App.css";
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import { getTextOptions } from "./lib/get-text-options";
|
import { getTextOptions } from "./lib/get-text-options";
|
||||||
import { getTextFromShareTarget } from "./lib/share-target";
|
import { getTextFromShareTarget } from "./lib/share-target";
|
||||||
import { objIsEqual } from "./lib/misc-helpers";
|
import { objIsEqual, userObjIsEqual } from "./lib/misc-helpers";
|
||||||
|
|
||||||
// to allow Moustrap key combos even when input fields are in focus
|
// to allow Moustrap key combos even when input fields are in focus
|
||||||
Mousetrap.prototype.stopCallback = function () {
|
Mousetrap.prototype.stopCallback = function () {
|
||||||
|
@ -145,7 +145,6 @@ class App extends Component<RouteComponentProps, State> {
|
||||||
ReactGA.pageview(window.location.pathname + window.location.search);
|
ReactGA.pageview(window.location.pathname + window.location.search);
|
||||||
}
|
}
|
||||||
dictionary.initialize().then((r) => {
|
dictionary.initialize().then((r) => {
|
||||||
console.log(this.props.location.pathname);
|
|
||||||
this.checkUserCronJob.start();
|
this.checkUserCronJob.start();
|
||||||
this.networkCronJob.start();
|
this.networkCronJob.start();
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -282,7 +281,10 @@ class App extends Component<RouteComponentProps, State> {
|
||||||
if (userOnServer === "offline") return;
|
if (userOnServer === "offline") return;
|
||||||
if (userOnServer) sendSubmissions();
|
if (userOnServer) sendSubmissions();
|
||||||
if (!userOnServer) {
|
if (!userOnServer) {
|
||||||
this.setState({ user: undefined });
|
if (this.state.user) {
|
||||||
|
console.log("setting state user because user is newly undefined");
|
||||||
|
this.setState({ user: undefined });
|
||||||
|
}
|
||||||
saveUser(undefined);
|
saveUser(undefined);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -291,7 +293,8 @@ class App extends Component<RouteComponentProps, State> {
|
||||||
...userOnServer,
|
...userOnServer,
|
||||||
userTextOptionsRecord,
|
userTextOptionsRecord,
|
||||||
};
|
};
|
||||||
if (!objIsEqual(prevUser, user)) {
|
if (!userObjIsEqual(prevUser, user)) {
|
||||||
|
console.log("setting state user because something is different about the user")
|
||||||
this.setState({ user });
|
this.setState({ user });
|
||||||
saveUser(user);
|
saveUser(user);
|
||||||
}
|
}
|
||||||
|
@ -409,7 +412,7 @@ class App extends Component<RouteComponentProps, State> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private checkUserCronJob = new CronJob("1/3 * * * * *", () => {
|
private checkUserCronJob = new CronJob("1/20 * * * * *", () => {
|
||||||
this.handleLoadUser();
|
this.handleLoadUser();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,15 @@
|
||||||
|
import * as AT from "../types/account-types";
|
||||||
|
|
||||||
export function objIsEqual(obj1: any, obj2: any): boolean {
|
export function objIsEqual(obj1: any, obj2: any): boolean {
|
||||||
if (!obj1 || !obj2) return false;
|
if (!obj1 || !obj2) return false;
|
||||||
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function userObjIsEqual(u1: AT.LingdocsUser | undefined, u2: AT.LingdocsUser | undefined): boolean {
|
||||||
|
if (!u1 || !u2) return false;
|
||||||
|
function removeFrills(u: AT.LingdocsUser) {
|
||||||
|
const { lastActive, _rev, ...rest } = u;
|
||||||
|
return rest;
|
||||||
|
}
|
||||||
|
return objIsEqual(removeFrills(u1), removeFrills(u2));
|
||||||
}
|
}
|
Loading…
Reference in New Issue