« get me outta code hell

mtui - Music Text User Interface - user-friendly command line music player
about summary refs log tree commit diff
path: root/client.js
diff options
context:
space:
mode:
Diffstat (limited to 'client.js')
-rw-r--r--client.js14
1 files changed, 5 insertions, 9 deletions
diff --git a/client.js b/client.js
index a899c2d..c591a00 100644
--- a/client.js
+++ b/client.js
@@ -16,7 +16,7 @@ const {
   }
 } = require('./tui-lib')
 
-const setupClient = async ({backend, writable, interfacer, appConfig, frameRate = 50}) => {
+const setupClient = async ({backend, writable, interfacer, appConfig}) => {
   const cleanTerminal = () => {
     writable.write(ansi.cleanCursor())
     writable.write(ansi.disableAlternateScreen())
@@ -29,14 +29,15 @@ const setupClient = async ({backend, writable, interfacer, appConfig, frameRate
 
   dirtyTerminal()
 
-  const root = new Root(interfacer)
+  const flushable = new Flushable(writable, true)
+  const root = new Root(interfacer, flushable)
+  root.on('rendered', () => flushable.flush())
 
   const size = await interfacer.getScreenSize()
   root.w = size.width
   root.h = size.height
   root.fixAllLayout()
 
-  const flushable = new Flushable(writable, true)
   flushable.resizeScreen(size)
   flushable.write(ansi.clearScreen())
   flushable.flush()
@@ -78,12 +79,7 @@ const setupClient = async ({backend, writable, interfacer, appConfig, frameRate
   appElement.queueListingElement.buildItems()
   appElement.playbackInfoElement.updateTrack(backend.playingTrack)
 
-  const renderInterval = setInterval(() => {
-    root.renderTo(flushable)
-    flushable.flush()
-  }, frameRate)
-
-  return {appElement, cleanTerminal, flushable, renderInterval}
+  return {appElement, cleanTerminal, dirtyTerminal, flushable, root}
 }
 
 module.exports = setupClient