Skip to content

Commit 11f0627

Browse files
committed
Add more APIs implementations
1 parent f9af06d commit 11f0627

File tree

2 files changed

+68
-9
lines changed

2 files changed

+68
-9
lines changed

windows/ReactNativeBlobUtil/ReactNativeBlobUtil.cpp

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

148148
ReactNativeBlobUtilStream::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

627648
void 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

673716
void 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

13551410
void 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

13631420
void 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

13711430
void ReactNativeBlobUtil::slice(

windows/ReactNativeBlobUtil/ReactNativeBlobUtil.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,10 @@ struct ReactNativeBlobUtilConfig
113113
struct ReactNativeBlobUtilProgressConfig {
114114
public:
115115
ReactNativeBlobUtilProgressConfig() = default;
116-
ReactNativeBlobUtilProgressConfig(int32_t count_, int32_t interval_);
116+
ReactNativeBlobUtilProgressConfig(double count_, double interval_);
117117

118-
int64_t count{ -1 };
119-
int64_t interval{ -1 };
118+
double count{ -1.0 };
119+
double interval{ -1.0 };
120120
};
121121

122122
namespace winrt::ReactNativeBlobUtil

0 commit comments

Comments
 (0)