From 4d22dab887fa70e1b108c7e8332376bcb002e322 Mon Sep 17 00:00:00 2001 From: Kevin Thomas Date: Wed, 31 Aug 2022 11:16:23 -0700 Subject: [PATCH] Fix sporadic validation, fix preferences bug --- server/boot/db.js | 66 ++++++++++++++++++++++++------------ server/routes/users.js | 16 +++++---- src/components/NoisePage.vue | 32 ++++------------- src/components/noise.js | 19 ++++------- 4 files changed, 69 insertions(+), 64 deletions(-) diff --git a/server/boot/db.js b/server/boot/db.js index f4f653b..77055ae 100644 --- a/server/boot/db.js +++ b/server/boot/db.js @@ -59,32 +59,56 @@ module.exports = function () { } else { const userVersion = row.user_version - if (userVersion < 1) { - db.run('ALTER TABLE samples ADD COLUMN fade_in REAL DEFAULT 0') - db.run('ALTER TABLE samples ADD COLUMN loop_points_enabled INTEGER DEFAULT 0') - db.run('ALTER TABLE samples ADD COLUMN loop_start REAL DEFAULT 0') - db.run('ALTER TABLE samples ADD COLUMN loop_end REAL DEFAULT 0') + db.serialize(() => { + if (userVersion < 1) { + db.run('ALTER TABLE samples ADD COLUMN fade_in REAL DEFAULT 0') + db.run('ALTER TABLE samples ADD COLUMN loop_points_enabled INTEGER DEFAULT 0') + db.run('ALTER TABLE samples ADD COLUMN loop_start REAL DEFAULT 0') + db.run('ALTER TABLE samples ADD COLUMN loop_end REAL DEFAULT 0') - db.run('PRAGMA user_version = 1') - } + db.run('PRAGMA user_version = 1') + } - if (userVersion < 2) { - db.run('ALTER TABLE users ADD COLUMN preferences TEXT DEFAULT "{}"') + if (userVersion < 2) { + db.run('ALTER TABLE users ADD COLUMN preferences TEXT DEFAULT "{}"') - db.run('PRAGMA user_version = 2') - } + db.run('PRAGMA user_version = 2') + } - if (userVersion < 3) { - db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_enabled INTEGER DEFAULT 0') - db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_pre_delay REAL DEFAULT 0') - db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_decay REAL DEFAULT 0') - db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_wet INTEGER DEFAULT 0') - db.run('ALTER TABLE profiles_samples ADD COLUMN playback_mode TEXT DEFAULT "continuous"') - db.run('ALTER TABLE profiles_samples ADD COLUMN sporadic_min INTEGER DEFAULT 30') - db.run('ALTER TABLE profiles_samples ADD COLUMN sporadic_max INTEGER DEFAULT 300') + if (userVersion < 3) { + db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_enabled INTEGER DEFAULT 0') + db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_pre_delay REAL DEFAULT 0') + db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_decay REAL DEFAULT 0') + db.run('ALTER TABLE profiles_samples ADD COLUMN reverb_wet INTEGER DEFAULT 0') + db.run('ALTER TABLE profiles_samples ADD COLUMN playback_mode TEXT DEFAULT "continuous"') + db.run('ALTER TABLE profiles_samples ADD COLUMN sporadic_min INTEGER DEFAULT 30') + db.run('ALTER TABLE profiles_samples ADD COLUMN sporadic_max INTEGER DEFAULT 300') - db.run('PRAGMA user_version = 3') - } + db.run('PRAGMA user_version = 3') + } + + if (userVersion < 4) { + db.all('SELECT preferences FROM users', (err, rows) => { + if (err) { + logger.error(err) + } else { + rows.forEach(row => { + if (row.preferences === '{}') { + db.run('UPDATE users SET preferences = ?', + ['{"accentColor":{"alpha":1,"hex":"#607D8B","hexa":"#607D8BFF","hsla":{"h":200,"s":18,"l":46,"a":1},"hsva":{"h":200,"s":31,"v":55,"a":1},"hue":200,"rgba":{"r":96,"g":125,"b":139,"a":1}}}'], + (err) => { + if (err) { + logger.error(err) + } + }) + } + }) + + db.run('PRAGMA user_version = 4') + } + }) + } + }) } }) }) diff --git a/server/routes/users.js b/server/routes/users.js index 7bb8e00..ea2f443 100644 --- a/server/routes/users.js +++ b/server/routes/users.js @@ -72,6 +72,8 @@ router.post('/users', (req, res) => { return res.sendStatus(500) } + const defaultPreferences = '{"accentColor":{"alpha":1,"hex":"#607D8B","hexa":"#607D8BFF","hsla":{"h":200,"s":18,"l":46,"a":1},"hsva":{"h":200,"s":31,"v":55,"a":1},"hue":200,"rgba":{"r":96,"g":125,"b":139,"a":1}}}' + if (row.count !== 0) { if (!req.user) { return res.sendStatus(401) @@ -94,15 +96,16 @@ router.post('/users', (req, res) => { return res.sendStatus(500) } - db.run(`INSERT INTO users (username, hashed_password, salt, name, is_admin, dark_mode, can_upload) - VALUES (?, ?, ?, ?, ?, ?, ?)`, [ + db.run(`INSERT INTO users (username, hashed_password, salt, name, is_admin, dark_mode, can_upload, preferences) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [ req.body.username, hashedPassword, salt, req.body.name, req.body.isAdmin, req.body.darkMode, - req.body.canUpload + req.body.canUpload, + defaultPreferences ], (err) => { if (err) { logger.error(err) @@ -125,15 +128,16 @@ router.post('/users', (req, res) => { return res.sendStatus(500) } - db.run(`INSERT INTO users (username, hashed_password, salt, name, is_admin, dark_mode, can_upload) - VALUES (?, ?, ?, ?, ?, ?, ?)`, [ + db.run(`INSERT INTO users (username, hashed_password, salt, name, is_admin, dark_mode, can_upload, preferences) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [ req.body.username, hashedPassword, salt, req.body.name, req.body.isAdmin, req.body.darkMode, - req.body.canUpload + req.body.canUpload, + defaultPreferences ], function (err) { if (err) { logger.error(err) diff --git a/src/components/NoisePage.vue b/src/components/NoisePage.vue index 49d61f7..cb55d14 100644 --- a/src/components/NoisePage.vue +++ b/src/components/NoisePage.vue @@ -14,7 +14,7 @@ -

+

Samples

@@ -776,7 +776,6 @@
@@ -807,7 +806,7 @@ label="Sporadic Min" class="mx-3" :disabled="sample.playbackMode != 'sporadic' || playDisabled" - :rules="[validateSporadicRange(sample)]" + :rules="[rules.gt(-1)]" /> - -

- (Sample will play randomly, every {{ sample.sporadicMin }} to {{ sample.sporadicMax }} seconds) -

-

- (Sample will play randomly, every {{ sample.sporadicMin }} to {{ sample.sporadicMax }} seconds) -

-
- diff --git a/src/components/noise.js b/src/components/noise.js index fd22207..87f5607 100644 --- a/src/components/noise.js +++ b/src/components/noise.js @@ -155,11 +155,13 @@ export default { this.stop() }, methods: { - play () { + async play () { if (!this.players.loaded) { return } + await Tone.start() + this.playDisabled = true Tone.Transport.cancel() @@ -226,9 +228,11 @@ export default { const maxInt = parseInt(s.sporadicMax, 10) const minInt = parseInt(s.sporadicMin, 10) - const rand = Math.floor(Math.random() * (maxInt - minInt + 1) + minInt) - s.initialSporadicPlayInterval = setInterval(() => this.playSporadicSample(s.id), rand * 1000) + if (minInt <= maxInt) { + const rand = Math.floor(Math.random() * (maxInt - minInt + 1) + minInt) + s.initialSporadicPlayInterval = setInterval(() => this.playSporadicSample(s.id), rand * 1000) + } } else { this.players.player(s.id).loop = true this.players.player(s.id).unsync().sync().start(0) @@ -902,15 +906,6 @@ export default { this.selectedProfile = this.profileItems.find(p => p.text === this.activeProfile.name) this.updateProfile() this.confirmSwitchProfileDialog = false - }, - validateSporadicRange (sample) { - const min = parseInt(sample.sporadicMin, 10) - const max = parseInt(sample.sporadicMax, 10) - if (isNaN(min) || isNaN(max) || max <= min || min <= 0 || max <= 0) { - return 'Invalid' - } else { - return true - } } } }