Commit Graph

73 Commits

Author SHA1 Message Date
Rob Watson 9f76d2764f Refactor top-level state management => useReducer
continuous-integration/drone/push Build is passing Details
2022-02-03 19:56:05 +01:00
Rob Watson a855d589f3 Refactor HudCanvasState tests 2022-02-03 19:44:28 +01:00
Rob Watson 6ba19b3e01 Bug fix: prevent incorrect selectionChange callbacks
continuous-integration/drone/push Build is passing Details
When re-rendering the HudCanvas component, the selectionChange callback
should not be triggered with the passed-in properties. Doing so leads to
incorrect selection values being bubbled up when the selection is not
enclosed in the viewport.

The state management should probably be improved to avoid this dance
completely, possibly by hoisting all of this state up to the top-level.
2022-01-29 12:32:39 +01:00
Rob Watson 404c11909b Bug fix: update waveform after fetching audio from Youtube
continuous-integration/drone/push Build is passing Details
2022-01-25 22:47:26 +01:00
Rob Watson 48c84a7efa Bug fix: avoid NaN in helper 2022-01-25 20:06:15 +01:00
Rob Watson 5af8f0c319 HudCanvas: extract HudCanvasState
continuous-integration/drone/push Build is passing Details
2022-01-24 20:33:16 +01:00
Rob Watson 4f443af8fa HudCanvas: draw hover position
continuous-integration/drone/push Build is passing Details
2022-01-18 18:23:00 +01:00
Rob Watson 9ae4335b19 Disable buttons when zooming is not possible 2022-01-18 18:23:00 +01:00
Rob Watson a4e9ebca3b Update duration display on selection change 2022-01-18 18:23:00 +01:00
Rob Watson f386e12f72 Add option to trigger "selection changed" callback in realtime 2022-01-18 18:23:00 +01:00
Rob Watson bb3366ac9a Rename method, fix useEffect dependencies 2022-01-18 18:23:00 +01:00
Rob Watson 41fe0ce2b1 Centre zoom in/out on selection if availble 2022-01-18 18:23:00 +01:00
Rob Watson aa80c9eb7e Bug fix: avoid space bar conflict with player interface 2022-01-18 18:23:00 +01:00
Rob Watson 9d90ed51e6 Bug fix: ensure playback ends at selection end 2022-01-18 18:23:00 +01:00
Rob Watson a33057651d Update frontend with Tailwind.
- Replace inline CSS with Tailwind classes
- Improve page layout and scaling
- Add icons to ControlBar
- Small refactor of play/pause logic
- Add basic (not by any means final) colours
2022-01-18 18:23:00 +01:00
Rob Watson ec3ac8996d Add tailwindcss 2022-01-18 18:23:00 +01:00
Rob Watson d136e00c59 Refactor zoom in/out, add test coverage
continuous-integration/drone/push Build is passing Details
2022-01-16 08:58:07 +01:00
Rob Watson aa4d235c0c frontend: reduce redraw rate to 20ms
continuous-integration/drone/push Build is passing Details
2022-01-15 10:14:04 +01:00
Rob Watson d8173cdace Add framesToDuration helper 2022-01-15 10:13:57 +01:00
Rob Watson ed964cb58f Add toHHMMSS helper 2022-01-15 10:13:52 +01:00
Rob Watson f33fa149fc Remove most useCallback usages
It is unclear whether these are actually significantly improving
performance and they add non-trivial complexity to the codebase,
especially when under heavy frontend development. Removing most of them
for now until it can be shown they are actually worthwhile.
2022-01-14 12:24:59 +01:00
Rob Watson 35b62f1e59 Fetch title, description and author from Youtube
continuous-integration/drone/push Build is passing Details
2022-01-13 20:05:09 +01:00
Rob Watson aabd0f3252 HudCanvas: add useCallbacks
continuous-integration/drone/push Build is passing Details
2022-01-13 07:59:48 +01:00
Rob Watson b0ccf17527 poc: legacy HTTP download for audio clips
continuous-integration/drone/push Build is passing Details
2022-01-10 21:35:31 +01:00
Rob Watson 04601bab2e frontend: Add Zoom buttons
continuous-integration/drone/push Build is failing Details
2022-01-07 19:51:53 +01:00
Michael Evans 335efb23e1 Remove redundant function declaration from App.tsx
continuous-integration/drone/push Build is passing Details
2022-01-01 17:26:10 -06:00
Michael Evans 22dd92f339 Extract millisFromDuration helper and add tests
continuous-integration/drone/push Build is passing Details
2022-01-01 17:23:58 -06:00
Rob Watson 2b1a668c9d Add GetAudioSegment flow
continuous-integration/drone/push Build is passing Details
2021-12-29 16:41:43 +01:00
Rob Watson 2445ebc02f Rename gRPC endpoints and service methods.
- GetAudio > GetPeaks
- GetAudioSegment > GetPeaksForSegment
2021-12-17 17:30:53 +01:00
Rob Watson 34681821e4 Improve waveform selection behaviour
continuous-integration/drone/push Build is passing Details
2021-12-13 05:10:07 +01:00
Rob Watson 545ac72faa HudCanvas: handle select-nothing 2021-12-12 11:04:42 +01:00
Rob Watson b876fb915a Update frontend
- Add HudCanvas component to Waveform
- Allow waveform to be selectable
- Fix selection rendering on viewport change
- Add spacebar handler
2021-12-11 17:29:31 +01:00
Rob Watson 65cc365717 Add debug view to App component 2021-12-11 17:25:30 +01:00
Rob Watson c849b8d2e6 Extract reusable HudCanvas component 2021-12-06 23:52:24 +01:00
Rob Watson 935c2add2a Add generated code to Git 2021-12-05 11:56:33 +01:00
Rob Watson e486aab770 Prefer React.memo to useMemo when memoizing components 2021-12-04 05:34:17 +01:00
Rob Watson 155e41136c frontend: Avoid re-rendering static components during playback 2021-12-02 20:13:06 +01:00
Rob Watson 0cc1fd8272 Frontend fixes 2021-12-02 15:55:14 +01:00
Rob Watson 642ce6e349 Re-enable audio playback 2021-11-29 18:44:31 +01:00
Rob Watson 1552fc19a1 Send presigned encoded audio URL to the frontend 2021-11-29 15:55:11 +01:00
Rob Watson e1a15a5e69 Add Dockerfile and staging deployment setup 2021-11-27 14:26:14 +01:00
Rob Watson b3559bb94e Refactor Overview component 2021-11-25 19:02:37 +01:00
Rob Watson 33e6814fce Handle mouseUp event outside of Overview component 2021-11-23 16:16:00 +01:00
Rob Watson 8a69a07cc7 Refactor frontend thumbnail handling 2021-11-22 19:20:40 +01:00
Rob Watson 2f7aae1d6e Add video thumbnail support 2021-11-21 20:43:40 +01:00
Rob Watson 4afec11074 Get video from Youtube, send progress via gRPC 2021-11-21 16:09:30 +01:00
Rob Watson b864835f40 Overview: render viewport on first render 2021-11-21 16:09:30 +01:00
Rob Watson 542080e400 Implement GetAudioSegment, add panic recovery handler 2021-11-21 16:09:30 +01:00
Rob Watson 99659adb9e Basic error handling when reading peaks 2021-11-21 16:09:30 +01:00
Rob Watson c1ac075a88 Render WaveformCanvas via peaks 2021-11-21 16:09:30 +01:00