Compare commits

...

5 Commits

6 changed files with 47 additions and 19 deletions

View File

@ -156,16 +156,17 @@ func (b *browserService) OpenConnection(name string) (resp types.JSResp) {
} else { } else {
// get database info // get database info
var res string var res string
res, err = client.Info(ctx, "keyspace").Result() info := map[string]map[string]string{}
if err != nil { if res, err = client.Info(ctx, "keyspace").Result(); err != nil {
resp.Msg = "get server info fail:" + err.Error() //resp.Msg = "get server info fail:" + err.Error()
return //return
} else {
info = b.parseInfo(res)
} }
info := b.parseInfo(res)
if totaldb <= 0 { if totaldb <= 0 {
// cannot retrieve the database count by "CONFIG GET databases", try to get max index from keyspace // cannot retrieve the database count by "CONFIG GET databases", try to get max index from keyspace
keyspace := info["Keyspace"] if keyspace := info["Keyspace"]; len(keyspace) > 0 {
var db, maxDB int var db, maxDB int
for dbName := range keyspace { for dbName := range keyspace {
if db, err = strconv.Atoi(strings.TrimLeft(dbName, "db")); err == nil { if db, err = strconv.Atoi(strings.TrimLeft(dbName, "db")); err == nil {
@ -176,6 +177,7 @@ func (b *browserService) OpenConnection(name string) (resp types.JSResp) {
} }
totaldb = maxDB + 1 totaldb = maxDB + 1
} }
}
queryDB := func(idx int) types.ConnectionDB { queryDB := func(idx int) types.ConnectionDB {
dbName := "db" + strconv.Itoa(idx) dbName := "db" + strconv.Itoa(idx)

View File

@ -6,6 +6,7 @@ import (
"github.com/adrg/sysfont" "github.com/adrg/sysfont"
runtime2 "github.com/wailsapp/wails/v2/pkg/runtime" runtime2 "github.com/wailsapp/wails/v2/pkg/runtime"
"net/http" "net/http"
"os"
"sort" "sort"
"strings" "strings"
"sync" "sync"
@ -50,6 +51,7 @@ func (p *preferencesService) SetPreferences(pf types.Preferences) (resp types.JS
return return
} }
p.UpdateEnv()
resp.Success = true resp.Success = true
return return
} }
@ -114,6 +116,11 @@ func (p *preferencesService) GetBuildInDecoder() (resp types.JSResp) {
return return
} }
func (p *preferencesService) GetLanguage() string {
pref := p.pref.GetPreferences()
return pref.General.Language
}
func (p *preferencesService) SetAppVersion(ver string) { func (p *preferencesService) SetAppVersion(ver string) {
if !strings.HasPrefix(ver, "v") { if !strings.HasPrefix(ver, "v") {
p.clientVersion = "v" + ver p.clientVersion = "v" + ver
@ -246,3 +253,12 @@ func (p *preferencesService) CheckForUpdate() (resp types.JSResp) {
} }
return return
} }
// UpdateEnv Update System Environment
func (p *preferencesService) UpdateEnv() {
if p.GetLanguage() == "zh" {
os.Setenv("LANG", "zh_CN.UTF-8")
} else {
os.Unsetenv("LANG")
}
}

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import ContentPane from './components/content/ContentPane.vue' import ContentPane from './components/content/ContentPane.vue'
import BrowserPane from './components/sidebar/BrowserPane.vue' import BrowserPane from './components/sidebar/BrowserPane.vue'
import { computed, onMounted, reactive, ref, watchEffect } from 'vue' import { computed, onMounted, onUnmounted, reactive, ref, watchEffect } from 'vue'
import { debounce } from 'lodash' import { debounce } from 'lodash'
import { useThemeVars } from 'naive-ui' import { useThemeVars } from 'naive-ui'
import Ribbon from './components/sidebar/Ribbon.vue' import Ribbon from './components/sidebar/Ribbon.vue'
@ -117,12 +117,18 @@ onMounted(async () => {
onToggleFullscreen(fullscreen === true) onToggleFullscreen(fullscreen === true)
const maximised = await WindowIsMaximised() const maximised = await WindowIsMaximised()
onToggleMaximize(maximised) onToggleMaximize(maximised)
window.addEventListener('keydown', onKeyShortcut)
})
onUnmounted(() => {
window.removeEventListener('keydown', onKeyShortcut)
}) })
const onKeyShortcut = (e) => { const onKeyShortcut = (e) => {
const isCtrlOn = isMacOS() ? e.metaKey : e.ctrlKey
switch (e.key) { switch (e.key) {
case 'w': case 'w':
if (e.metaKey) { if (isCtrlOn) {
// close current tab // close current tab
const tabStore = useTabStore() const tabStore = useTabStore()
const currentTab = tabStore.currentTab const currentTab = tabStore.currentTab
@ -138,7 +144,7 @@ const onKeyShortcut = (e) => {
<template> <template>
<!-- app content--> <!-- app content-->
<n-spin :show="props.loading" :style="spinStyle" :theme-overrides="{ opacitySpinning: 0 }"> <n-spin :show="props.loading" :style="spinStyle" :theme-overrides="{ opacitySpinning: 0 }">
<div id="app-content-wrapper" :style="wrapperStyle" class="flex-box-v" tabindex="0" @keydown="onKeyShortcut"> <div id="app-content-wrapper" :style="wrapperStyle" class="flex-box-v">
<!-- title bar --> <!-- title bar -->
<div <div
id="app-toolbar" id="app-toolbar"

View File

@ -16,6 +16,7 @@ import ContentToolbar from '@/components/content_value/ContentToolbar.vue'
import ContentValueJson from '@/components/content_value/ContentValueJson.vue' import ContentValueJson from '@/components/content_value/ContentValueJson.vue'
import usePreferencesStore from 'stores/preferences.js' import usePreferencesStore from 'stores/preferences.js'
import { TextAlignType } from '@/consts/text_align_type.js' import { TextAlignType } from '@/consts/text_align_type.js'
import { isMacOS } from '@/utils/platform.js'
const themeVars = useThemeVars() const themeVars = useThemeVars()
const browserStore = useBrowserStore() const browserStore = useBrowserStore()
@ -130,7 +131,7 @@ const onReload = async (selDecode, selFormat) => {
} }
const onKeyShortcut = (e) => { const onKeyShortcut = (e) => {
// console.log(e) const isCtrlOn = isMacOS() ? e.metaKey : e.ctrlKey
switch (e.key) { switch (e.key) {
case 'Delete': case 'Delete':
onDelete() onDelete()
@ -139,7 +140,7 @@ const onKeyShortcut = (e) => {
onReload() onReload()
return return
case 'r': case 'r':
if (e.metaKey) { if (isCtrlOn) {
onReload() onReload()
} }
return return

View File

@ -26,6 +26,7 @@ import usePreferencesStore from 'stores/preferences.js'
import { typesIconStyle } from '@/consts/support_redis_type.js' import { typesIconStyle } from '@/consts/support_redis_type.js'
import { nativeRedisKey } from '@/utils/key_convert.js' import { nativeRedisKey } from '@/utils/key_convert.js'
import copy from 'copy-text-to-clipboard' import copy from 'copy-text-to-clipboard'
import { isMacOS } from '@/utils/platform.js'
const props = defineProps({ const props = defineProps({
server: String, server: String,
@ -326,6 +327,7 @@ const handleKeyCopy = () => {
} }
const onKeyShortcut = (e) => { const onKeyShortcut = (e) => {
const isCtrlOn = isMacOS() ? e.metaKey : e.ctrlKey
switch (e.key) { switch (e.key) {
case 'ArrowUp': case 'ArrowUp':
handleKeyUp() handleKeyUp()
@ -340,7 +342,7 @@ const onKeyShortcut = (e) => {
handleKeyRight() handleKeyRight()
break break
case 'c': case 'c':
if (e.metaKey) { if (isCtrlOn) {
handleKeyCopy() handleKeyCopy()
} }
break break
@ -351,7 +353,7 @@ const onKeyShortcut = (e) => {
handleSelectContextMenu('value_reload') handleSelectContextMenu('value_reload')
break break
case 'r': case 'r':
if (e.metaKey) { if (isCtrlOn) {
handleSelectContextMenu('value_reload') handleSelectContextMenu('value_reload')
} }
break break

View File

@ -36,6 +36,7 @@ func main() {
pubsubSvc := services.Pubsub() pubsubSvc := services.Pubsub()
prefSvc := services.Preferences() prefSvc := services.Preferences()
prefSvc.SetAppVersion(version) prefSvc.SetAppVersion(version)
prefSvc.UpdateEnv()
windowWidth, windowHeight, maximised := prefSvc.GetWindowSize() windowWidth, windowHeight, maximised := prefSvc.GetWindowSize()
windowStartState := options.Normal windowStartState := options.Normal
if maximised { if maximised {