Improve routing edge cases
This commit is contained in:
parent
6d509a4f29
commit
c0d5c49283
22
src/actions/routing.js
Normal file
22
src/actions/routing.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import { push } from 'react-router-redux';
|
||||||
|
|
||||||
|
// Pushes but preserves the query string
|
||||||
|
export function push_path(to) {
|
||||||
|
return (dispatch, getState) => {
|
||||||
|
const { router } = getState();
|
||||||
|
if (router.location.search !== "") {
|
||||||
|
dispatch(push(`${to}${router.location.search}`));
|
||||||
|
} else {
|
||||||
|
dispatch(push(to));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function push_query(to) {
|
||||||
|
return (dispatch, getState) => {
|
||||||
|
const { router } = getState();
|
||||||
|
dispatch(push(`${
|
||||||
|
router.location.pathname === "/" ? "" : router.location.pathname
|
||||||
|
}${to}`))
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
import { filter_subscribe, filter_unsubscribe } from './filter_subscribe';
|
import { filter_subscribe, filter_unsubscribe } from './filter_subscribe';
|
||||||
import { unsubscribe } from './subscribe';
|
import { unsubscribe } from './subscribe';
|
||||||
import { push } from 'react-router-redux';
|
import { push_path } from './routing';
|
||||||
|
|
||||||
export const UNION = 'UNION';
|
export const UNION = 'UNION';
|
||||||
export const SUBTRACT = 'SUBTRACT';
|
export const SUBTRACT = 'SUBTRACT';
|
||||||
|
@ -55,9 +55,9 @@ export default function selectTorrent(ids, action, navigate=true) {
|
||||||
if (navigate) {
|
if (navigate) {
|
||||||
const url_torrents = state.selection.slice(0, 3);
|
const url_torrents = state.selection.slice(0, 3);
|
||||||
if (url_torrents.length > 0) {
|
if (url_torrents.length > 0) {
|
||||||
dispatch(push(`/torrents/${url_torrents}`));
|
dispatch(push_path(`/torrents/${url_torrents}`));
|
||||||
} else {
|
} else {
|
||||||
dispatch(push("/"));
|
dispatch(push_path("/"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,7 +2,7 @@ import React from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { Link, NavLink } from 'react-router-dom';
|
import { Link, NavLink } from 'react-router-dom';
|
||||||
import { filter_subscribe } from '../actions/filter_subscribe';
|
import { filter_subscribe } from '../actions/filter_subscribe';
|
||||||
import { push } from 'react-router-redux';
|
import { push_query } from '../actions/routing';
|
||||||
import query from 'query-string';
|
import query from 'query-string';
|
||||||
import search_criteria from '../search';
|
import search_criteria from '../search';
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ function update_filter(text, fs, location, dispatch) {
|
||||||
const tfilter = fs.filter(fs => fs.kind === "torrent")[0];
|
const tfilter = fs.filter(fs => fs.kind === "torrent")[0];
|
||||||
const criteria = search_criteria(text);
|
const criteria = search_criteria(text);
|
||||||
dispatch(filter_subscribe("torrent", criteria, tfilter.serial));
|
dispatch(filter_subscribe("torrent", criteria, tfilter.serial));
|
||||||
dispatch(push(search_qs(text)));
|
dispatch(push_query(search_qs(text)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function render(props) {
|
function render(props) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user