mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-26 02:55:25 +02:00
Fix MS17902: Prevent case where My Purchases says Open instead of Uninstall
This commit is contained in:
parent
b94dd526b9
commit
24cf4adb44
1 changed files with 34 additions and 25 deletions
|
@ -40,11 +40,9 @@ QmlCommerce::QmlCommerce() {
|
||||||
connect(ledger.data(), &Ledger::transferAssetToUsernameResult, this, &QmlCommerce::transferAssetToUsernameResult);
|
connect(ledger.data(), &Ledger::transferAssetToUsernameResult, this, &QmlCommerce::transferAssetToUsernameResult);
|
||||||
connect(ledger.data(), &Ledger::availableUpdatesResult, this, &QmlCommerce::availableUpdatesResult);
|
connect(ledger.data(), &Ledger::availableUpdatesResult, this, &QmlCommerce::availableUpdatesResult);
|
||||||
connect(ledger.data(), &Ledger::updateItemResult, this, &QmlCommerce::updateItemResult);
|
connect(ledger.data(), &Ledger::updateItemResult, this, &QmlCommerce::updateItemResult);
|
||||||
|
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
connect(accountManager.data(), &AccountManager::usernameChanged, this, [&]() {
|
connect(accountManager.data(), &AccountManager::usernameChanged, this, [&]() { setPassphrase(""); });
|
||||||
setPassphrase("");
|
|
||||||
});
|
|
||||||
|
|
||||||
_appsPath = PathUtils::getAppDataPath() + "Apps/";
|
_appsPath = PathUtils::getAppDataPath() + "Apps/";
|
||||||
}
|
}
|
||||||
|
@ -105,7 +103,11 @@ void QmlCommerce::balance() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlCommerce::inventory(const QString& editionFilter, const QString& typeFilter, const QString& titleFilter, const int& page, const int& perPage) {
|
void QmlCommerce::inventory(const QString& editionFilter,
|
||||||
|
const QString& typeFilter,
|
||||||
|
const QString& titleFilter,
|
||||||
|
const int& page,
|
||||||
|
const int& perPage) {
|
||||||
auto ledger = DependencyManager::get<Ledger>();
|
auto ledger = DependencyManager::get<Ledger>();
|
||||||
auto wallet = DependencyManager::get<Wallet>();
|
auto wallet = DependencyManager::get<Wallet>();
|
||||||
QStringList cachedPublicKeys = wallet->listPublicKeys();
|
QStringList cachedPublicKeys = wallet->listPublicKeys();
|
||||||
|
@ -166,24 +168,30 @@ void QmlCommerce::certificateInfo(const QString& certificateId) {
|
||||||
ledger->certificateInfo(certificateId);
|
ledger->certificateInfo(certificateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlCommerce::transferAssetToNode(const QString& nodeID, const QString& certificateID, const int& amount, const QString& optionalMessage) {
|
void QmlCommerce::transferAssetToNode(const QString& nodeID,
|
||||||
|
const QString& certificateID,
|
||||||
|
const int& amount,
|
||||||
|
const QString& optionalMessage) {
|
||||||
auto ledger = DependencyManager::get<Ledger>();
|
auto ledger = DependencyManager::get<Ledger>();
|
||||||
auto wallet = DependencyManager::get<Wallet>();
|
auto wallet = DependencyManager::get<Wallet>();
|
||||||
QStringList keys = wallet->listPublicKeys();
|
QStringList keys = wallet->listPublicKeys();
|
||||||
if (keys.count() == 0) {
|
if (keys.count() == 0) {
|
||||||
QJsonObject result{ { "status", "fail" },{ "message", "Uninitialized Wallet." } };
|
QJsonObject result{ { "status", "fail" }, { "message", "Uninitialized Wallet." } };
|
||||||
return emit transferAssetToNodeResult(result);
|
return emit transferAssetToNodeResult(result);
|
||||||
}
|
}
|
||||||
QString key = keys[0];
|
QString key = keys[0];
|
||||||
ledger->transferAssetToNode(key, nodeID, certificateID, amount, optionalMessage);
|
ledger->transferAssetToNode(key, nodeID, certificateID, amount, optionalMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlCommerce::transferAssetToUsername(const QString& username, const QString& certificateID, const int& amount, const QString& optionalMessage) {
|
void QmlCommerce::transferAssetToUsername(const QString& username,
|
||||||
|
const QString& certificateID,
|
||||||
|
const int& amount,
|
||||||
|
const QString& optionalMessage) {
|
||||||
auto ledger = DependencyManager::get<Ledger>();
|
auto ledger = DependencyManager::get<Ledger>();
|
||||||
auto wallet = DependencyManager::get<Wallet>();
|
auto wallet = DependencyManager::get<Wallet>();
|
||||||
QStringList keys = wallet->listPublicKeys();
|
QStringList keys = wallet->listPublicKeys();
|
||||||
if (keys.count() == 0) {
|
if (keys.count() == 0) {
|
||||||
QJsonObject result{ { "status", "fail" },{ "message", "Uninitialized Wallet." } };
|
QJsonObject result{ { "status", "fail" }, { "message", "Uninitialized Wallet." } };
|
||||||
return emit transferAssetToUsernameResult(result);
|
return emit transferAssetToUsernameResult(result);
|
||||||
}
|
}
|
||||||
QString key = keys[0];
|
QString key = keys[0];
|
||||||
|
@ -194,10 +202,7 @@ void QmlCommerce::replaceContentSet(const QString& itemHref, const QString& cert
|
||||||
auto ledger = DependencyManager::get<Ledger>();
|
auto ledger = DependencyManager::get<Ledger>();
|
||||||
ledger->updateLocation(certificateID, DependencyManager::get<AddressManager>()->getPlaceName(), true);
|
ledger->updateLocation(certificateID, DependencyManager::get<AddressManager>()->getPlaceName(), true);
|
||||||
qApp->replaceDomainContent(itemHref);
|
qApp->replaceDomainContent(itemHref);
|
||||||
QJsonObject messageProperties = {
|
QJsonObject messageProperties = { { "status", "SuccessfulRequestToReplaceContent" }, { "content_set_url", itemHref } };
|
||||||
{ "status", "SuccessfulRequestToReplaceContent" },
|
|
||||||
{ "content_set_url", itemHref }
|
|
||||||
};
|
|
||||||
UserActivityLogger::getInstance().logAction("replace_domain_content", messageProperties);
|
UserActivityLogger::getInstance().logAction("replace_domain_content", messageProperties);
|
||||||
|
|
||||||
emit contentSetChanged(itemHref);
|
emit contentSetChanged(itemHref);
|
||||||
|
@ -214,10 +219,7 @@ QString QmlCommerce::getInstalledApps(const QString& justInstalledAppID) {
|
||||||
|
|
||||||
QDir directory(_appsPath);
|
QDir directory(_appsPath);
|
||||||
QStringList apps = directory.entryList(QStringList("*.app.json"));
|
QStringList apps = directory.entryList(QStringList("*.app.json"));
|
||||||
foreach(QString appFileName, apps) {
|
foreach (QString appFileName, apps) {
|
||||||
installedAppsFromMarketplace += appFileName;
|
|
||||||
installedAppsFromMarketplace += ",";
|
|
||||||
|
|
||||||
// If we were supplied a "justInstalledAppID" argument, that means we're entering this function
|
// If we were supplied a "justInstalledAppID" argument, that means we're entering this function
|
||||||
// to get the new list of installed apps immediately after installing an app.
|
// to get the new list of installed apps immediately after installing an app.
|
||||||
// In that case, the app we installed may not yet have its associated script running -
|
// In that case, the app we installed may not yet have its associated script running -
|
||||||
|
@ -243,10 +245,12 @@ QString QmlCommerce::getInstalledApps(const QString& justInstalledAppID) {
|
||||||
// delete the .app.json from the user's local disk.
|
// delete the .app.json from the user's local disk.
|
||||||
if (!runningScripts.contains(scriptURL)) {
|
if (!runningScripts.contains(scriptURL)) {
|
||||||
if (!appFile.remove()) {
|
if (!appFile.remove()) {
|
||||||
qCWarning(commerce)
|
qCWarning(commerce) << "Couldn't delete local .app.json file (app's script isn't running). App filename is:"
|
||||||
<< "Couldn't delete local .app.json file (app's script isn't running). App filename is:"
|
<< appFileName;
|
||||||
<< appFileName;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
installedAppsFromMarketplace += appFileName;
|
||||||
|
installedAppsFromMarketplace += ",";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
qCDebug(commerce) << "Couldn't open local .app.json file for reading.";
|
qCDebug(commerce) << "Couldn't open local .app.json file for reading.";
|
||||||
|
@ -317,7 +321,9 @@ bool QmlCommerce::uninstallApp(const QString& itemHref) {
|
||||||
// Read from the file to know what .js script to stop
|
// Read from the file to know what .js script to stop
|
||||||
QFile appFile(_appsPath + "/" + appHref.fileName());
|
QFile appFile(_appsPath + "/" + appHref.fileName());
|
||||||
if (!appFile.open(QIODevice::ReadOnly)) {
|
if (!appFile.open(QIODevice::ReadOnly)) {
|
||||||
qCDebug(commerce) << "Couldn't open local .app.json file for deletion. Cannot continue with app uninstallation. App filename is:" << appHref.fileName();
|
qCDebug(commerce)
|
||||||
|
<< "Couldn't open local .app.json file for deletion. Cannot continue with app uninstallation. App filename is:"
|
||||||
|
<< appHref.fileName();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
QJsonDocument appFileJsonDocument = QJsonDocument::fromJson(appFile.readAll());
|
QJsonDocument appFileJsonDocument = QJsonDocument::fromJson(appFile.readAll());
|
||||||
|
@ -325,13 +331,15 @@ bool QmlCommerce::uninstallApp(const QString& itemHref) {
|
||||||
QString scriptUrl = appFileJsonObject["scriptURL"].toString();
|
QString scriptUrl = appFileJsonObject["scriptURL"].toString();
|
||||||
|
|
||||||
if (!DependencyManager::get<ScriptEngines>()->stopScript(scriptUrl.trimmed(), false)) {
|
if (!DependencyManager::get<ScriptEngines>()->stopScript(scriptUrl.trimmed(), false)) {
|
||||||
qCWarning(commerce) << "Couldn't stop script during app uninstall. Continuing anyway. ScriptURL is:" << scriptUrl.trimmed();
|
qCWarning(commerce) << "Couldn't stop script during app uninstall. Continuing anyway. ScriptURL is:"
|
||||||
|
<< scriptUrl.trimmed();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete the .app.json from the filesystem
|
// Delete the .app.json from the filesystem
|
||||||
// remove() closes the file first.
|
// remove() closes the file first.
|
||||||
if (!appFile.remove()) {
|
if (!appFile.remove()) {
|
||||||
qCWarning(commerce) << "Couldn't delete local .app.json file during app uninstall. Continuing anyway. App filename is:" << appHref.fileName();
|
qCWarning(commerce) << "Couldn't delete local .app.json file during app uninstall. Continuing anyway. App filename is:"
|
||||||
|
<< appHref.fileName();
|
||||||
}
|
}
|
||||||
|
|
||||||
QFileInfo appFileInfo(appFile);
|
QFileInfo appFileInfo(appFile);
|
||||||
|
@ -352,7 +360,8 @@ bool QmlCommerce::openApp(const QString& itemHref) {
|
||||||
QJsonObject appFileJsonObject = appFileJsonDocument.object();
|
QJsonObject appFileJsonObject = appFileJsonDocument.object();
|
||||||
QString homeUrl = appFileJsonObject["homeURL"].toString();
|
QString homeUrl = appFileJsonObject["homeURL"].toString();
|
||||||
|
|
||||||
auto tablet = dynamic_cast<TabletProxy*>(DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system"));
|
auto tablet = dynamic_cast<TabletProxy*>(
|
||||||
|
DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system"));
|
||||||
if (homeUrl.contains(".qml", Qt::CaseInsensitive)) {
|
if (homeUrl.contains(".qml", Qt::CaseInsensitive)) {
|
||||||
tablet->loadQMLSource(homeUrl);
|
tablet->loadQMLSource(homeUrl);
|
||||||
} else if (homeUrl.contains(".html", Qt::CaseInsensitive)) {
|
} else if (homeUrl.contains(".html", Qt::CaseInsensitive)) {
|
||||||
|
@ -377,7 +386,7 @@ void QmlCommerce::updateItem(const QString& certificateId) {
|
||||||
auto wallet = DependencyManager::get<Wallet>();
|
auto wallet = DependencyManager::get<Wallet>();
|
||||||
QStringList keys = wallet->listPublicKeys();
|
QStringList keys = wallet->listPublicKeys();
|
||||||
if (keys.count() == 0) {
|
if (keys.count() == 0) {
|
||||||
QJsonObject result{ { "status", "fail" },{ "message", "Uninitialized Wallet." } };
|
QJsonObject result{ { "status", "fail" }, { "message", "Uninitialized Wallet." } };
|
||||||
return emit updateItemResult(result);
|
return emit updateItemResult(result);
|
||||||
}
|
}
|
||||||
QString key = keys[0];
|
QString key = keys[0];
|
||||||
|
|
Loading…
Reference in a new issue