From 70b469571a9e6ce61d417162ad290cafcf19dc45 Mon Sep 17 00:00:00 2001 From: differui Date: Tue, 19 Sep 2017 12:36:11 +0800 Subject: [PATCH 1/5] :lipstick: change helper modal interface --- src/renderer/components/HelperModal.vue | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/renderer/components/HelperModal.vue b/src/renderer/components/HelperModal.vue index 5479ca6..12489e1 100644 --- a/src/renderer/components/HelperModal.vue +++ b/src/renderer/components/HelperModal.vue @@ -81,17 +81,23 @@ export default { diff --git a/src/renderer/components/Toast.vue b/src/renderer/components/Toast.vue index 666212f..6929b06 100644 --- a/src/renderer/components/Toast.vue +++ b/src/renderer/components/Toast.vue @@ -38,7 +38,7 @@ export default { &__wrapper { text-align: center; border-radius: 500px; - background-color: rgba(0, 0, 0, 0.5); + background-color: rgba(0, 0, 0, 0.75); min-width: 100px; max-width: 250px; padding: 12px; diff --git a/src/renderer/configs/index.js b/src/renderer/configs/index.js index f17b619..98858da 100644 --- a/src/renderer/configs/index.js +++ b/src/renderer/configs/index.js @@ -1,5 +1,7 @@ export const MAX_AVALIABLE_CODE_COUNT = 20; export const MAX_CONTENT_LENGTH = 150 * 3; export const TOAST_DURATION = 3000; +export const GET_TITLE_TIMEOUT = 8 * 1000; +export const SAVE_CHECKPOINT_DURATION = 1000; export * from './keycode'; diff --git a/src/renderer/helpers/index.js b/src/renderer/helpers/index.js index a71a675..a658f9f 100644 --- a/src/renderer/helpers/index.js +++ b/src/renderer/helpers/index.js @@ -1,3 +1,4 @@ export * from './is'; export * from './svg'; export * from './storage'; +export * from './title'; diff --git a/src/renderer/helpers/title.js b/src/renderer/helpers/title.js new file mode 100644 index 0000000..6c155b5 --- /dev/null +++ b/src/renderer/helpers/title.js @@ -0,0 +1,17 @@ +import getTitleAtUrl from 'get-title-at-url'; +import * as cfg from '@/configs'; + +/* eslint-disable import/prefer-default-export */ +export function getTitle(url) { + return Promise.race([ + new Promise((resolve, reject) => { + setTimeout(reject, cfg.GET_TITLE_TIMEOUT); + }), + new Promise((resolve, reject) => { + getTitleAtUrl(url, (title, err) => { + if (err) reject(err); + else resolve(title); + }); + }), + ]); +} diff --git a/src/renderer/store/index.js b/src/renderer/store/index.js index 061fb40..4b23f8e 100644 --- a/src/renderer/store/index.js +++ b/src/renderer/store/index.js @@ -1,9 +1,11 @@ import Vue from 'vue'; import Vuex from 'vuex'; +import debounce from 'debounce'; import toast from '@/store/modules/toast'; import qrCodeList from '@/store/modules/qr-code-list'; import qrCodeImage from '@/store/modules/qr-code-image'; import * as helpers from '@/helpers'; +import * as cfg from '@/configs'; Vue.use(Vuex); @@ -22,4 +24,7 @@ store.replaceState({ }, qrCodeImage: qrCodeImage.state, }); +store.subscribe(debounce((mutation, state) => { + helpers.setItem('codes', state.qrCodeList.codes); +}, cfg.SAVE_CHECKPOINT_DURATION)); export default store; diff --git a/src/renderer/webviews/Workspace.vue b/src/renderer/webviews/Workspace.vue index 58b5eb8..01be498 100644 --- a/src/renderer/webviews/Workspace.vue +++ b/src/renderer/webviews/Workspace.vue @@ -23,7 +23,7 @@