Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit f1260641 authored by g4m4's avatar g4m4
Browse files

Merge branch 'master' into release_wolfeye

parents 5022918a 4f31e8b8
No related branches found
No related tags found
No related merge requests found
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.8",
"VersionName": "1.9",
"FriendlyName": "FixIt",
"Description": "A real-time feedback tool",
"Category": "Tools",
......
......@@ -85,6 +85,7 @@ FFixItPlatformData UFixItBlueprintLibrary::GetPlatformData()
FString UFixItBlueprintLibrary::GetCreatedBugUrl(const FString& bugId)
{
#if PLATFORM_WINDOWS
#if !UE_BUILD_SHIPPING
if (UFixItSubsystem* FixItSubsystem = GEngine->GetEngineSubsystem<UFixItSubsystem>())
{
const FFixItBackend* backend = FixItSubsystem->GetBackend();
......@@ -93,7 +94,8 @@ FString UFixItBlueprintLibrary::GetCreatedBugUrl(const FString& bugId)
return backend->GetCreatedBugUrl(bugId);
}
}
#endif
#endif // !UE_BUILD_SHIPPING
#endif // PLATFORM_WINDOWS
return TEXT("");
}
......
......@@ -3,6 +3,7 @@
#include "FixItSubsystem.h"
#include "FixItBackend.h"
#include "FixItCore.h"
#include "FixItSettings.h"
DEFINE_LOG_CATEGORY(LogFixItGame);
......@@ -37,6 +38,8 @@ void UFixItSubsystem::Initialize(FSubsystemCollectionBase& Collection)
return;
});
}
FFixItCoreModule& FixItCoreModule = FModuleManager::GetModuleChecked<FFixItCoreModule>("FixItCore");
FixItCoreModule.SetCrashContextData(FPaths::ProjectSavedDir());
}
void UFixItSubsystem::Deinitialize()
......
......@@ -6,6 +6,11 @@ THIRD_PARTY_INCLUDES_START
#include "fixit/common.h"
THIRD_PARTY_INCLUDES_END
#if PLATFORM_WINDOWS
// Not available on e.g. consoles
#include "HAL/PlatformCrashContext.h"
#endif
#include "FixItDataModule.h"
#include "FixItHttpModule.h"
......@@ -17,6 +22,24 @@ namespace {
}
}
FString FFixItCrashContextData::GetGameDataKey()
{
return "FixIt";
}
void FFixItCrashContextData::SetGameDataValue(const FString& Data)
{
SaveDirectory = Data;
#if PLATFORM_WINDOWS
FPlatformCrashContext::SetGameData(GetGameDataKey(), GetGameDataValue());
#endif
}
FString FFixItCrashContextData::GetGameDataValue() const
{
return SaveDirectory;
}
// Implementations, even if defaulted, must be in the implementation file
// (for forward declarations and TUniquePtr usage)
FFixItCoreModule::FFixItCoreModule() = default;
......@@ -39,4 +62,9 @@ void FFixItCoreModule::ShutdownModule()
#endif // PLATFORM_WINDOWS
}
void FFixItCoreModule::SetCrashContextData(const FString& Data)
{
CrashContextData.SetGameDataValue(Data);
}
IMPLEMENT_MODULE(FFixItCoreModule, FixItCore)
// Implemented as macros (doh!) so no type associated to it
#if UE_BUILD_SHIPPING
#define kDefaultCredentialsLogin ""
#define kDefaultCredentialsToken ""
#else
#define kDefaultCredentialsLogin ""
#define kDefaultCredentialsToken ""
#endif // UE_BUILD_SHIPPING
......@@ -102,21 +102,45 @@ bool UFixItSettings::SaveReporterName(const FString& NewValue)
}
FFixItConnectionSettings UFixItSettings::GetConnectionSettings(const FString& Key) const
{
FFixItConnectionSettings Out;
if (!GetConnectionSettings(Key, Out)) {
Out = {};
}
return Out;
}
bool UFixItSettings::GetConnectionSettings(const FString& Key, FFixItConnectionSettings& Out) const
{
// If the current configuration is not found, none will be created
for (const FFixItConnectionSettings& settings : ConnectionSettings) {
if (settings.Key == Key) {
return settings;
Out = settings;
return true;
}
}
return {};
return false;
}
FFixItConnectionSettings UFixItSettings::GetConnectionSettingsForCurrentBuildConfiguration() const
{
const EBuildConfiguration BuildConfiguration = FApp::GetBuildConfiguration();
return GetConnectionSettingsForBuildConfiguration(FApp::GetBuildConfiguration());
}
FFixItConnectionSettings UFixItSettings::GetConnectionSettingsForBuildConfiguration(EBuildConfiguration BuildConfiguration) const
{
const FString& Key = LexToString(BuildConfiguration);
return GetConnectionSettings(Key);
FFixItConnectionSettings found;
if (GetConnectionSettings(Key, found))
{
return found;
}
else
{
UE_LOG(LogFixItCore, Display, TEXT("Defaulting on the default connection settings as configuration %s was not found"), *Key);
GetConnectionSettings(LexToString(EBuildConfiguration::Development), found);
return found;
}
}
FFixItConnectionSettings* UFixItSettings::GrabConnectionSettings(const FString& Key, bool CreateIfMissing)
......
......@@ -12,6 +12,21 @@ DECLARE_LOG_CATEGORY_EXTERN(LogFixItCore, Log, All);
class FFixItDataModule;
class FFixItHttpModule;
// Structure of data to be communicated to the Crash Reporter
// Only text can be transmitted, so this structure will get serialised into a string
// TODO(gama) This will only have effect on Windows for now!
struct FIXITCORE_API FFixItCrashContextData
{
static FString GetGameDataKey();
void SetGameDataValue(const FString& Data);
FString GetGameDataValue() const;
private:
FString SaveDirectory;
};
// The base module for FixIt
class FIXITCORE_API FFixItCoreModule : public IModuleInterface
{
public:
......@@ -24,10 +39,14 @@ public:
virtual void ShutdownModule() override;
// End IModuleInterface interface
void SetCrashContextData(const FString& Data);
private:
#if PLATFORM_WINDOWS
// Fixit lib "modules"
TUniquePtr<FFixItDataModule> DataModule;
TUniquePtr<FFixItHttpModule> HttpModule;
#endif // PLATFORM_WINDOWS
FFixItCrashContextData CrashContextData;
};
......@@ -3,6 +3,7 @@
#pragma once
#include "Engine/DeveloperSettings.h"
#include "GenericPlatform/GenericPlatformMisc.h"
// EFixItBackendType
#include "FixItBackend.h"
......@@ -95,6 +96,16 @@ public:
UFUNCTION(BlueprintCallable, Category = "FixIt")
FFixItConnectionSettings GetConnectionSettings(const FString& Key) const;
/**
* Get the connection settings for the given identifier
*
* @param Key The settings set identifier
* @param Out The settings set to copy to
*
* @return True if a connection settings set was found for this identifier - false otherwise
*/
bool GetConnectionSettings(const FString& Key, FFixItConnectionSettings& Out) const;
/**
* Get the connection settings for the current build configuration
*
......@@ -103,6 +114,13 @@ public:
UFUNCTION(BlueprintCallable, Category = "FixIt")
FFixItConnectionSettings GetConnectionSettingsForCurrentBuildConfiguration() const;
/**
* Get the connection settings for the given build configuration
*
* @return The connection settings for this build configuration - defaults on "Development"
*/
FFixItConnectionSettings GetConnectionSettingsForBuildConfiguration(EBuildConfiguration BuildConfiguration) const;
// Same as @see GetConnectionSettings() but this one can modify the configuration, which is why it is not exposed in BP
FFixItConnectionSettings* GrabConnectionSettings(const FString& Key, bool CreateIfMissing);
......
# Changelog Releases - FixIt
## Version 1.9
Date 2025/05/27
- Implement crash context custom data
- Forbid blueprint retrieval of bug URL in Shipping builds
- Small API changes for settings so explicit configuration fallbacks can be set
## Version 1.8
Date 2025/05/05
- Fix uninitialised enum value
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment