From 13d219e8bbcef3d2f7bb5ef4550e0f3f5d986a0c Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Fri, 17 Jun 2022 03:27:29 +0200
Subject: [PATCH] Add option to disable implicit json conversions

---
 .gitlab-ci.yml | 1 +
 CMakeLists.txt | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4d62103b..67c9e488 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -63,6 +63,7 @@ build-gcc9:
         -DVOIP=OFF
         -DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release
         -DCI_BUILD=ON -DFETCHCONTENT_QUIET=OFF
+        -DJSON_ImplicitConversions=OFF
     - cmake --build build
   after_script:
     - mv ../.hunter .hunter
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fa8c6ba9..b858197f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,6 +11,7 @@ else()
 	option(MAN "Build man page" OFF)
 endif()
 option(FLATPAK "Set this only if Nheko is built as a flatpak" OFF)
+option(JSON_ImplicitConversions "Disable implicit conversions in nlohmann/json" ON)
 
 set(
 	CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/toolchain.cmake"
@@ -686,6 +687,13 @@ if (USE_BUNDLED_QTKEYCHAIN)
 	target_include_directories(nheko PRIVATE ${qt5keychain_SOURCE_DIR} ${qt5keychain_BINARY_DIR})
 endif()
 
+if (NOT JSON_ImplicitConversions)
+	set_target_properties(nlohmann_json::nlohmann_json PROPERTIES
+					INTERFACE_COMPILE_DEFINITIONS "JSON_USE_IMPLICIT_CONVERSIONS=\$<BOOL:OFF>;JSON_DIAGNOSTICS=\$<BOOL:OFF>"
+					)
+	target_compile_definitions(nheko PUBLIC JSON_USE_IMPLICIT_CONVERSIONS=0)
+endif()
+
 target_link_libraries(nheko PRIVATE
 	${COEURL_TARGET_NAME}
 	MatrixClient::MatrixClient