Store the last tab in a cookie so the server can use it for embedding state
This commit is contained in:
parent
4cad5a0b33
commit
8684e2dea2
8 changed files with 95 additions and 49 deletions
|
@ -44,6 +44,7 @@
|
|||
"fontfaceobserver": "^2.0.9",
|
||||
"history": "4.5.1",
|
||||
"immutable": "^3.8.1",
|
||||
"js-cookie": "^2.1.4",
|
||||
"lodash": "^4.17.4",
|
||||
"react": "^15.4.2",
|
||||
"react-dom": "^15.4.2",
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import Cookie from 'js-cookie';
|
||||
import { setEnvironment } from '../actions/environment';
|
||||
import { addMessages } from '../actions/message';
|
||||
import { select, updateSelection } from '../actions/tab';
|
||||
|
@ -17,12 +18,12 @@ export default function initialState({ store }) {
|
|||
});
|
||||
|
||||
if (!store.getState().router.route) {
|
||||
let tab = localStorage.tab;
|
||||
const tab = Cookie.get('tab');
|
||||
if (tab) {
|
||||
tab = JSON.parse(tab);
|
||||
const [server, name = null] = tab.split(':');
|
||||
|
||||
if (find(env.servers, server => server.host === tab.server)) {
|
||||
store.dispatch(select(tab.server, tab.name, true));
|
||||
if (find(env.servers, srv => srv.host === server)) {
|
||||
store.dispatch(select(server, name, true));
|
||||
} else {
|
||||
store.dispatch(updateSelection());
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import Cookie from 'js-cookie';
|
||||
import debounce from 'lodash/debounce';
|
||||
import observe from '../util/observe';
|
||||
import { getSelectedTab } from '../reducers/tab';
|
||||
|
||||
const saveTab = debounce(tab => {
|
||||
localStorage.tab = JSON.stringify(tab);
|
||||
}, 3000);
|
||||
const saveTab = debounce(tab =>
|
||||
Cookie.set('tab', tab.toString(), { expires: 30 })
|
||||
, 3000);
|
||||
|
||||
export default function storage({ store }) {
|
||||
observe(store, getSelectedTab, tab => {
|
||||
|
|
|
@ -12,6 +12,14 @@ class Tab extends TabRecord {
|
|||
isChannel() {
|
||||
return this.name && this.name.charAt(0) === '#';
|
||||
}
|
||||
|
||||
toString() {
|
||||
let str = this.server;
|
||||
if (this.name) {
|
||||
str += `:${this.name}`;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
const State = Record({
|
||||
|
|
|
@ -3462,6 +3462,10 @@ js-base64@^2.1.9:
|
|||
version "2.1.9"
|
||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
|
||||
|
||||
js-cookie@^2.1.4:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.1.4.tgz#da4ec503866f149d164cf25f579ef31015025d8d"
|
||||
|
||||
js-tokens@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue