mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-22 17:47:16 +00:00
Type playlist action creators
This commit is contained in:
parent
365935c0b8
commit
f093ca62c3
2 changed files with 27 additions and 23 deletions
|
|
@ -5,7 +5,7 @@ import {
|
|||
getSelectedTrackObjects
|
||||
} from "../selectors";
|
||||
|
||||
import { clamp, sort } from "../utils";
|
||||
import { clamp, sort, findLastIndex } from "../utils";
|
||||
import {
|
||||
REMOVE_TRACKS,
|
||||
REMOVE_ALL_TRACKS,
|
||||
|
|
@ -15,8 +15,9 @@ import {
|
|||
SET_PLAYLIST_SCROLL_POSITION,
|
||||
DRAG_SELECTED
|
||||
} from "../actionTypes";
|
||||
import { Dispatchable } from "../types";
|
||||
|
||||
export function cropPlaylist() {
|
||||
export function cropPlaylist(): Dispatchable {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
if (getSelectedTrackObjects(state).length === 0) {
|
||||
|
|
@ -32,7 +33,7 @@ export function cropPlaylist() {
|
|||
};
|
||||
}
|
||||
|
||||
export function removeSelectedTracks() {
|
||||
export function removeSelectedTracks(): Dispatchable {
|
||||
return (dispatch, getState) => {
|
||||
const {
|
||||
playlist: { tracks }
|
||||
|
|
@ -44,19 +45,19 @@ export function removeSelectedTracks() {
|
|||
};
|
||||
}
|
||||
|
||||
export function removeAllTracks() {
|
||||
export function removeAllTracks(): Dispatchable {
|
||||
return { type: REMOVE_ALL_TRACKS };
|
||||
}
|
||||
|
||||
export function reverseList() {
|
||||
export function reverseList(): Dispatchable {
|
||||
return { type: REVERSE_LIST };
|
||||
}
|
||||
|
||||
export function randomizeList() {
|
||||
export function randomizeList(): Dispatchable {
|
||||
return { type: RANDOMIZE_LIST };
|
||||
}
|
||||
|
||||
export function sortListByTitle() {
|
||||
export function sortListByTitle(): Dispatchable {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
const trackOrder = sort(state.playlist.trackOrder, i =>
|
||||
|
|
@ -66,11 +67,11 @@ export function sortListByTitle() {
|
|||
};
|
||||
}
|
||||
|
||||
export function setPlaylistScrollPosition(position) {
|
||||
export function setPlaylistScrollPosition(position: number): Dispatchable {
|
||||
return { type: SET_PLAYLIST_SCROLL_POSITION, position };
|
||||
}
|
||||
|
||||
export function scrollNTracks(n) {
|
||||
export function scrollNTracks(n: number): Dispatchable {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
const overflow = getOverflowTrackCount(state);
|
||||
|
|
@ -83,7 +84,7 @@ export function scrollNTracks(n) {
|
|||
};
|
||||
}
|
||||
|
||||
export function scrollPlaylistByDelta(e) {
|
||||
export function scrollPlaylistByDelta(e: MouseWheelEvent): Dispatchable {
|
||||
e.preventDefault();
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
|
|
@ -103,24 +104,15 @@ export function scrollPlaylistByDelta(e) {
|
|||
};
|
||||
}
|
||||
|
||||
export function scrollUpFourTracks() {
|
||||
export function scrollUpFourTracks(): Dispatchable {
|
||||
return scrollNTracks(-4);
|
||||
}
|
||||
|
||||
export function scrollDownFourTracks() {
|
||||
export function scrollDownFourTracks(): Dispatchable {
|
||||
return scrollNTracks(4);
|
||||
}
|
||||
|
||||
function findLastIndex(arr, cb) {
|
||||
for (let i = arr.length - 1; i >= 0; i--) {
|
||||
if (cb(arr[i])) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
export function dragSelected(offset) {
|
||||
export function dragSelected(offset: number): Dispatchable {
|
||||
return (dispatch, getState) => {
|
||||
const {
|
||||
playlist: { trackOrder, tracks }
|
||||
14
js/utils.ts
14
js/utils.ts
|
|
@ -209,7 +209,10 @@ export function shuffle<T>(array: T[]): T[] {
|
|||
return sorted;
|
||||
}
|
||||
|
||||
export function sort<T>(array: T[], iteratee: (value: T) => number): T[] {
|
||||
export function sort<T>(
|
||||
array: T[],
|
||||
iteratee: (value: T) => number | string
|
||||
): T[] {
|
||||
return [...array].sort((a, b) => {
|
||||
const aKey = iteratee(a);
|
||||
const bKey = iteratee(b);
|
||||
|
|
@ -318,3 +321,12 @@ export const calculateBoundingBox = (windows: Window[]) =>
|
|||
}),
|
||||
{ top: 0, bottom: 0, left: 0, right: 0 }
|
||||
);
|
||||
|
||||
export function findLastIndex<T>(arr: T[], cb: (val: T) => boolean) {
|
||||
for (let i = arr.length - 1; i >= 0; i--) {
|
||||
if (cb(arr[i])) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue