mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
Fix: Aphrodite UI enhancements
* New: Display UI before movies have loaded * Revised webpack bundling * New: Option for production build with profiling * Fixed: Faster hasDifferentItems and specialized OrOrder version * Fixed: Faster movie selector * Fixed: Speed up release processing, add indices (migration 161) * Fixed: Use a worker for UI fuzzy search * Fixed: Don't loop over all movies if we know none selected * Fixed: Strip UrlBase from UI events before sending to sentry Should mean that source maps are picked up correctly. * Better selection of jump bar items Show first, last and most common items * Fixed: Don't repeatedly re-render cells * Rework Movie Index and virtualTable * Corresponding improvements for AddListMovie and ImportMovie
This commit is contained in:
@@ -42,6 +42,7 @@ export default function createHandleActions(handlers, defaultState, section) {
|
||||
|
||||
if (_.isArray(payload.data)) {
|
||||
newState.items = payload.data;
|
||||
newState.itemMap = _.zipObject(_.map(payload.data, 'id'), _.range(payload.data.length));
|
||||
} else {
|
||||
newState.item = payload.data;
|
||||
}
|
||||
@@ -75,6 +76,7 @@ export default function createHandleActions(handlers, defaultState, section) {
|
||||
newState.items.splice(index, 1, { ...item, ...otherProps });
|
||||
} else if (!updateOnly) {
|
||||
newState.items.push({ ...otherProps });
|
||||
newState.itemMap = _.zipObject(_.map(newState.items, 'id'), _.range(newState.items.length));
|
||||
}
|
||||
|
||||
return updateSectionState(state, payloadSection, newState);
|
||||
@@ -111,6 +113,8 @@ export default function createHandleActions(handlers, defaultState, section) {
|
||||
newState.items = [...newState.items];
|
||||
_.remove(newState.items, { id: payload.id });
|
||||
|
||||
newState.itemMap = _.zipObject(_.map(newState.items, 'id'), _.range(newState.items.length));
|
||||
|
||||
return updateSectionState(state, payloadSection, newState);
|
||||
}
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
import _ from 'lodash';
|
||||
import * as sentry from '@sentry/browser';
|
||||
import * as Integrations from '@sentry/integrations';
|
||||
import parseUrl from 'Utilities/String/parseUrl';
|
||||
|
||||
function cleanseUrl(url) {
|
||||
@@ -34,6 +35,13 @@ function identity(stuff) {
|
||||
return stuff;
|
||||
}
|
||||
|
||||
function stripUrlBase(frame) {
|
||||
if (frame.filename && window.Radarr.urlBase) {
|
||||
frame.filename = frame.filename.replace(window.Radarr.urlBase, '');
|
||||
}
|
||||
return frame;
|
||||
}
|
||||
|
||||
function createMiddleware() {
|
||||
return (store) => (next) => (action) => {
|
||||
try {
|
||||
@@ -80,7 +88,8 @@ export default function createSentryMiddleware() {
|
||||
environment: branch,
|
||||
release,
|
||||
sendDefaultPii: true,
|
||||
beforeSend: cleanseData
|
||||
beforeSend: cleanseData,
|
||||
integrations: [new Integrations.RewriteFrames({ iteratee: stripUrlBase })]
|
||||
});
|
||||
|
||||
sentry.configureScope((scope) => {
|
||||
|
@@ -4,8 +4,12 @@ import createAllMoviesSelector from './createAllMoviesSelector';
|
||||
function createMovieCountSelector() {
|
||||
return createSelector(
|
||||
createAllMoviesSelector(),
|
||||
(movies) => {
|
||||
return movies.length;
|
||||
(state) => state.movies.error,
|
||||
(movies, error) => {
|
||||
return {
|
||||
count: movies.length,
|
||||
error
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@@ -1,12 +1,15 @@
|
||||
import { createSelector } from 'reselect';
|
||||
import createAllMoviesSelector from './createAllMoviesSelector';
|
||||
|
||||
function createMovieSelector() {
|
||||
return createSelector(
|
||||
(state, { movieId }) => movieId,
|
||||
createAllMoviesSelector(),
|
||||
(movieId, allMovies) => {
|
||||
return allMovies.find((movie) => movie.id === movieId);
|
||||
(state) => state.movies.itemMap,
|
||||
(state) => state.movies.items,
|
||||
(movieId, itemMap, allMovies) => {
|
||||
if (allMovies && itemMap && movieId in itemMap) {
|
||||
return allMovies[itemMap[movieId]];
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user