diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index ed8bddbe..361324ae 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -9,11 +9,6 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 1 - permissions: - contents: read - id-token: write - packages: write - steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/binding.gyp b/binding.gyp index 65e648e0..8021ae11 100644 --- a/binding.gyp +++ b/binding.gyp @@ -40,7 +40,8 @@ "native-src/virtual_drive/hydrate_file.cpp", "native-src/virtual_drive/register_sync_root/register_sync_root.cpp", "native-src/virtual_drive/register_sync_root/register_sync_root_wrapper.cpp", - "native-src/virtual_drive/unregister_sync_root_wrapper.cpp" + "native-src/virtual_drive/unregister_sync_root_wrapper.cpp", + "native-src/virtual_drive/update_sync_status/update_sync_status_wrapper.cpp" ], "include_dirs": [ "include", @@ -52,7 +53,8 @@ "include/virtual_drive", "include/virtual_drive/get_placeholder_state", "include/virtual_drive/get_registered_sync_roots", - "include/virtual_drive/register_sync_root" + "include/virtual_drive/register_sync_root", + "include/virtual_drive/update_sync_status" ], "libraries": [ "-lCldApi.lib", diff --git a/dist/addon.node b/dist/addon.node index 6154dd1c..4266ef8a 100644 Binary files a/dist/addon.node and b/dist/addon.node differ diff --git a/include/placeholders_interface/PlaceHolderInfo.h b/include/placeholders_interface/PlaceHolderInfo.h index 28899944..483785d0 100644 --- a/include/placeholders_interface/PlaceHolderInfo.h +++ b/include/placeholders_interface/PlaceHolderInfo.h @@ -59,5 +59,4 @@ class FileHandle FileHandle handleForPath(const std::wstring &path); -std::string pinStateToString(PinState state); CF_PIN_STATE pinStateToCfPinState(PinState state); \ No newline at end of file diff --git a/include/virtual_drive/update_sync_status/update_sync_status_wrapper.h b/include/virtual_drive/update_sync_status/update_sync_status_wrapper.h new file mode 100644 index 00000000..f1d765dd --- /dev/null +++ b/include/virtual_drive/update_sync_status/update_sync_status_wrapper.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +napi_value update_sync_status_wrapper(napi_env info, napi_callback_info args); diff --git a/native-src/placeholders_interface/PlaceHolderInfo.cpp b/native-src/placeholders_interface/PlaceHolderInfo.cpp index c9d8b019..c4a06826 100644 --- a/native-src/placeholders_interface/PlaceHolderInfo.cpp +++ b/native-src/placeholders_interface/PlaceHolderInfo.cpp @@ -44,25 +44,6 @@ CF_PIN_STATE pinStateToCfPinState(PinState state) } } -std::string pinStateToString(PinState state) -{ - switch (state) - { - case PinState::Inherited: - return "Inherited"; - case PinState::AlwaysLocal: - return "AlwaysLocal"; - case PinState::OnlineOnly: - return "OnlineOnly"; - case PinState::Unspecified: - return "Unspecified"; - case PinState::Excluded: - return "Excluded"; - default: - return "Unknown"; - } -} - PlaceHolderInfo::PlaceHolderInfo() : _data(nullptr, [](CF_PLACEHOLDER_BASIC_INFO *) {}) { diff --git a/native-src/placeholders_interface/Planceholders.cpp b/native-src/placeholders_interface/Planceholders.cpp index c9a63496..95048fdd 100644 --- a/native-src/placeholders_interface/Planceholders.cpp +++ b/native-src/placeholders_interface/Planceholders.cpp @@ -270,32 +270,6 @@ PlaceholderResult Placeholders::ConvertToPlaceholder(const std::wstring &fullPat return result; } -std::wstring GetErrorMessageFromHRESULT(HRESULT hr) -{ - LPWSTR errorMessage = nullptr; - DWORD result = FormatMessageW( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - nullptr, - hr, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - reinterpret_cast(&errorMessage), - 0, - nullptr); - - std::wstring message; - if (result > 0 && errorMessage) - { - message = errorMessage; - LocalFree(errorMessage); - } - else - { - message = L"Error desconocido"; - } - - return message; -} - /** * @brief Mark a file or directory as synchronized * @param filePath path to the file or directory diff --git a/native-src/virtual_drive/Wrappers.cpp b/native-src/virtual_drive/Wrappers.cpp index fe8c3074..fe3d40b3 100644 --- a/native-src/virtual_drive/Wrappers.cpp +++ b/native-src/virtual_drive/Wrappers.cpp @@ -20,6 +20,7 @@ #include "dehydrate_file.h" #include "disconnect_sync_root.h" #include "get_placeholder_state_wrapper.h" +#include "update_sync_status_wrapper.h" #include "NAPI_SAFE_WRAP.h" napi_value CreatePlaceholderFile(napi_env env, napi_callback_info args) { @@ -94,35 +95,8 @@ napi_value addLoggerPathWrapper(napi_env env, napi_callback_info args) return result; } -napi_value UpdateSyncStatusWrapper(napi_env env, napi_callback_info args) -{ - size_t argc = 3; - napi_value argv[3]; - - napi_get_cb_info(env, args, &argc, argv, nullptr, nullptr); - if (argc < 3) - { - napi_throw_error(env, nullptr, "Three arguments are required for UpdateSyncStatus"); - return nullptr; - } - - size_t pathLength; - napi_get_value_string_utf16(env, argv[0], nullptr, 0, &pathLength); - - std::unique_ptr widePath(new wchar_t[pathLength + 1]); - napi_get_value_string_utf16(env, argv[0], reinterpret_cast(widePath.get()), pathLength + 1, nullptr); - - bool inputSyncState; - napi_get_value_bool(env, argv[1], &inputSyncState); - - bool isDirectory; - napi_get_value_bool(env, argv[2], &isDirectory); - - Placeholders::UpdateSyncStatus(widePath.get(), inputSyncState, isDirectory); - - napi_value result; - napi_get_boolean(env, true, &result); - return result; +napi_value UpdateSyncStatusWrapper(napi_env env, napi_callback_info args) { + return NAPI_SAFE_WRAP(env, args, update_sync_status_wrapper); } napi_value GetPlaceholderStateWrapper(napi_env env, napi_callback_info args) { diff --git a/native-src/virtual_drive/update_sync_status/update_sync_status_wrapper.cpp b/native-src/virtual_drive/update_sync_status/update_sync_status_wrapper.cpp new file mode 100644 index 00000000..b3735ae4 --- /dev/null +++ b/native-src/virtual_drive/update_sync_status/update_sync_status_wrapper.cpp @@ -0,0 +1,21 @@ +#include +#include "Placeholders.h" + +napi_value update_sync_status_wrapper(napi_env env, napi_callback_info info) { + size_t argc = 3; + napi_value argv[3]; + napi_get_cb_info(env, info, &argc, argv, nullptr, nullptr); + + size_t pathLength; + napi_get_value_string_utf16(env, argv[0], nullptr, 0, &pathLength); + std::unique_ptr widePath(new wchar_t[pathLength + 1]); + napi_get_value_string_utf16(env, argv[0], reinterpret_cast(widePath.get()), pathLength + 1, nullptr); + + bool inputSyncState, isDirectory; + napi_get_value_bool(env, argv[1], &inputSyncState); + napi_get_value_bool(env, argv[2], &isDirectory); + + Placeholders::UpdateSyncStatus(widePath.get(), inputSyncState, isDirectory); + + return nullptr; +}