From c89357c47d9d62558efd810a41baddc6afb7e4a4 Mon Sep 17 00:00:00 2001 From: zipg Date: Wed, 8 Jul 2026 17:51:16 +0800 Subject: [PATCH] fix(redis): keep string edit actions visible --- .../src/components/redis/RedisValueViewer.vue | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/apps/desktop/src/components/redis/RedisValueViewer.vue b/apps/desktop/src/components/redis/RedisValueViewer.vue index e9ebd962d6..98bcc053fb 100644 --- a/apps/desktop/src/components/redis/RedisValueViewer.vue +++ b/apps/desktop/src/components/redis/RedisValueViewer.vue @@ -187,6 +187,9 @@ const redisJsonAppearance = computed(() => (isDark.value ? "dark" : "light")); const isBinaryStringValue = computed(() => Boolean(stringValueDetail.value?.binary)); const selectedMemberCanEdit = computed(() => selectedMemberContext.value?.canEdit ?? false); const canEditCurrentStringFormat = computed(() => Boolean(stringValueDetail.value?.editable) && stringValueView.value === "utf8"); +const showStringEditActions = computed(() => canEditCurrentStringFormat.value); +const originalStringEditValue = computed(() => (stringBlob.value ? rawRedisValueText(stringBlob.value) : "")); +const stringValueChanged = computed(() => canEditCurrentStringFormat.value && editValue.value !== originalStringEditValue.value); const canEditCurrentMemberFormat = computed(() => selectedMemberCanEdit.value && memberValueView.value === "utf8"); const hasMore = computed(() => scanCursor.value != null && scanCursor.value > 0); const collectionTotal = computed(() => (data.value ? redisValueCollectionTotal(data.value) : null)); @@ -538,7 +541,7 @@ async function loadMore() { } async function saveString() { - if (!data.value || !stringBlob.value || isBinaryStringValue.value) return; + if (!data.value || !stringBlob.value || isBinaryStringValue.value || !stringValueChanged.value) return; await api.redisSetString(props.connectionId, props.db, props.keyRaw, editValue.value); isEditing.value = false; await load(); @@ -546,10 +549,15 @@ async function saveString() { function handleStringInput() { if (canEditCurrentStringFormat.value) { - isEditing.value = true; + isEditing.value = stringValueChanged.value; } } +function discardStringEdit() { + isEditing.value = false; + editValue.value = originalStringEditValue.value; +} + async function saveJson() { if (!data.value || data.value.data.kind !== "json") return; await api.redisJsonSet(props.connectionId, props.db, props.keyRaw, editValue.value); @@ -1191,10 +1199,7 @@ onBeforeUnmount(() => { -
-