diff --git a/src/renderer/src/components/SetEditor.vue b/src/renderer/src/components/SetEditor.vue index 29447dd..24ff89c 100644 --- a/src/renderer/src/components/SetEditor.vue +++ b/src/renderer/src/components/SetEditor.vue @@ -20,6 +20,8 @@ async function loadMembers() { loading.value = true try { members.value = await window.electronAPI.redis.setMembers(connStore.activeId, keyStore.selectedKey) + } catch { + members.value = [] } finally { loading.value = false } diff --git a/src/renderer/src/stores/key.ts b/src/renderer/src/stores/key.ts index db95de3..80288a0 100644 --- a/src/renderer/src/stores/key.ts +++ b/src/renderer/src/stores/key.ts @@ -138,41 +138,49 @@ export const useKeyStore = defineStore('key', () => { await loadKeyTypeAndTTL(connId, key) selectedKey.value = key - switch (selectedType.value) { - case 'string': - keyData.value = await window.electronAPI.redis.getString(connId, key) - break - case 'hash': { - const result = await window.electronAPI.redis.hashScan(connId, key, '0', 100) - keyData.value = result.fields - break - } - case 'list': { - const len = await window.electronAPI.redis.listLength(connId, key) - keyData.value = { length: len } - break - } - case 'set': { - const size = await window.electronAPI.redis.setSize(connId, key) - keyData.value = { size } - break - } - case 'zset': { - const size = await window.electronAPI.redis.zsetSize(connId, key) - keyData.value = { size } - break - } - case 'stream': { - try { - const info = await window.electronAPI.redis.streamInfo(connId, key) - keyData.value = { length: info.length } - } catch { - keyData.value = { length: 0 } + try { + switch (selectedType.value) { + case 'string': + keyData.value = await window.electronAPI.redis.getString(connId, key) + break + case 'hash': { + const result = await window.electronAPI.redis.hashScan(connId, key, '0', 100) + keyData.value = result.fields + break } - break + case 'list': { + const len = await window.electronAPI.redis.listLength(connId, key) + keyData.value = { length: len } + break + } + case 'set': { + const size = await window.electronAPI.redis.setSize(connId, key) + keyData.value = { size } + break + } + case 'zset': { + const size = await window.electronAPI.redis.zsetSize(connId, key) + keyData.value = { size } + break + } + case 'stream': { + try { + const info = await window.electronAPI.redis.streamInfo(connId, key) + keyData.value = { length: info.length } + } catch { + keyData.value = { length: 0 } + } + break + } + default: + keyData.value = null } - default: - keyData.value = null + } catch { + // Type might have changed between TYPE check and the type-specific + // command (e.g. key was overwritten). Re-fetch the type so the + // correct editor is shown. + await loadKeyTypeAndTTL(connId, key) + keyData.value = null } } finally { loading.value = false