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(() => {