Skip to content

Commit a5d5afb

Browse files
committed
added settings persistance for opacity, alwaysTop and theme
1 parent 3e213f5 commit a5d5afb

File tree

6 files changed

+28
-28
lines changed

6 files changed

+28
-28
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "window-reader",
3-
"version": "1.1.4",
3+
"version": "1.1.5",
44
"scripts": {
55
"dev": "tauri dev",
66
"build": "tauri build"

src-tauri/Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "window_reader"
3-
version = "1.1.4"
3+
version = "1.1.5"
44
description = "A transparent notepad-like app"
55
authors = ["Ripwords"]
66
license = ""

src-tauri/tauri.conf.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"package": {
33
"productName": "window-reader",
4-
"version": "1.1.4"
4+
"version": "1.1.5"
55
},
66
"build": {
77
"distDir": "../dist",

src/components/Content.vue

+18-22
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,9 @@ import { useMessage } from 'naive-ui'
1010
import '@vueup/vue-quill/dist/vue-quill.snow.css'
1111
1212
const store = mainStore()
13-
const alwaysTop = ref(false)
14-
const opacity = ref(50)
1513
const text = ref<any>(null)
1614
const settings = ref(false)
17-
const theme = ref('dark')
1815
const themeColor = ref(0)
19-
const exportName = ref('export')
2016
const toolbar = ref<any>(null)
2117
const shortcutModal = ref(false)
2218
const exportModal_1 = ref(false)
@@ -44,19 +40,19 @@ const themeOverrides = {
4440
}
4541
4642
const changeTheme = () => {
47-
themeColor.value = theme.value === 'dark' ? 255 : 0
48-
theme.value = theme.value === 'dark' ? 'light' : 'dark'
43+
themeColor.value = store.theme === 'dark' ? 255 : 0
44+
store.theme = store.theme === 'dark' ? 'light' : 'dark'
4945
}
5046
5147
const changeAlwaysTop = () => {
52-
alwaysTop.value = !alwaysTop.value
53-
appWindow.setAlwaysOnTop(alwaysTop.value)
48+
store.alwaysTop = !store.alwaysTop
49+
appWindow.setAlwaysOnTop(store.alwaysTop)
5450
}
5551
5652
const export2PDF = async () => {
5753
try {
5854
const pdfBlob = await pdfExporter.generatePdf(store.content.ops)
59-
saveAs(pdfBlob, `${exportName.value}.pdf`)
55+
saveAs(pdfBlob, `${store.exportName}.pdf`)
6056
exportModal_1.value = false
6157
} catch (e) {
6258
message.error('PDF export failed, file is empty')
@@ -66,7 +62,7 @@ const export2PDF = async () => {
6662
const export2Word = async () => {
6763
try {
6864
const wordBlob: any = await wordExporter.generateWord(store.content.ops, {exportAs: 'blob'})
69-
saveAs(wordBlob, `${exportName.value}.docx`)
65+
saveAs(wordBlob, `${store.exportName}.docx`)
7066
exportModal_2.value = false
7167
} catch (e) {
7268
message.error('Word export failed, file is empty')
@@ -75,11 +71,11 @@ const export2Word = async () => {
7571
7672
onMounted(() => {
7773
toolbar.value.style.backgroundColor = `rgba(255, 255, 255, 0.95)`
78-
text.value.style.backgroundColor = `rgba(0, 0, 0, ${opacity.value / 100})`
74+
text.value.style.backgroundColor = `rgba(0, 0, 0, ${store.opacity / 100})`
7975
})
8076
81-
watch([opacity, theme], () => {
82-
text.value.style.backgroundColor = `rgba(${themeColor.value}, ${themeColor.value}, ${themeColor.value}, ${opacity.value / 100})`
77+
watch([() => store.opacity, () => store.theme], () => {
78+
text.value.style.backgroundColor = `rgba(${themeColor.value}, ${themeColor.value}, ${themeColor.value}, ${store.opacity / 100})`
8379
})
8480
8581
appWindow.listen("tauri://blur", () => {
@@ -155,22 +151,22 @@ await shortcutRegister()
155151
</div>
156152
<div
157153
:class="{
158-
'dark': theme === 'dark',
154+
'dark': store.theme === 'dark',
159155
}"
160156
>
161157
<div v-show="settings" class="absolute z-10 w-8/10 h-20px bottom-100px transform translate-x-5vh">
162158
<n-h2 class="text-dark-900 dark:text-light-50">Opacity</n-h2>
163-
<n-slider :theme-overrides="themeOverrides" v-model:value="opacity" :step="1"></n-slider>
159+
<n-slider :theme-overrides="themeOverrides" v-model:value="store.opacity" :step="1"></n-slider>
164160
</div>
165161
<n-tooltip placement="top-start" trigger="hover">
166162
<template #trigger>
167163
<i-mdi:arrow-top-left-thin-circle-outline
168164
class="fixed z-10 right-10px bottom-135px text-size-35px transition-colors duration-150 ease-linear"
169165
:class="{
170-
'text-green-500': alwaysTop,
171-
'text-dark-900': !alwaysTop,
172-
'dark:text-light-50': !alwaysTop,
173-
'dark:text-green-500': alwaysTop
166+
'text-green-500': store.alwaysTop,
167+
'text-dark-900': !store.alwaysTop,
168+
'dark:text-light-50': !store.alwaysTop,
169+
'dark:text-green-500': store.alwaysTop
174170
}"
175171
@click="changeAlwaysTop()"
176172
/>
@@ -199,7 +195,7 @@ await shortcutRegister()
199195
preset="card"
200196
title="Save as"
201197
>
202-
<n-input type="text" v-model:value="exportName"></n-input>
198+
<n-input type="text" v-model:value="store.exportName"></n-input>
203199
<div class="text-size-[30px] flex justify-end p-2">
204200
<button :theme-overridess="themeOverrides"><i-mdi:file-pdf class="m-[0.7rem]" @click="export2PDF()"></i-mdi:file-pdf></button>
205201
<button :theme-overridess="themeOverrides"><i-mdi:file-word class="m-[0.7rem]" @click="export2Word()"></i-mdi:file-word></button>
@@ -212,7 +208,7 @@ await shortcutRegister()
212208
preset="card"
213209
title="Save as"
214210
>
215-
<n-input type="text" v-model:value="exportName"></n-input>
211+
<n-input type="text" v-model:value="store.exportName"></n-input>
216212
<div class="text-size-[30px] flex justify-end p-2">
217213
<button :theme-overridess="themeOverrides"><i-mdi:file-pdf class="m-[0.7rem]" @click="export2PDF()"></i-mdi:file-pdf></button>
218214
</div>
@@ -224,7 +220,7 @@ await shortcutRegister()
224220
preset="card"
225221
title="Save as"
226222
>
227-
<n-input type="text" v-model:value="exportName"></n-input>
223+
<n-input type="text" v-model:value="store.exportName"></n-input>
228224
<div class="text-size-[30px] flex justify-end p-2">
229225
<button :theme-overridess="themeOverrides"><i-mdi:file-word class="m-[0.7rem]" @click="export2Word()"></i-mdi:file-word></button>
230226
</div>

src/store.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { defineStore } from 'pinia'
2-
import { useSessionStorage } from '@vueuse/core'
2+
import { useLocalStorage, useSessionStorage } from '@vueuse/core'
33

44
export const mainStore = defineStore('mainStore', {
55
state: () => ({
6-
content: useSessionStorage('content', { ops: [] }) as any
6+
content: useSessionStorage('content', { ops: [] }) as any,
7+
opacity: useLocalStorage('opacity', 50),
8+
theme: useLocalStorage('theme', 'dark'),
9+
exportName: useLocalStorage('exportName', 'export'),
10+
alwaysTop: useLocalStorage('alwaysTop', false),
711
})
812
})

0 commit comments

Comments
 (0)