From 14d4dcf2b05e88ee357200e0acfbc0853f48b03d Mon Sep 17 00:00:00 2001 From: morvanr Date: Thu, 31 Dec 2020 10:53:30 +0100 Subject: [PATCH 1/7] correct image size and camera never stopping --- src/components/AddAssets.vue | 1 + src/components/Camera.vue | 5 +++++ src/components/dialogs/AssetsManager.vue | 2 +- src/pages/TabEditor.vue | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/AddAssets.vue b/src/components/AddAssets.vue index 44debdc..ad7707d 100644 --- a/src/components/AddAssets.vue +++ b/src/components/AddAssets.vue @@ -39,6 +39,7 @@ :ratio="16 / 9" :src="asset.url" @click="asset.isSelected = !asset.isSelected" + contain basic>
diff --git a/src/components/Camera.vue b/src/components/Camera.vue index f002e20..ced6925 100644 --- a/src/components/Camera.vue +++ b/src/components/Camera.vue @@ -97,6 +97,11 @@ export default { }) } }, + beforeDestroy () { + this.$refs.video.pause() + this.$refs.video.src = '' + this.$refs.video.srcObject.getTracks()[0].stop() + }, methods: { /** * Capture the image diff --git a/src/components/dialogs/AssetsManager.vue b/src/components/dialogs/AssetsManager.vue index 994eb54..bf6ad24 100644 --- a/src/components/dialogs/AssetsManager.vue +++ b/src/components/dialogs/AssetsManager.vue @@ -33,7 +33,7 @@ input[type='file'] :key="index" class="card col-2 q-ma-md" > - +
Date: Thu, 31 Dec 2020 11:38:21 +0100 Subject: [PATCH 2/7] fix localstorage use in Panel --- quasar.conf.js | 3 ++- src/layouts/HomeLayout.vue | 15 +++++++-------- src/store/assets-manager/actions.js | 8 ++++---- src/store/devices/actions.js | 10 +++++----- src/store/tab-editor/actions.js | 3 ++- src/store/tab-editor/utils.js | 5 +++-- 6 files changed, 23 insertions(+), 21 deletions(-) diff --git a/quasar.conf.js b/quasar.conf.js index b43d75c..b147396 100644 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -80,7 +80,8 @@ module.exports = function (ctx) { // Quasar plugins plugins: [ - 'Notify' + 'Notify', + 'LocalStorage' ] }, diff --git a/src/layouts/HomeLayout.vue b/src/layouts/HomeLayout.vue index 4147a04..e11a3c8 100644 --- a/src/layouts/HomeLayout.vue +++ b/src/layouts/HomeLayout.vue @@ -168,8 +168,7 @@ import DialogDeviceName from '~/components/dialogs/DeviceName' import DialogDeviceInvitation from '~/components/dialogs/DeviceInvitation' import Camera from '~/components/Camera' -console.log('id:') -console.log(localStorage.id) + export default { name: 'LayoutHome', components: { @@ -187,7 +186,7 @@ export default { * If route is host/assets open assets manager */ mounted () { - if (!localStorage.getItem('id')) { + if (!this.$q.localStorage.getItem('id')) { this.$router.push({ name: 'auth' }) @@ -211,8 +210,8 @@ export default { }, computed: { code () { - return localStorage.getItem('username') + ':' + - localStorage.getItem('password') + return this.$q.localStorage.getItem('username') + ':' + + this.$q.localStorage.getItem('password') }, users () { return this.$store.getters['users/users'] @@ -285,9 +284,9 @@ export default { * Go to auth page **/ onLogout () { - localStorage.removeItem('id') - localStorage.removeItem('username') - localStorage.removeItem('password') + this.$q.localStorage.removeItem('id') + this.$q.localStorage.removeItem('username') + this.$q.localStorage.removeItem('password') this.$router.push({ name: 'auth' }) diff --git a/src/store/assets-manager/actions.js b/src/store/assets-manager/actions.js index a2d64b8..99e4f53 100644 --- a/src/store/assets-manager/actions.js +++ b/src/store/assets-manager/actions.js @@ -1,7 +1,7 @@ import Parse from 'parse' import Unidecode from 'unidecode' import AssetModel, { NAME_KEY } from '~/models/Asset' - +import { LocalStorage } from 'quasar' import { modelFromAsset } from './utils' /** @@ -24,7 +24,7 @@ export const openAndLoad = ({ commit, dispatch }, { selectMode = false, selectCa */ export const loadAssets = ({ commit }) => { new Parse.Query(AssetModel) - .equalTo('user', localStorage.getItem('id')) + .equalTo('user', LocalStorage.getItem('id')) .find() .then((assets) => { console.log(assets) @@ -83,7 +83,7 @@ export const uploadFile = ({ commit }, file) => { new Parse.File(name, file) .save() .then((file) => - AssetModel.New(name, file, file._url, localStorage.getItem('id')) + AssetModel.New(name, file, file._url, LocalStorage.getItem('id')) .save() ) .then((asset) => { @@ -95,7 +95,7 @@ export const uploadFile = ({ commit }, file) => { } export const addAsset = ({ commit }, obj) => { - AssetModel.New(obj.name, false, obj.url, localStorage.getItem('id')) + AssetModel.New(obj.name, false, obj.url, LocalStorage.getItem('id')) .save() .then((asset) => { console.log(asset) diff --git a/src/store/devices/actions.js b/src/store/devices/actions.js index 80cf38b..b68600f 100644 --- a/src/store/devices/actions.js +++ b/src/store/devices/actions.js @@ -1,14 +1,14 @@ import Parse from 'parse' import DeviceUser, { USERNAME_KEY } from '~/models/DeviceUser' - +import { LocalStorage } from 'quasar' /** * Load devices * @param {Context} ctx */ export const loadDevices = ({ commit }) => { new Parse.Query(DeviceUser) - .equalTo('linkedAccount', localStorage.id) + .equalTo('linkedAccount', LocalStorage.id) .find() .then((users) => { commit('setDevices', users) @@ -24,7 +24,7 @@ export const loadDevices = ({ commit }) => { * @param {String} name name of the new device */ export const create = ({ commit }, name) => { - const deviceUser = DeviceUser.Create(name, localStorage.id) + const deviceUser = DeviceUser.Create(name, LocalStorage.id) const password = deviceUser.get('password') deviceUser @@ -44,7 +44,7 @@ export const create = ({ commit }, name) => { export const resetActive = ({ commit, getters: { active } }) => { new Parse.Query(DeviceUser) .equalTo(USERNAME_KEY, active.name) - .equalTo('linkedAccount', localStorage.id) + .equalTo('linkedAccount', LocalStorage.id) .first() .then((model) => { const password = DeviceUser.Password() @@ -67,7 +67,7 @@ export const resetActive = ({ commit, getters: { active } }) => { export const deleteActive = ({ commit, getters: { active } }) => { new Parse.Query(DeviceUser) .equalTo(USERNAME_KEY, active.name) - .equalTo('linkedAccount', localStorage.id) + .equalTo('linkedAccount', LocalStorage.id) .first() .then((user) => user.destroy() diff --git a/src/store/tab-editor/actions.js b/src/store/tab-editor/actions.js index 461ef4b..2bf0ee6 100644 --- a/src/store/tab-editor/actions.js +++ b/src/store/tab-editor/actions.js @@ -2,6 +2,7 @@ import Parse from 'parse' import slugify from '~/utils/slugify' import { tabToModel } from './utils' +import { LocalStorage } from 'quasar' import TabModel, { SLUG_KEY, NAME_KEY, HEX_COLOR_KEY, SPEED_KEY, LANGUAGE_KEY } from '~/models/Tab' import TabItemModel, { @@ -22,7 +23,7 @@ import TabItemModel, { export const loadBySlug = ({ commit, dispatch }, slug) => { new Parse.Query(TabModel) .equalTo(SLUG_KEY, slug) - .equalTo('user', localStorage.id) + .equalTo('user', LocalStorage.id) .first() .then((tabModel) => { commit('setTab', tabModel) diff --git a/src/store/tab-editor/utils.js b/src/store/tab-editor/utils.js index 3d9fcb0..bcd1eea 100644 --- a/src/store/tab-editor/utils.js +++ b/src/store/tab-editor/utils.js @@ -9,6 +9,7 @@ import { ORDER_KEY as ITEM_ORDER_KEY } from '~/models/TabItem' +import { LocalStorage } from 'quasar' /** * Set something in the tab from its key * @param {State} state @@ -45,7 +46,7 @@ export const modelToTab = (tabModel) => ({ hexColor: tabModel.get(HEX_COLOR_KEY), speed: tabModel.get(SPEED_KEY), language: tabModel.get(LANGUAGE_KEY), - user: localStorage.id + user: LocalStorage.id }) /** @@ -55,7 +56,7 @@ export const modelToTab = (tabModel) => ({ export const tabToModel = (tab) => { return new Parse.Query(TabModel) .equalTo(SLUG_KEY, tab.slug) - .equalTo('user', localStorage.id) + .equalTo('user', LocalStorage.id) .first() } From b2a0e707a4e4e0f7d932c8eae250c54ba54093de Mon Sep 17 00:00:00 2001 From: morvanr Date: Thu, 31 Dec 2020 12:59:25 +0100 Subject: [PATCH 3/7] correct local storage to work with ssr --- package-lock.json | 19 +++++++++++++++++++ src/layouts/HomeLayout.vue | 16 ++++++++++------ src/store/assets-manager/actions.js | 8 ++++---- src/store/devices/actions.js | 9 ++++----- src/store/tab-editor/actions.js | 3 +-- src/store/tab-editor/utils.js | 6 ++---- 6 files changed, 40 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index e1493d1..d6d3ddd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4079,6 +4079,16 @@ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", @@ -7207,6 +7217,13 @@ } } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -15753,6 +15770,7 @@ "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1" } }, @@ -16469,6 +16487,7 @@ "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1" } }, diff --git a/src/layouts/HomeLayout.vue b/src/layouts/HomeLayout.vue index e11a3c8..acb1042 100644 --- a/src/layouts/HomeLayout.vue +++ b/src/layouts/HomeLayout.vue @@ -186,7 +186,7 @@ export default { * If route is host/assets open assets manager */ mounted () { - if (!this.$q.localStorage.getItem('id')) { + if (!process.browser && !localStorage.getItem('id')) { this.$router.push({ name: 'auth' }) @@ -210,8 +210,12 @@ export default { }, computed: { code () { - return this.$q.localStorage.getItem('username') + ':' + - this.$q.localStorage.getItem('password') + if (process.browser) { + return localStorage.getItem('username') + ':' + + localStorage.getItem('password') + } else { + return ':' + } }, users () { return this.$store.getters['users/users'] @@ -284,9 +288,9 @@ export default { * Go to auth page **/ onLogout () { - this.$q.localStorage.removeItem('id') - this.$q.localStorage.removeItem('username') - this.$q.localStorage.removeItem('password') + localStorage.removeItem('id') + localStorage.removeItem('username') + localStorage.removeItem('password') this.$router.push({ name: 'auth' }) diff --git a/src/store/assets-manager/actions.js b/src/store/assets-manager/actions.js index 99e4f53..a2d64b8 100644 --- a/src/store/assets-manager/actions.js +++ b/src/store/assets-manager/actions.js @@ -1,7 +1,7 @@ import Parse from 'parse' import Unidecode from 'unidecode' import AssetModel, { NAME_KEY } from '~/models/Asset' -import { LocalStorage } from 'quasar' + import { modelFromAsset } from './utils' /** @@ -24,7 +24,7 @@ export const openAndLoad = ({ commit, dispatch }, { selectMode = false, selectCa */ export const loadAssets = ({ commit }) => { new Parse.Query(AssetModel) - .equalTo('user', LocalStorage.getItem('id')) + .equalTo('user', localStorage.getItem('id')) .find() .then((assets) => { console.log(assets) @@ -83,7 +83,7 @@ export const uploadFile = ({ commit }, file) => { new Parse.File(name, file) .save() .then((file) => - AssetModel.New(name, file, file._url, LocalStorage.getItem('id')) + AssetModel.New(name, file, file._url, localStorage.getItem('id')) .save() ) .then((asset) => { @@ -95,7 +95,7 @@ export const uploadFile = ({ commit }, file) => { } export const addAsset = ({ commit }, obj) => { - AssetModel.New(obj.name, false, obj.url, LocalStorage.getItem('id')) + AssetModel.New(obj.name, false, obj.url, localStorage.getItem('id')) .save() .then((asset) => { console.log(asset) diff --git a/src/store/devices/actions.js b/src/store/devices/actions.js index b68600f..1f0bd76 100644 --- a/src/store/devices/actions.js +++ b/src/store/devices/actions.js @@ -1,14 +1,13 @@ import Parse from 'parse' import DeviceUser, { USERNAME_KEY } from '~/models/DeviceUser' -import { LocalStorage } from 'quasar' /** * Load devices * @param {Context} ctx */ export const loadDevices = ({ commit }) => { new Parse.Query(DeviceUser) - .equalTo('linkedAccount', LocalStorage.id) + .equalTo('linkedAccount', localStorage.id) .find() .then((users) => { commit('setDevices', users) @@ -24,7 +23,7 @@ export const loadDevices = ({ commit }) => { * @param {String} name name of the new device */ export const create = ({ commit }, name) => { - const deviceUser = DeviceUser.Create(name, LocalStorage.id) + const deviceUser = DeviceUser.Create(name, localStorage.id) const password = deviceUser.get('password') deviceUser @@ -44,7 +43,7 @@ export const create = ({ commit }, name) => { export const resetActive = ({ commit, getters: { active } }) => { new Parse.Query(DeviceUser) .equalTo(USERNAME_KEY, active.name) - .equalTo('linkedAccount', LocalStorage.id) + .equalTo('linkedAccount', localStorage.id) .first() .then((model) => { const password = DeviceUser.Password() @@ -67,7 +66,7 @@ export const resetActive = ({ commit, getters: { active } }) => { export const deleteActive = ({ commit, getters: { active } }) => { new Parse.Query(DeviceUser) .equalTo(USERNAME_KEY, active.name) - .equalTo('linkedAccount', LocalStorage.id) + .equalTo('linkedAccount', localStorage.id) .first() .then((user) => user.destroy() diff --git a/src/store/tab-editor/actions.js b/src/store/tab-editor/actions.js index 2bf0ee6..461ef4b 100644 --- a/src/store/tab-editor/actions.js +++ b/src/store/tab-editor/actions.js @@ -2,7 +2,6 @@ import Parse from 'parse' import slugify from '~/utils/slugify' import { tabToModel } from './utils' -import { LocalStorage } from 'quasar' import TabModel, { SLUG_KEY, NAME_KEY, HEX_COLOR_KEY, SPEED_KEY, LANGUAGE_KEY } from '~/models/Tab' import TabItemModel, { @@ -23,7 +22,7 @@ import TabItemModel, { export const loadBySlug = ({ commit, dispatch }, slug) => { new Parse.Query(TabModel) .equalTo(SLUG_KEY, slug) - .equalTo('user', LocalStorage.id) + .equalTo('user', localStorage.id) .first() .then((tabModel) => { commit('setTab', tabModel) diff --git a/src/store/tab-editor/utils.js b/src/store/tab-editor/utils.js index bcd1eea..0f70ce3 100644 --- a/src/store/tab-editor/utils.js +++ b/src/store/tab-editor/utils.js @@ -8,8 +8,6 @@ import { HIDDEN_KEY as ITEM_HIDDEN_KEY, ORDER_KEY as ITEM_ORDER_KEY } from '~/models/TabItem' - -import { LocalStorage } from 'quasar' /** * Set something in the tab from its key * @param {State} state @@ -46,7 +44,7 @@ export const modelToTab = (tabModel) => ({ hexColor: tabModel.get(HEX_COLOR_KEY), speed: tabModel.get(SPEED_KEY), language: tabModel.get(LANGUAGE_KEY), - user: LocalStorage.id + user: localStorage.id }) /** @@ -56,7 +54,7 @@ export const modelToTab = (tabModel) => ({ export const tabToModel = (tab) => { return new Parse.Query(TabModel) .equalTo(SLUG_KEY, tab.slug) - .equalTo('user', LocalStorage.id) + .equalTo('user', localStorage.id) .first() } From d08b76fb7f290734526072136f53796de8c346eb Mon Sep 17 00:00:00 2001 From: morvanr Date: Thu, 31 Dec 2020 13:18:47 +0100 Subject: [PATCH 4/7] change logout behavior --- src/layouts/HomeLayout.vue | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/layouts/HomeLayout.vue b/src/layouts/HomeLayout.vue index acb1042..1859083 100644 --- a/src/layouts/HomeLayout.vue +++ b/src/layouts/HomeLayout.vue @@ -288,9 +288,7 @@ export default { * Go to auth page **/ onLogout () { - localStorage.removeItem('id') - localStorage.removeItem('username') - localStorage.removeItem('password') + localStorage.clear() this.$router.push({ name: 'auth' }) From d3bb0086c015ae31cc77ebf9e6d1461d37f28417 Mon Sep 17 00:00:00 2001 From: morvanr Date: Thu, 31 Dec 2020 15:03:44 +0100 Subject: [PATCH 5/7] auto save of tab info excluding item (language, speed, color, name...) --- src/pages/TabEditor.vue | 16 +++++++++++++ src/store/tab-editor/actions.js | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/src/pages/TabEditor.vue b/src/pages/TabEditor.vue index 790ce39..1f072d2 100644 --- a/src/pages/TabEditor.vue +++ b/src/pages/TabEditor.vue @@ -125,6 +125,8 @@ class="q-ma-md bg-white" :value="tab.name" @input="setName" + @keyup.enter="$event.target.blur()" + @blur="onSave()" filled /> @@ -134,6 +136,8 @@ class="q-ma-md bg-white" :value="tab.hexColor" @input="setHexColor" + @keyup.enter="$event.target.blur()" + @blur="onSaveTabElement('couleur')" filled >