Skip to content

Commit

Permalink
Fix renaming extension key name in Database Settings
Browse files Browse the repository at this point in the history
  • Loading branch information
varjolintu committed Oct 12, 2024
1 parent d57d167 commit 10786de
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/browser/BrowserService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ QString BrowserService::storeKey(const QString& key)

hideWindow();
db->metadata()->customData()->set(CustomData::BrowserKeyPrefix + id, key);
db->metadata()->customData()->set(QString("%1_%2").arg(CustomData::Created, id),
db->metadata()->customData()->set(QString("%1%2").arg(CustomData::Created, id),
QLocale::system().toString(Clock::currentDateTime(), QLocale::ShortFormat));
return id;
}
Expand Down
4 changes: 2 additions & 2 deletions src/core/CustomData.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018 KeePassXC Team <[email protected]>
* Copyright (C) 2024 KeePassXC Team <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -21,7 +21,7 @@
#include "core/Global.h"

const QString CustomData::LastModified = QStringLiteral("_LAST_MODIFIED");
const QString CustomData::Created = QStringLiteral("_CREATED");
const QString CustomData::Created = QStringLiteral("_CREATED_");
const QString CustomData::BrowserKeyPrefix = QStringLiteral("KPXC_BROWSER_");
const QString CustomData::BrowserLegacyKeyPrefix = QStringLiteral("Public Key: ");
const QString CustomData::ExcludeFromReportsLegacy = QStringLiteral("KnownBad");
Expand Down
35 changes: 25 additions & 10 deletions src/gui/dbsettings/DatabaseSettingsWidgetBrowser.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022 KeePassXC Team <[email protected]>
* Copyright (C) 2024 KeePassXC Team <[email protected]>
* Copyright (C) 2018 Sami Vänttinen <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
Expand Down Expand Up @@ -124,7 +124,7 @@ void DatabaseSettingsWidgetBrowser::updateModel()
if (key.startsWith(CustomData::BrowserKeyPrefix)) {
QString strippedKey = key;
strippedKey.remove(CustomData::BrowserKeyPrefix);
auto created = customData()->value(QString("%1_%2").arg(CustomData::Created, strippedKey));
auto created = customData()->value(getKeyWithPrefix(CustomData::Created, strippedKey));
auto createdItem = new QStandardItem(created);
createdItem->setEditable(false);
m_customDataModel->appendRow(QList<QStandardItem*>()
Expand Down Expand Up @@ -267,18 +267,16 @@ void DatabaseSettingsWidgetBrowser::editFinished(QStandardItem* item)

if (itemSelectionModel) {
auto indexList = itemSelectionModel->selectedRows(item->column());
if (indexList.length() > 0) {
QString newValue = item->index().data().toString();
if (!indexList.isEmpty()) {
auto newValue = item->index().data().toString();

// The key is edited
if (item->column() == 0) {
// Get the old key/value pair, remove it and replace it
m_valueInEdit.insert(0, CustomData::BrowserKeyPrefix);
auto tempValue = customData()->value(m_valueInEdit);
newValue.insert(0, CustomData::BrowserKeyPrefix);
// Update created timestamp with the new key
replaceKey(CustomData::Created, m_valueInEdit, newValue);

m_db->metadata()->customData()->remove(m_valueInEdit);
m_db->metadata()->customData()->set(newValue, tempValue);
// Get the old key/value pair, remove it and replace it
replaceKey(CustomData::BrowserKeyPrefix, m_valueInEdit, newValue);
} else {
// Replace just the value
for (const QString& key : m_db->metadata()->customData()->keys()) {
Expand All @@ -301,3 +299,20 @@ void DatabaseSettingsWidgetBrowser::updateSharedKeyList()
{
updateModel();
}

// Replaces a key and the created timestamp for it
void DatabaseSettingsWidgetBrowser::replaceKey(const QString& prefix,
const QString& oldName,
const QString& newName) const
{
const auto oldKey = getKeyWithPrefix(prefix, oldName);
const auto newKey = getKeyWithPrefix(prefix, newName);
const auto tempValue = customData()->value(oldKey);
m_db->metadata()->customData()->remove(oldKey);
m_db->metadata()->customData()->set(newKey, tempValue);
}

QString DatabaseSettingsWidgetBrowser::getKeyWithPrefix(const QString& prefix, const QString& key) const
{
return QString("%1%2").arg(prefix, key);
}
4 changes: 3 additions & 1 deletion src/gui/dbsettings/DatabaseSettingsWidgetBrowser.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2023 KeePassXC Team <[email protected]>
* Copyright (C) 2024 KeePassXC Team <[email protected]>
* Copyright (C) 2018 Sami Vänttinen <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
Expand Down Expand Up @@ -62,6 +62,8 @@ private slots:
private:
void updateModel();
void settingsWarning();
void replaceKey(const QString& prefix, const QString& oldName, const QString& newName) const;
QString getKeyWithPrefix(const QString& prefix, const QString& key) const;

protected:
void showEvent(QShowEvent* event) override;
Expand Down

0 comments on commit 10786de

Please sign in to comment.