diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index f8ee14d4..a5a6d391 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -47,6 +47,7 @@ AdvSceneSwitcher.generalTab.saveOrLoadsettings.importWindowTitle="Import Advance AdvSceneSwitcher.generalTab.saveOrLoadsettings.textType="Text files (*.txt)" AdvSceneSwitcher.generalTab.saveOrLoadsettings.loadFail="Advanced Scene Switcher failed to import settings" AdvSceneSwitcher.generalTab.saveOrLoadsettings.loadSuccess="Advanced Scene Switcher settings imported successfully" +AdvSceneSwitcher.generalTab.saveOrLoadsettings.exportSensitiveDataWarning="Warning:\nThe exported data might contain sensitive information!" AdvSceneSwitcher.generalTab.priority.fileContent="File Content" AdvSceneSwitcher.generalTab.priority.sceneSequence="Scene Sequence" AdvSceneSwitcher.generalTab.priority.idleDetection="Idle Detection" diff --git a/lib/general.cpp b/lib/general.cpp index 1232a99b..9929e821 100644 --- a/lib/general.cpp +++ b/lib/general.cpp @@ -259,6 +259,22 @@ void AdvSceneSwitcher::SetDeprecationWarnings() } } +static bool containsSensitiveData(obs_data_t *data) +{ + // Only checking for Twitch tokens and websocket connections for now + // Might have to be expanded upon / generalized in the future + OBSDataArrayAutoRelease twitchTokens = + obs_data_get_array(data, "twitchConnections"); + OBSDataArrayAutoRelease websocketConnections = + obs_data_get_array(data, "websocketConnections"); + + auto isNotEmpty = [](obs_data_array *array) { + return obs_data_array_count(array) > 0; + }; + + return isNotEmpty(twitchTokens) || isNotEmpty(websocketConnections); +} + void AdvSceneSwitcher::on_exportSettings_clicked() { QString directory = QFileDialog::getSaveFileName( @@ -277,9 +293,13 @@ void AdvSceneSwitcher::on_exportSettings_clicked() return; } - OBSDataAutoRelease obj = obs_data_create(); - switcher->SaveSettings(obj); - obs_data_save_json(obj, file.fileName().toUtf8().constData()); + OBSDataAutoRelease data = obs_data_create(); + switcher->SaveSettings(data); + obs_data_save_json(data, file.fileName().toUtf8().constData()); + if (containsSensitiveData(data)) { + (void)DisplayMessage(obs_module_text( + "AdvSceneSwitcher.generalTab.saveOrLoadsettings.exportSensitiveDataWarning")); + } } void AdvSceneSwitcher::on_importSettings_clicked()