diff --git a/package-lock.json b/package-lock.json
index 4bc81f6ab6..e883b5a2a4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -45593,4 +45593,4 @@
"license": "MIT"
}
}
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index ffc61304af..743de68239 100644
--- a/package.json
+++ b/package.json
@@ -75,7 +75,7 @@
"build": {
"appId": "nuclear",
"productName": "nuclear",
- "artifactName": "${productName}-v${env.VERSION}-${arch}.${ext}",
+ "artifactName": "${productName}-v${version}-${arch}.${ext}",
"directories": {
"output": "release"
},
@@ -213,4 +213,4 @@
"dependencies": {
"sqlite3": "^5.1.6"
}
-}
\ No newline at end of file
+}
diff --git a/packages/app/app/.DS_Store b/packages/app/app/.DS_Store
new file mode 100644
index 0000000000..1ddac5bbfe
Binary files /dev/null and b/packages/app/app/.DS_Store differ
diff --git a/packages/app/app/containers/AudiobookContainer/AudiobooksTab.tsx b/packages/app/app/containers/AudiobookContainer/AudiobooksTab.tsx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/app/app/containers/AudiobookContainer/index.js b/packages/app/app/containers/AudiobookContainer/index.js
new file mode 100644
index 0000000000..e104020bd5
--- /dev/null
+++ b/packages/app/app/containers/AudiobookContainer/index.js
@@ -0,0 +1,14 @@
+import React from 'react';
+
+class AudiobookContainer extends React.Component {
+ render() {
+ return (
+
+
Audiobooks
+ {/* your audiobook UI goes here */}
+
+ );
+ }
+}
+
+export default AudiobookContainer;
diff --git a/packages/app/app/containers/DashboardContainer/__snapshots__/DashboardContainer.test.tsx.snap b/packages/app/app/containers/DashboardContainer/__snapshots__/DashboardContainer.test.tsx.snap
index 2a5b113a84..ca725714c2 100644
--- a/packages/app/app/containers/DashboardContainer/__snapshots__/DashboardContainer.test.tsx.snap
+++ b/packages/app/app/containers/DashboardContainer/__snapshots__/DashboardContainer.test.tsx.snap
@@ -487,6 +487,11 @@ exports[`Dashboard container should display top tracks after going to top tracks
>
Genres
+
+ Audiobooks
+
+
);
diff --git a/packages/app/app/containers/SidebarMenuContainer/categories.ts b/packages/app/app/containers/SidebarMenuContainer/categories.ts
index f698c12aac..0f2f0b367d 100644
--- a/packages/app/app/containers/SidebarMenuContainer/categories.ts
+++ b/packages/app/app/containers/SidebarMenuContainer/categories.ts
@@ -23,7 +23,8 @@ export default [
{ name: 'settings', path: 'settings', icon: 'cog' },
{ name: 'equalizer', path: 'equalizer', icon: 'align right' },
{ name: 'visualizer', path: 'visualizer', icon: 'tint' },
- { name: 'listening-history', path: 'listening-history', icon: 'history' }
+ { name: 'listening-history', path: 'listening-history', icon: 'history' },
+ { name: 'Audiobooks', path: 'audiobooks', icon: 'flask'}
]
}, {
name: 'collection',
diff --git a/packages/app/app/containers/TrackTableContainer/index.tsx b/packages/app/app/containers/TrackTableContainer/index.tsx
index cdfacc2b07..144361a60e 100644
--- a/packages/app/app/containers/TrackTableContainer/index.tsx
+++ b/packages/app/app/containers/TrackTableContainer/index.tsx
@@ -1,4 +1,4 @@
-import React, { useCallback, useEffect } from 'react';
+import React, { useCallback, useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useDispatch, useSelector } from 'react-redux';
import { Icon } from 'semantic-ui-react';
@@ -9,6 +9,7 @@ import { GridTrackTable, areTracksEqualByName } from '@nuclear/ui';
import { TrackTableProps } from '@nuclear/ui/lib/components/TrackTable';
import { TrackTableSettings } from '@nuclear/ui/lib/components/TrackTable/types';
import { Track } from '@nuclear/ui/lib/types';
+import { Column } from 'react-table';
import { playlistsSelectors } from '../../selectors/playlists';
import * as downloadsActions from '../../actions/downloads';
@@ -29,7 +30,7 @@ export type TrackTableContainerProps = TrackTableSettings & {
displayAddToFavorites?: boolean;
};
-function TrackTableContainer ({
+function TrackTableContainer({
tracks,
onDelete,
onReorder,
@@ -44,71 +45,93 @@ function TrackTableContainer ({
const playlists = useSelector(playlistsSelectors.localPlaylists);
const favoriteTracks: Track[] = useSelector(favoritesSelectors.tracks);
+ const [hoveredTrack, setHoveredTrack] = useState