- {{ $t('restore_defaults') }}
+ {{ $t('restore_defaults') }}
{{ $t('cancel') }}
diff --git a/frontend/src/stores/preferences.js b/frontend/src/stores/preferences.js
new file mode 100644
index 0000000..bbd7979
--- /dev/null
+++ b/frontend/src/stores/preferences.js
@@ -0,0 +1,93 @@
+import { defineStore } from 'pinia'
+import { lang } from '../langs/index.js'
+import { camelCase, isObject, map, set, snakeCase, split } from 'lodash'
+import { GetPreferences, RestorePreferences, SetPreferences } from '../../wailsjs/go/services/preferencesService.js'
+
+const usePreferencesStore = defineStore('preferences', {
+ state: () => ({
+ general: {
+ language: 'en',
+ font: '',
+ fontSize: 14,
+ useSysProxy: false,
+ useSysProxyHttp: false,
+ checkUpdate: false,
+ },
+ editor: {
+ font: '',
+ fontSize: 14,
+ },
+ }),
+ getters: {
+ getSeparator() {
+ return ':'
+ },
+
+ /**
+ * all available language
+ * @returns {{label: string, value: string}[]}
+ */
+ langOption() {
+ return Object.entries(lang).map(([key, value]) => ({
+ value: key,
+ label: `${value['lang_name']}`,
+ }))
+ },
+ },
+ actions: {
+ _applyPreferences(data) {
+ for (const key in data) {
+ const keys = map(split(key, '.'), camelCase)
+ set(this, keys, data[key])
+ }
+ },
+
+ /**
+ * load preferences from local
+ * @returns {Promise}
+ */
+ async loadPreferences() {
+ const { success, data } = await GetPreferences()
+ if (success) {
+ this._applyPreferences(data)
+ }
+ },
+
+ /**
+ * save preferences to local
+ * @returns {Promise}
+ */
+ async savePreferences() {
+ const obj2Map = (prefix, obj) => {
+ const result = {}
+ for (const key in obj) {
+ if (isObject(obj[key])) {
+ // TODO: perform sub object
+ } else {
+ result[`${prefix}.${snakeCase(key)}`] = obj[key]
+ }
+ }
+ return result
+ }
+ const pf = Object.assign({}, obj2Map('general', this.general), obj2Map('editor', this.editor))
+ const { success, msg } = await SetPreferences(pf)
+ return success === true
+ },
+
+ /**
+ * restore preferences to default
+ * @returns {Promise}
+ */
+ async restorePreferences() {
+ const { success, data } = await RestorePreferences()
+ if (success === true) {
+ const { pref } = data
+ this._applyPreferences(pref)
+ return true
+ }
+ return false
+ },
+ },
+})
+
+export default usePreferencesStore
diff --git a/main.go b/main.go
index 13a0e22..daec7b3 100644
--- a/main.go
+++ b/main.go
@@ -3,13 +3,11 @@ package main
import (
"context"
"embed"
- "github.com/wailsapp/wails/v2/pkg/options/mac"
- "tinyrdm/backend/services"
- "tinyrdm/backend/storage"
-
"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
+ "github.com/wailsapp/wails/v2/pkg/options/mac"
+ "tinyrdm/backend/services"
)
//go:embed all:frontend/dist
@@ -18,9 +16,8 @@ var assets embed.FS
func main() {
// Create an instance of the app structure
app := NewApp()
- preferences := storage.NewPreferences()
- //connections := storage.NewConnections()
connSvc := services.Connection()
+ prefSvc := services.Preferences()
// Create application with options
err := wails.Run(&options.App{
@@ -42,9 +39,8 @@ func main() {
},
Bind: []interface{}{
app,
- preferences,
- //connections,
connSvc,
+ prefSvc,
},
Mac: &mac.Options{
TitleBar: &mac.TitleBar{