Skip to content

Commit c15274d

Browse files
committed
Volume control now available for File browser dialog
1 parent ecba9f3 commit c15274d

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

client/browser/FileSelectDialog.tsx

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import React, {
1313
import {useInView} from 'react-intersection-observer';
1414
import FigureLabels from '../common/FigureLabels';
1515
import FileUploader from '../common/FileUploader';
16-
import {useSearchZone} from '../common/Storage';
16+
import {useAudioSettings, useSearchZone} from '../common/Storage';
1717
import BrowserEditor from './BrowserEditor';
1818
import FolderStructure from './FolderStructure';
1919
import MenuBar from './MenuBar';
@@ -71,14 +71,14 @@ function ScrollSpy(props) {
7171

7272

7373
const FilesList = memo((props: any) => {
74-
const {structure, setDirty, selectFile} = props;
74+
const {structure, setDirty, selectFile, webAudio} = props;
7575

7676
return (
7777
<ul className="files-browser">{
7878
structure.files.length === 0 ?
7979
<li className="status">{gettext("Empty folder")}</li> : (
8080
<>{structure.files.map(file => (
81-
<li key={file.id} onClick={() => selectFile(file)}><Figure {...file} /></li>
81+
<li key={file.id} onClick={() => selectFile(file)}><Figure {...file} webAudio={webAudio} /></li>
8282
))}
8383
{structure.offset !== null && <ScrollSpy key={structure.offset} setDirty={setDirty} />}
8484
</>
@@ -101,13 +101,29 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
101101
const [isDirty, setDirty] = useState(false);
102102
const ref = useRef(null);
103103
const uploaderRef = useRef(null);
104+
const [audioSettings] = useAudioSettings();
105+
const [webAudio, setWebAudio] = useState(null);
104106
const menuBarRef = useRef(null);
105107
const [uploadedFile, setUploadedFile] = useState(null);
106108
const [currentFolderElement, setCurrentFolderElement] = useState(null);
107109
const [searchZone, setSearchZone] = useSearchZone('current');
108110

109111
useImperativeHandle(forwardedRef, () => ({scrollToCurrentFolder, dismissAndClose}));
110112

113+
useEffect(() => {
114+
const context = new window.AudioContext();
115+
const gainNode = context.createGain();
116+
gainNode.connect(context.destination);
117+
gainNode.gain.value = audioSettings.volume;
118+
setWebAudio({context, gainNode});
119+
120+
return () => {
121+
if (webAudio) {
122+
webAudio.context.close();
123+
}
124+
};
125+
}, []);
126+
111127
useEffect(() => {
112128
if (structure.root_folder === null) {
113129
initializeStructure();
@@ -279,6 +295,7 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
279295
setSearchQuery={setSearchQuery}
280296
searchZone={searchZone}
281297
setSearchZone={changeSearchZone}
298+
webAudio={webAudio}
282299
/>
283300
<div className="browser-body">
284301
<nav className="folder-structure">
@@ -308,6 +325,7 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
308325
structure={structure}
309326
setDirty={setDirty}
310327
selectFile={selectFile}
328+
webAudio={webAudio}
311329
/>
312330
}</FileUploader>
313331
</div>

client/browser/MenuBar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import React, {forwardRef, useImperativeHandle, useMemo, useRef} from 'react';
22
import DropDownMenu from '../common/DropDownMenu';
33
import SortingOptions from '../common/SortingOptions';
44
import FilterByLabel from '../common/FilterByLabel';
5+
import VolumeControl from '../common/VolumeControl';
56
import SearchIcon from '../icons/search.svg';
67
import UploadIcon from '../icons/upload.svg';
78
import {Tooltip, TooltipContent, TooltipTrigger} from "../common/Tooltip";
89

910

1011
const MenuBar = forwardRef((props: any, forwardedRef) => {
11-
const {openUploader, labels, refreshFilesList, setDirty, setSearchQuery, searchZone, setSearchZone} = props;
12+
const {openUploader, labels, refreshFilesList, setDirty, setSearchQuery, searchZone, setSearchZone, webAudio} = props;
1213
const ref = useRef(null);
1314
const searchRef = useRef(null);
1415

@@ -79,6 +80,7 @@ const MenuBar = forwardRef((props: any, forwardedRef) => {
7980
</DropDownMenu>
8081
</div>
8182
</li>
83+
<VolumeControl webAudio={webAudio} />
8284
<SortingOptions refreshFilesList={refreshFilesList} root={rootNode} />
8385
{labels && <FilterByLabel refreshFilesList={refreshFilesList} labels={labels} root={rootNode} />}
8486
<Tooltip>

0 commit comments

Comments
 (0)