@@ -142,7 +142,7 @@ ReactNativeBlobUtilConfig::ReactNativeBlobUtilConfig(winrt::Microsoft::ReactNati
142142
143143}
144144
145- ReactNativeBlobUtilProgressConfig::ReactNativeBlobUtilProgressConfig (int32_t count_, int32_t interval_) : count(count_), interval(interval_) {
145+ ReactNativeBlobUtilProgressConfig::ReactNativeBlobUtilProgressConfig (double count_, double interval_) : count(count_), interval(interval_) {
146146}
147147
148148ReactNativeBlobUtilStream::ReactNativeBlobUtilStream (Streams::IRandomAccessStream& _streamInstance, EncodingOptions _encoding) noexcept
@@ -621,7 +621,28 @@ void ReactNativeBlobUtil::closeStream(
621621 std::string streamId,
622622 std::function<void (::React::JSValueArray const &)> const & callback) noexcept
623623{
624- callback (::React::JSValueArray{});
624+ ::React::JSValueArray resultArray;
625+ try
626+ {
627+ auto it = m_streamMap.find (streamId);
628+ if (it != m_streamMap.end ()) {
629+ it->second .streamInstance .Close ();
630+ m_streamMap.erase (it);
631+ // Success: return empty array
632+ callback (resultArray);
633+ } else {
634+ // Stream not found
635+ resultArray.push_back (" EUNSPECIFIED" );
636+ resultArray.push_back (" Stream not found for id: " + streamId);
637+ callback (resultArray);
638+ }
639+ }
640+ catch (const winrt::hresult_error& ex)
641+ {
642+ resultArray.push_back (" EUNSPECIFIED" );
643+ resultArray.push_back (winrt::to_string (ex.message ()));
644+ callback (resultArray);
645+ }
625646}
626647
627648void ReactNativeBlobUtil::unlink (
@@ -667,7 +688,29 @@ void ReactNativeBlobUtil::removeSession(
667688 ::React::JSValueArray&& paths,
668689 std::function<void (::React::JSValueArray const &)> const & callback) noexcept
669690{
670- callback (::React::JSValueArray{});
691+ winrt::Windows::System::Threading::ThreadPool::RunAsync ([paths = std::move (paths), callback](auto &&)
692+ {
693+ ::React::JSValueArray resultArray;
694+ try
695+ {
696+ for (const auto & path : paths)
697+ {
698+ std::filesystem::path toDelete{ path.AsString () };
699+ toDelete.make_preferred ();
700+ auto fileOp = winrt::Windows::Storage::StorageFile::GetFileFromPathAsync (winrt::to_hstring (toDelete.c_str ()));
701+ auto file = fileOp.get ();
702+ file.DeleteAsync ().get ();
703+ }
704+ // Success: return empty array
705+ callback (resultArray);
706+ }
707+ catch (const winrt::hresult_error& ex)
708+ {
709+ resultArray.push_back (" EUNSPECIFIED" );
710+ resultArray.push_back (winrt::to_string (ex.message ()));
711+ callback (resultArray);
712+ }
713+ });
671714}
672715
673716void ReactNativeBlobUtil::ls (
@@ -1349,23 +1392,39 @@ void ReactNativeBlobUtil::cancelRequest(
13491392 std::string taskId,
13501393 std::function<void (::React::JSValueArray const &)> const & callback) noexcept
13511394{
1352- callback (::React::JSValueArray{});
1395+ ::React::JSValueArray resultArray;
1396+ try
1397+ {
1398+ m_tasks.Cancel (taskId);
1399+ // Success: return empty array
1400+ callback (resultArray);
1401+ }
1402+ catch (const winrt::hresult_error& ex)
1403+ {
1404+ resultArray.push_back (" EUNSPECIFIED" );
1405+ resultArray.push_back (winrt::to_string (ex.message ()));
1406+ callback (resultArray);
1407+ }
13531408}
13541409
13551410void ReactNativeBlobUtil::enableProgressReport (
13561411 std::string taskId,
13571412 double interval,
13581413 double count) noexcept
13591414{
1360- // No-op
1415+ ReactNativeBlobUtilProgressConfig config{ count, interval };
1416+ std::scoped_lock lock{ m_mutex };
1417+ downloadProgressMap.try_emplace (taskId, config);
13611418}
13621419
13631420void ReactNativeBlobUtil::enableUploadProgressReport (
13641421 std::string taskId,
13651422 double interval,
13661423 double count) noexcept
13671424{
1368- // No-op
1425+ ReactNativeBlobUtilProgressConfig config{ count, interval };
1426+ std::scoped_lock lock{ m_mutex };
1427+ uploadProgressMap.try_emplace (taskId, config);
13691428}
13701429
13711430void ReactNativeBlobUtil::slice (
0 commit comments