diff --git a/public/news/2019-05-30-01.md b/public/news/2019-05-30-01.md
index 1f57180..550c259 100644
--- a/public/news/2019-05-30-01.md
+++ b/public/news/2019-05-30-01.md
@@ -2,15 +2,17 @@ Update Log
---
_30 May 2019_
-So changes I'm making today:
+So changes I've made today:
* Both incoming and outgoing combats are now visible.
* Google analytics implemented.
* The game ladder can now point to a specific rank with the URL: [https://kingdombattles.net/ladder?rank=0](ladder?rank=0)
+* THe same goes for the profile's combat log: [https://kingdombattles.net/profile?log=0](profile?log=0)
Known Bugs:
-* Someone's gold was negative. I have no idea how this happened.
+* Someone's gold was negative. It's been corrected, but the cause is unknown.
+* The ladder and profile flicker while the lists are being loaded.
Today's goal:
diff --git a/src/components/app.jsx b/src/components/app.jsx
index b402bff..d97c641 100644
--- a/src/components/app.jsx
+++ b/src/components/app.jsx
@@ -28,12 +28,14 @@ const LazyRoute = (props) => {
);
- } else {
+ } else if (props.pastDelay) {
return (
);
+ } else {
+ return null;
}
},
timeout: 10000
diff --git a/src/components/pages/profile.jsx b/src/components/pages/profile.jsx
index 649940e..a037b2d 100644
--- a/src/components/pages/profile.jsx
+++ b/src/components/pages/profile.jsx
@@ -12,8 +12,12 @@ import CombatLog from '../panels/combat_log.jsx';
class Profile extends React.Component {
constructor(props) {
super(props);
+
+ let params = queryString.parse(props.location.search);
+
this.state = {
- params: queryString.parse(props.location.search),
+ params: params,
+
username: '',
gold: 0,
recruits: 0,
@@ -21,7 +25,9 @@ class Profile extends React.Component {
spies: 0,
scientists: 0,
- warning: ''
+ warning: '',
+
+ start: params.log
};
this.sendRequest('/profilerequest', this.state.params.username ? this.state.params.username : this.props.username);
@@ -193,7 +199,7 @@ class Profile extends React.Component {
Combat Log
-
+
);
}
@@ -319,7 +325,6 @@ class Profile extends React.Component {
ProfileNotFoundMainPanel() {
return (
);
}
diff --git a/src/components/panels/combat_log.jsx b/src/components/panels/combat_log.jsx
index 4295c36..e0c0ff8 100644
--- a/src/components/panels/combat_log.jsx
+++ b/src/components/panels/combat_log.jsx
@@ -1,5 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
+import { withRouter } from 'react-router-dom';
import PagedCombatLog from './paged_combat_log.jsx';
@@ -7,14 +8,16 @@ class CombatLog extends React.Component {
constructor(props) {
super(props);
this.state = {
- start: props.start || 0,
- length: props.length || 20,
+ start: parseInt(props.start) || 0,
+ length: parseInt(props.length) || 20,
fetch: null
};
}
- componentDidUpdate() {
- this.state.fetch();
+ componentDidUpdate(prevProps, prevState, snapshot) {
+ if (JSON.stringify(this.state) !== JSON.stringify(prevState)) {
+ this.state.fetch();
+ }
}
render() {
@@ -44,15 +47,20 @@ class CombatLog extends React.Component {
}
increment() {
- this.setState({
- start: this.state.start + this.state.length
- });
+ let start = this.state.start + this.state.length;
+
+ this.props.history.push(`${this.props.location.pathname}?log=${start}`);
}
decrement() {
- this.setState({
- start: Math.max(0, this.state.start - this.state.length)
- });
+ let start = Math.max(0, this.state.start - this.state.length);
+
+ //don't decrement too far
+ if (start === this.state.start) {
+ return;
+ }
+
+ this.props.history.push(`${this.props.location.pathname}?log=${start}`);
}
//bound callbacks
@@ -62,7 +70,14 @@ class CombatLog extends React.Component {
onReceived(data) {
if (data.length === 0) {
- this.decrement();
+ let start = Math.max(0, this.state.start - this.state.length);
+
+ //don't decrement too far
+ if (start === this.state.start) {
+ return;
+ }
+
+ this.props.history.replace(`${this.props.location.pathname}?log=${start}`);
}
}
}
@@ -71,4 +86,4 @@ CombatLog.propTypes = {
username: PropTypes.string.isRequired
};
-export default CombatLog;
\ No newline at end of file
+export default withRouter(CombatLog);
\ No newline at end of file
diff --git a/src/components/panels/paged_combat_log.jsx b/src/components/panels/paged_combat_log.jsx
index bc41dfd..5da44fe 100644
--- a/src/components/panels/paged_combat_log.jsx
+++ b/src/components/panels/paged_combat_log.jsx
@@ -12,8 +12,6 @@ class PagedCombatLog extends React.Component {
if (props.getFetch) {
props.getFetch(this.fetchCombatLog.bind(this));
}
-
- this.fetchCombatLog();
}
render() {