mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-28 20:40:39 +00:00
Merge duplicate utlity functions
This commit is contained in:
parent
21278239fa
commit
843a59cbb0
3 changed files with 22 additions and 29 deletions
|
|
@ -28,7 +28,8 @@ import {
|
|||
downloadURI,
|
||||
normalize,
|
||||
sort,
|
||||
uniqueId
|
||||
uniqueId,
|
||||
objectMap
|
||||
} from "./utils";
|
||||
import {
|
||||
CLOSE_WINAMP,
|
||||
|
|
@ -511,10 +512,9 @@ function withWindowGraphIntegrity(action) {
|
|||
const positionDiff = getPositionDiff(graph, sizeDiff);
|
||||
const windowPositions = getWindowPositions(state);
|
||||
|
||||
const newPositions = {};
|
||||
for (const key of Object.keys(windowPositions)) {
|
||||
newPositions[key] = applyDiff(windowPositions[key], positionDiff[key]);
|
||||
}
|
||||
const newPositions = objectMap(windowPositions, (position, key) =>
|
||||
applyDiff(position, positionDiff[key])
|
||||
);
|
||||
|
||||
dispatch(updateWindowPositions(newPositions));
|
||||
};
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import {
|
|||
import { MEDIA_TAG_REQUEST_STATUS } from "../constants";
|
||||
|
||||
import { filenameFromUrl } from "../fileUtils";
|
||||
import { shuffle, moveSelected, mapObject, filterObject } from "../utils";
|
||||
import { shuffle, moveSelected, objectMap, objectFilter } from "../utils";
|
||||
|
||||
const defaultPlaylistState = {
|
||||
trackOrder: [],
|
||||
|
|
@ -38,7 +38,7 @@ const playlist = (state = defaultPlaylistState, action) => {
|
|||
const clickedId = String(state.trackOrder[action.index]);
|
||||
return {
|
||||
...state,
|
||||
tracks: mapObject(state.tracks, (track, id) => ({
|
||||
tracks: objectMap(state.tracks, (track, id) => ({
|
||||
...track,
|
||||
selected: id === clickedId
|
||||
})),
|
||||
|
|
@ -68,7 +68,7 @@ const playlist = (state = defaultPlaylistState, action) => {
|
|||
const selected = new Set(state.trackOrder.slice(start, end + 1));
|
||||
return {
|
||||
...state,
|
||||
tracks: mapObject(state.tracks, (track, trackId) => ({
|
||||
tracks: objectMap(state.tracks, (track, trackId) => ({
|
||||
...track,
|
||||
selected: selected.has(Number(trackId))
|
||||
}))
|
||||
|
|
@ -76,12 +76,12 @@ const playlist = (state = defaultPlaylistState, action) => {
|
|||
case SELECT_ALL:
|
||||
return {
|
||||
...state,
|
||||
tracks: mapObject(state.tracks, track => ({ ...track, selected: true }))
|
||||
tracks: objectMap(state.tracks, track => ({ ...track, selected: true }))
|
||||
};
|
||||
case SELECT_ZERO:
|
||||
return {
|
||||
...state,
|
||||
tracks: mapObject(state.tracks, track => ({
|
||||
tracks: objectMap(state.tracks, track => ({
|
||||
...track,
|
||||
selected: false
|
||||
}))
|
||||
|
|
@ -89,7 +89,7 @@ const playlist = (state = defaultPlaylistState, action) => {
|
|||
case INVERT_SELECTION:
|
||||
return {
|
||||
...state,
|
||||
tracks: mapObject(state.tracks, track => ({
|
||||
tracks: objectMap(state.tracks, track => ({
|
||||
...track,
|
||||
selected: !track.selected
|
||||
}))
|
||||
|
|
@ -113,7 +113,7 @@ const playlist = (state = defaultPlaylistState, action) => {
|
|||
trackId => !actionIds.includes(trackId)
|
||||
),
|
||||
currentTrack: actionIds.includes(currentTrack) ? null : currentTrack,
|
||||
tracks: filterObject(
|
||||
tracks: objectFilter(
|
||||
state.tracks,
|
||||
(track, trackId) => !action.ids.includes(trackId)
|
||||
),
|
||||
|
|
|
|||
27
js/utils.js
27
js/utils.js
|
|
@ -207,22 +207,6 @@ export const moveSelected = (arr, isSelected, offset) => {
|
|||
return newArr;
|
||||
};
|
||||
|
||||
export const mapObject = (obj, iteratee) =>
|
||||
// TODO: Could return the original reference if no values change
|
||||
Object.keys(obj).reduce((newObj, key) => {
|
||||
newObj[key] = iteratee(obj[key], key);
|
||||
return newObj;
|
||||
}, {});
|
||||
|
||||
export const filterObject = (obj, predicate) =>
|
||||
// TODO: Could return the original reference if no values change
|
||||
Object.keys(obj).reduce((newObj, key) => {
|
||||
if (predicate(obj[key], key)) {
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
return newObj;
|
||||
}, {});
|
||||
|
||||
export const spliceIn = (original, start, newValues) => {
|
||||
const newArr = [...original];
|
||||
newArr.splice(start, 0, ...newValues);
|
||||
|
|
@ -248,6 +232,15 @@ export function uniqueId() {
|
|||
|
||||
export function objectMap(obj, cb) {
|
||||
const modified = {};
|
||||
Object.keys(obj).forEach(key => (modified[key] = cb(obj[key])));
|
||||
Object.keys(obj).forEach(key => (modified[key] = cb(obj[key], key)));
|
||||
return modified;
|
||||
}
|
||||
|
||||
export const objectFilter = (obj, predicate) =>
|
||||
// TODO: Could return the original reference if no values change
|
||||
Object.keys(obj).reduce((newObj, key) => {
|
||||
if (predicate(obj[key], key)) {
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
return newObj;
|
||||
}, {});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue