Implements #31
This commit is contained in:
parent
468e512f94
commit
b79b1916d4
|
@ -68,7 +68,7 @@ export const ConvertDialog = (props: { files: File[] }) => {
|
||||||
if (newFormat === null) {
|
if (newFormat === null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dispatch(convertDialogActions.setFormat(newFormat as string));
|
dispatch(convertDialogActions.setFormat(newFormat));
|
||||||
},
|
},
|
||||||
[dispatch]
|
[dispatch]
|
||||||
);
|
);
|
||||||
|
|
|
@ -11,7 +11,7 @@ import { Wireformat, getTracks } from 'netmd-js';
|
||||||
import { AnyAction } from '@reduxjs/toolkit';
|
import { AnyAction } from '@reduxjs/toolkit';
|
||||||
import { getAvailableCharsForTrackTitle, framesToSec, sleepWithProgressCallback, sleep } from '../utils';
|
import { getAvailableCharsForTrackTitle, framesToSec, sleepWithProgressCallback, sleep } from '../utils';
|
||||||
import * as mm from 'music-metadata-browser';
|
import * as mm from 'music-metadata-browser';
|
||||||
import { TitleSourceType, TitleFormatType } from './convert-dialog-feature';
|
import { TitleSourceType, TitleFormatType, UploadFormat } from './convert-dialog-feature';
|
||||||
|
|
||||||
export function control(action: 'play' | 'stop' | 'next' | 'prev' | 'goto', params?: unknown) {
|
export function control(action: 'play' | 'stop' | 'next' | 'prev' | 'goto', params?: unknown) {
|
||||||
return async function(dispatch: AppDispatch, getState: () => RootState) {
|
return async function(dispatch: AppDispatch, getState: () => RootState) {
|
||||||
|
@ -264,7 +264,7 @@ async function getTrackNameFromMediaTags(file: File, titleFormat: TitleFormatTyp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function convertAndUpload(files: File[], format: string, titleSource: TitleSourceType, titleFormat: TitleFormatType) {
|
export function convertAndUpload(files: File[], format: UploadFormat, titleSource: TitleSourceType, titleFormat: TitleFormatType) {
|
||||||
return async function(dispatch: AppDispatch, getState: () => RootState) {
|
return async function(dispatch: AppDispatch, getState: () => RootState) {
|
||||||
const { audioExportService, netmdService } = serviceRegistry;
|
const { audioExportService, netmdService } = serviceRegistry;
|
||||||
const wireformat = WireformatDict[format];
|
const wireformat = WireformatDict[format];
|
||||||
|
|
|
@ -4,17 +4,18 @@ import { savePreference, loadPreference } from '../utils';
|
||||||
|
|
||||||
export type TitleSourceType = 'file' | 'media';
|
export type TitleSourceType = 'file' | 'media';
|
||||||
export type TitleFormatType = 'title' | 'album-title' | 'artist-title' | 'artist-album-title';
|
export type TitleFormatType = 'title' | 'album-title' | 'artist-title' | 'artist-album-title';
|
||||||
|
export type UploadFormat = 'SP' | 'LP2' | 'LP4';
|
||||||
|
|
||||||
export interface ConvertDialogFeature {
|
export interface ConvertDialogFeature {
|
||||||
visible: boolean;
|
visible: boolean;
|
||||||
format: string;
|
format: UploadFormat;
|
||||||
titleSource: TitleSourceType;
|
titleSource: TitleSourceType;
|
||||||
titleFormat: TitleFormatType;
|
titleFormat: TitleFormatType;
|
||||||
}
|
}
|
||||||
|
|
||||||
const initialState: ConvertDialogFeature = {
|
const initialState: ConvertDialogFeature = {
|
||||||
visible: false,
|
visible: false,
|
||||||
format: `LP2`,
|
format: loadPreference('uploadFormat', 'LP2') as UploadFormat,
|
||||||
titleSource: loadPreference('trackTitleSource', 'file') as TitleSourceType,
|
titleSource: loadPreference('trackTitleSource', 'file') as TitleSourceType,
|
||||||
titleFormat: loadPreference('trackTitleFormat', 'title') as TitleFormatType,
|
titleFormat: loadPreference('trackTitleFormat', 'title') as TitleFormatType,
|
||||||
};
|
};
|
||||||
|
@ -26,8 +27,9 @@ const slice = createSlice({
|
||||||
setVisible: (state, action: PayloadAction<boolean>) => {
|
setVisible: (state, action: PayloadAction<boolean>) => {
|
||||||
state.visible = action.payload;
|
state.visible = action.payload;
|
||||||
},
|
},
|
||||||
setFormat: (state, action: PayloadAction<string>) => {
|
setFormat: (state, action: PayloadAction<UploadFormat>) => {
|
||||||
state.format = action.payload;
|
state.format = action.payload;
|
||||||
|
savePreference('uploadFormat', state.format);
|
||||||
},
|
},
|
||||||
setTitleSource: (state, action: PayloadAction<TitleSourceType>) => {
|
setTitleSource: (state, action: PayloadAction<TitleSourceType>) => {
|
||||||
state.titleSource = action.payload;
|
state.titleSource = action.payload;
|
||||||
|
|
Loading…
Reference in New Issue