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
|
@ -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({
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue