@@ -978,50 +978,16 @@ winrt::fire_and_forget ReactNativeBlobUtil::ls(
978
978
winrt::hstring directoryPath, fileName;
979
979
splitPath (path, directoryPath, fileName);
980
980
981
- Windows::Storage::StorageFolder::GetFolderFromPathAsync (directoryPath).Completed (
982
- [=, promise = std::move (promise)](auto folderOp, auto status)
983
- {
984
- if (status != Windows::Foundation::AsyncStatus::Completed)
985
- {
986
- promise.Reject (winrt::Microsoft::ReactNative::ReactError{ " ENOTDIR" , " Failed to open directory: " + path });
987
- return ;
988
- }
981
+ auto folder = co_await Windows::Storage::StorageFolder::GetFolderFromPathAsync (directoryPath);
982
+ auto items = co_await folder.GetItemsAsync ();
989
983
990
- try
991
- {
992
- auto folder = folderOp.GetResults ();
993
-
994
- folder.GetItemsAsync ().Completed (
995
- [=, promise = std::move (promise)](auto itemsOp, auto status2)
996
- {
997
- if (status2 != Windows::Foundation::AsyncStatus::Completed)
998
- {
999
- promise.Reject (winrt::Microsoft::ReactNative::ReactError{ " ENOTDIR" , " Failed to read directory items." });
1000
- return ;
1001
- }
1002
-
1003
- try
1004
- {
1005
- auto items = itemsOp.GetResults ();
1006
- ::React::JSValueArray results;
1007
- for (const auto & item : items)
1008
- {
1009
- results.push_back (::React::JSValue{ winrt::to_string (item.Name ()) });
1010
- }
1011
-
1012
- promise.Resolve (results);
1013
- }
1014
- catch (const winrt::hresult_error& ex)
1015
- {
1016
- promise.Reject (winrt::Microsoft::ReactNative::ReactError{ " EUNSPECIFIED" , winrt::to_string (ex.message ()) });
1017
- }
1018
- });
1019
- }
1020
- catch (const winrt::hresult_error& ex)
1021
- {
1022
- promise.Reject (winrt::Microsoft::ReactNative::ReactError{ " EUNSPECIFIED" , winrt::to_string (ex.message ()) });
1023
- }
1024
- });
984
+ ::React::JSValueArray results;
985
+ for (const auto & item : items)
986
+ {
987
+ results.push_back (::React::JSValue{ winrt::to_string (item.Name ()) });
988
+ }
989
+
990
+ promise.Resolve (results);
1025
991
}
1026
992
catch (const winrt::hresult_error& ex)
1027
993
{
@@ -1131,67 +1097,14 @@ winrt::fire_and_forget ReactNativeBlobUtil::cp(
1131
1097
winrt::hstring destDirectoryPath, destFileName;
1132
1098
splitPath (dest, destDirectoryPath, destFileName);
1133
1099
1134
- StorageFolder::GetFolderFromPathAsync (srcDirectoryPath).Completed (
1135
- [=](auto srcFolderOp, auto status) {
1136
- if (status != Windows::Foundation::AsyncStatus::Completed) {
1137
- ::React::JSValueArray error{ " Source directory not found." };
1138
- callback (std::move (error));
1139
- return ;
1140
- }
1100
+ StorageFolder srcFolder = co_await StorageFolder::GetFolderFromPathAsync (srcDirectoryPath);
1101
+ StorageFolder destFolder = co_await StorageFolder::GetFolderFromPathAsync (destDirectoryPath);
1141
1102
1142
- try {
1143
- StorageFolder srcFolder = srcFolderOp.GetResults ();
1144
-
1145
- StorageFolder::GetFolderFromPathAsync (destDirectoryPath).Completed (
1146
- [=](auto destFolderOp, auto status2) {
1147
- if (status2 != Windows::Foundation::AsyncStatus::Completed) {
1148
- ::React::JSValueArray error{ " Destination directory not found." };
1149
- callback (std::move (error));
1150
- return ;
1151
- }
1152
-
1153
- try {
1154
- StorageFolder destFolder = destFolderOp.GetResults ();
1155
-
1156
- srcFolder.GetFileAsync (srcFileName).Completed (
1157
- [=](auto fileOp, auto status3) {
1158
- if (status3 != Windows::Foundation::AsyncStatus::Completed) {
1159
- ::React::JSValueArray error{ " Source file not found." };
1160
- callback (std::move (error));
1161
- return ;
1162
- }
1163
-
1164
- try {
1165
- StorageFile file = fileOp.GetResults ();
1166
-
1167
- file.CopyAsync (destFolder, destFileName, NameCollisionOption::FailIfExists).Completed (
1168
- [=](auto copyOp, auto status4) {
1169
- if (status4 != Windows::Foundation::AsyncStatus::Completed) {
1170
- ::React::JSValueArray error{ " Failed to copy file." };
1171
- callback (std::move (error));
1172
- } else {
1173
- ::React::JSValueArray success{}; // success, empty array
1174
- callback (std::move (success));
1175
- }
1176
- });
1177
- }
1178
- catch (const winrt::hresult_error& ex) {
1179
- ::React::JSValueArray error{ winrt::to_string (ex.message ()) };
1180
- callback (std::move (error));
1181
- }
1182
- });
1183
- }
1184
- catch (const winrt::hresult_error& ex) {
1185
- ::React::JSValueArray error{ winrt::to_string (ex.message ()) };
1186
- callback (std::move (error));
1187
- }
1188
- });
1189
- }
1190
- catch (const winrt::hresult_error& ex) {
1191
- ::React::JSValueArray error{ winrt::to_string (ex.message ()) };
1192
- callback (std::move (error));
1193
- }
1194
- });
1103
+ StorageFile file = co_await srcFolder.GetFileAsync (srcFileName);
1104
+ co_await file.CopyAsync (destFolder, destFileName, NameCollisionOption::FailIfExists);
1105
+
1106
+ ::React::JSValueArray success{};
1107
+ callback (std::move (success));
1195
1108
}
1196
1109
catch (const winrt::hresult_error& ex)
1197
1110
{
@@ -1213,83 +1126,14 @@ winrt::fire_and_forget ReactNativeBlobUtil::mv(
1213
1126
winrt::hstring destDirectoryPath, destFileName;
1214
1127
splitPath (dest, destDirectoryPath, destFileName);
1215
1128
1216
- StorageFolder::GetFolderFromPathAsync (srcDirectoryPath).Completed (
1217
- [=](auto srcFolderOp, auto status)
1218
- {
1219
- if (status != Windows::Foundation::AsyncStatus::Completed)
1220
- {
1221
- ::React::JSValueArray error{ " Source directory not found." };
1222
- callback (std::move (error));
1223
- return ;
1224
- }
1129
+ StorageFolder srcFolder = co_await StorageFolder::GetFolderFromPathAsync (srcDirectoryPath);
1130
+ StorageFolder destFolder = co_await StorageFolder::GetFolderFromPathAsync (destDirectoryPath);
1225
1131
1226
- try
1227
- {
1228
- StorageFolder srcFolder = srcFolderOp.GetResults ();
1229
-
1230
- StorageFolder::GetFolderFromPathAsync (destDirectoryPath).Completed (
1231
- [=](auto destFolderOp, auto status2)
1232
- {
1233
- if (status2 != Windows::Foundation::AsyncStatus::Completed)
1234
- {
1235
- ::React::JSValueArray error{ " Destination directory not found." };
1236
- callback (std::move (error));
1237
- return ;
1238
- }
1239
-
1240
- try
1241
- {
1242
- StorageFolder destFolder = destFolderOp.GetResults ();
1243
-
1244
- srcFolder.GetFileAsync (srcFileName).Completed (
1245
- [=](auto fileOp, auto status3)
1246
- {
1247
- if (status3 != Windows::Foundation::AsyncStatus::Completed)
1248
- {
1249
- ::React::JSValueArray error{ " Source file not found." };
1250
- callback (std::move (error));
1251
- return ;
1252
- }
1253
-
1254
- try
1255
- {
1256
- StorageFile file = fileOp.GetResults ();
1257
-
1258
- file.MoveAsync (destFolder, destFileName, NameCollisionOption::ReplaceExisting).Completed (
1259
- [=](auto moveOp, auto status4)
1260
- {
1261
- if (status4 != Windows::Foundation::AsyncStatus::Completed)
1262
- {
1263
- ::React::JSValueArray error{ " Failed to move file." };
1264
- callback (std::move (error));
1265
- }
1266
- else
1267
- {
1268
- ::React::JSValueArray success{ }; // Empty array implies success
1269
- callback (std::move (success));
1270
- }
1271
- });
1272
- }
1273
- catch (const winrt::hresult_error& ex)
1274
- {
1275
- ::React::JSValueArray error{ winrt::to_string (ex.message ()) };
1276
- callback (std::move (error));
1277
- }
1278
- });
1279
- }
1280
- catch (const winrt::hresult_error& ex)
1281
- {
1282
- ::React::JSValueArray error{ winrt::to_string (ex.message ()) };
1283
- callback (std::move (error));
1284
- }
1285
- });
1286
- }
1287
- catch (const winrt::hresult_error& ex)
1288
- {
1289
- ::React::JSValueArray error{ winrt::to_string (ex.message ()) };
1290
- callback (std::move (error));
1291
- }
1292
- });
1132
+ StorageFile file = co_await srcFolder.GetFileAsync (srcFileName);
1133
+ co_await file.MoveAsync (destFolder, destFileName, NameCollisionOption::ReplaceExisting);
1134
+
1135
+ ::React::JSValueArray success{}; // Success: empty array
1136
+ callback (std::move (success));
1293
1137
}
1294
1138
catch (const winrt::hresult_error& ex)
1295
1139
{
0 commit comments