Giter Site home page Giter Site logo

chronodave / doombox Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 0.0 102.12 MB

Music player for your unwieldy music collection

License: GNU General Public License v3.0

JavaScript 8.77% HTML 0.32% SCSS 9.24% TypeScript 81.67%
electron music-player typescript

doombox's People

Contributors

chronodave avatar dependabot[bot] avatar sbab avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

doombox's Issues

Fix delete user racing

Currently the connection get severed on PENDING_DELETE_USER, which should be done on SUCCESS_DELETE_USER (when the user is actually deleted).

The connection and user should be split into two separate events, CONNECTION and USER.

Code-splitting

  • Split up Mongoose models into the following schema:
modules
 - [module_name]
   - models
   - resolvers
   - schemas
   - validation

Create test files

Most scanning issues are related to corrupt metadata and don't give feedback to the user.

Some examples:

  • Image extensions (jpg vs JPG, image/jpeg vs jpeg)
  • Multiple images
  • Illegal url characters
  • No metadata at all
  • Corrupted frame ID's
  • Frame sizes with negative length

Add profile statistics

  • Most- / least-played
  • Total time since installed
  • Amount of shuffles
  • Favorite playlist
  • Favorite song
  • Favorite album
  • Favorite label

Write tests

What about tap: https://node-tap.org/

  • Write functional tests for components (enzyme?)
  • Write functional tests for Electron
  • Write end-to-end tests for pages (cypress?)

Profile customization

A user should be able to:

  • Change the interface language
  • Set custom colors
  • Enable / disable notifications
  • Custom key shortcuts with cheatsheet
  • Change their connections
  • Change their background
  • Change their profile
  • Set layout to RTL and vice-versa

Module vs component

Several components / modules are open for discussion:

  • Modal (component) => module
  • Settings (module) => module, but different structure

Refactor database class

  • Errors aren't consistent
  • Syntax isn't consistent
  • Add readOneFromId (as id-only query is quite common)
  • Look into update, what does docs param do
  • Add jsdoc

UnhandledPromiseRejectionWarning: RangeError: Invalid typed array length: -1

 (node:10428) UnhandledPromiseRejectionWarning: RangeError: Invalid typed array length: -1
    at new Uint8Array (<anonymous>)
    at decodeFrame (D:\Assets\Works\Projects\[ARC-016] Doombox\Doombox\packages\doombox-electron\src\lib\parser\decode.js:78:7)
    at D:\Assets\Works\Projects\[ARC-016] Doombox\Doombox\packages\doombox-electron\src\lib\parser\index.js:41:21
    at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:61:3)
(node:10428) UnhandledPromiseRejectionWarning: RangeError: Invalid typed array length: -1
    at new Uint8Array (<anonymous>)
    at decodeFrame (D:\Assets\Works\Projects\[ARC-016] Doombox\Doombox\packages\doombox-electron\src\lib\parser\decode.js:78:7)
    at D:\Assets\Works\Projects\[ARC-016] Doombox\Doombox\packages\doombox-electron\src\lib\parser\index.js:41:21
    at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:61:3)
(node:10428) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:10428) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:10428) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:10428) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Create listener factory

Instead of manually creating listeners for every event type, create a function that generates these automatically.

// asyncType, crudType, type
const generateSubscriber = args => ipcMain.on(action(...args)

Create error views

  • RemoteUserError
    • Edit & validate connection
    • Go offline
    • Try again
  • UserError
  • OfflineError

Test .zip scanning

  • Check if .zip files are valid directories
  • Check how speed compares to regular directories

Replace PouchDB with NeDB

  • Fetch cached user
  • Create new user
  • Update user
  • Create image
  • Fetch image
  • Create library
  • Fetch library
  • Update library

Add wiki

  • Explain how Doombox works
  • Explain how to sync up with remote MongoDB
  • Explain where to find error logs
  • Explain how to integrate 3rd party sources

Add back-end validation

Make sure data from the front-end is valid by validating the data before it's inserted into the database.

Add error handler

  • Use errorTypes to define errors, similar structure to asyncActionTypes
  • Error object should contain it's type and message.
  • Message is a localization string
  • Errors should be graded on severity
  • Severe / unexecpted errors should be wrriten to appData/errors and have timestamp as filename

Refactor ModalScanning

ModalScanning can be optimized further by minifying the ModalData components, ideally to a singular component.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.