react-native-cloud-storage 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +3 -3
  2. package/ios/CloudStorage.m +1 -0
  3. package/ios/CloudStorage.swift +7 -8
  4. package/lib/commonjs/RNCloudStorage.js +8 -0
  5. package/lib/commonjs/RNCloudStorage.js.map +1 -1
  6. package/lib/commonjs/createRNCloudStorage.js +1 -4
  7. package/lib/commonjs/createRNCloudStorage.js.map +1 -1
  8. package/lib/commonjs/google-drive/index.js +12 -8
  9. package/lib/commonjs/google-drive/index.js.map +1 -1
  10. package/lib/commonjs/hooks/useIsCloudAvailable.js +32 -0
  11. package/lib/commonjs/hooks/useIsCloudAvailable.js.map +1 -0
  12. package/lib/commonjs/index.js +12 -0
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/types/main.js +1 -1
  15. package/lib/commonjs/types/native.js +1 -0
  16. package/lib/commonjs/types/native.js.map +1 -1
  17. package/lib/module/RNCloudStorage.js +8 -0
  18. package/lib/module/RNCloudStorage.js.map +1 -1
  19. package/lib/module/createRNCloudStorage.js +1 -4
  20. package/lib/module/createRNCloudStorage.js.map +1 -1
  21. package/lib/module/google-drive/index.js +11 -8
  22. package/lib/module/google-drive/index.js.map +1 -1
  23. package/lib/module/hooks/useIsCloudAvailable.js +25 -0
  24. package/lib/module/hooks/useIsCloudAvailable.js.map +1 -0
  25. package/lib/module/index.js +1 -0
  26. package/lib/module/index.js.map +1 -1
  27. package/lib/module/types/main.js +1 -1
  28. package/lib/module/types/native.js +1 -0
  29. package/lib/module/types/native.js.map +1 -1
  30. package/lib/typescript/RNCloudStorage.d.ts +6 -0
  31. package/lib/typescript/RNCloudStorage.d.ts.map +1 -1
  32. package/lib/typescript/createRNCloudStorage.d.ts.map +1 -1
  33. package/lib/typescript/google-drive/index.d.ts +2 -1
  34. package/lib/typescript/google-drive/index.d.ts.map +1 -1
  35. package/lib/typescript/hooks/useIsCloudAvailable.d.ts +2 -0
  36. package/lib/typescript/hooks/useIsCloudAvailable.d.ts.map +1 -0
  37. package/lib/typescript/index.d.ts +1 -0
  38. package/lib/typescript/index.d.ts.map +1 -1
  39. package/lib/typescript/types/main.d.ts +1 -1
  40. package/lib/typescript/types/main.d.ts.map +1 -1
  41. package/lib/typescript/types/native.d.ts +4 -2
  42. package/lib/typescript/types/native.d.ts.map +1 -1
  43. package/lib/typescript/utils/NativeStorageError.d.ts +1 -1
  44. package/lib/typescript/utils/NativeStorageError.d.ts.map +1 -1
  45. package/package.json +2 -2
  46. package/src/RNCloudStorage.ts +10 -0
  47. package/src/createRNCloudStorage.ts +1 -5
  48. package/src/google-drive/index.ts +30 -9
  49. package/src/hooks/useIsCloudAvailable.ts +25 -0
  50. package/src/index.ts +1 -0
  51. package/src/types/main.ts +1 -1
  52. package/src/types/native.ts +3 -1
  53. package/src/utils/NativeStorageError.ts +1 -1
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # ☁️ react-native-cloud-storage
2
2
 
3
- Save & read from iCloud and Google Drive using React Native
3
+ Save to & read from iCloud and Google Drive using React Native
4
4
 
5
- ![npm bundle size](https://img.shields.io/bundlephobia/min/react-native-cloud-storage?style=flat-square) ![GitHub](https://img.shields.io/github/license/kuatsu/react-native-cloud-storage?style=flat-square) ![GitHub last commit](https://img.shields.io/github/last-commit/kuatsu/react-native-cloud-storage)
5
+ ![npm bundle size](https://img.shields.io/bundlephobia/min/react-native-cloud-storage?style=flat-square) ![GitHub](https://img.shields.io/github/license/kuatsu/react-native-cloud-storage?style=flat-square) ![GitHub last commit](https://img.shields.io/github/last-commit/kuatsu/react-native-cloud-storage?style=flat-square)
6
6
 
7
7
  **⚠️ WARNING**: This project is still considered unstable. The API might change drastically in new versions. Please proceed with caution and report any issues you're encountering.
8
8
 
@@ -24,7 +24,7 @@ See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the
24
24
 
25
25
  ## Example Project
26
26
 
27
- There's a demo application available within the `example` directory. To use it under Android, you'll need to provide a valid access token for the Google Drive API. You can create one using the [Google OAuth 2.0 Playground](https://developers.google.com/oauthplayground). If you're using an Android emulator, you can make your life easier by feeding the token into the emulator using `adb shell input text '{some_token}'`.
27
+ There's a demo application available within the `example` directory. To use the Google Drive implementation for Android (and any other platforms except iOS), you'll need to provide a valid access token for the Google Drive API. You can create one using the [Google OAuth 2.0 Playground](https://developers.google.com/oauthplayground). If you're using an Android emulator, you can make your life easier by feeding the token into the emulator using `adb shell input text '{some_token}'`.
28
28
 
29
29
  ## License
30
30
 
@@ -7,6 +7,7 @@ RCT_EXTERN_METHOD(createFile:(NSString *)path withData:(NSString *)data withScop
7
7
  RCT_EXTERN_METHOD(readFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
8
8
  RCT_EXTERN_METHOD(deleteFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
9
9
  RCT_EXTERN_METHOD(statFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
10
+ RCT_EXTERN_METHOD(isCloudAvailable:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
10
11
 
11
12
  + (BOOL)requiresMainQueueSetup
12
13
  {
@@ -81,13 +81,6 @@ class CloudStorage: NSObject {
81
81
  }
82
82
  }
83
83
 
84
- /* return an object with the following properties:
85
- * size: filesize in bytes
86
- * birthtimeMs: creation time in milliseconds
87
- * mtimeMs: modification time in milliseconds
88
- * isDirectory: true if the path is a directory
89
- * isFile: true if the path is a file
90
- */
91
84
  @objc(statFile:withScope:withResolver:withRejecter:)
92
85
  func statFile(path: String, scope: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
93
86
  let fileManager = FileManager.default
@@ -122,9 +115,15 @@ class CloudStorage: NSObject {
122
115
  }
123
116
  }
124
117
 
118
+ @objc(isCloudAvailable:withRejecter:)
119
+ func isCloudAvailable(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
120
+ let token = FileManager.default.ubiquityIdentityToken
121
+ resolve(token != nil)
122
+ }
123
+
125
124
  /// Returns the iCloud directory URL for the given scope.
126
125
  ///
127
- /// - Parameter scope: The scope of the directory. Can be either "documents" or "hidden".
126
+ /// - Parameter scope: The scope of the directory. Can be either "documents" or "app_data".
128
127
  /// - Returns: The URL of the iCloud directory.
129
128
  private func getDirectory(_ scope: String) -> URL? {
130
129
  let fileManager = FileManager.default
@@ -10,6 +10,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
10
10
  const nativeInstance = (0, _createRNCloudStorage.default)();
11
11
  const RNCloudStorage = {
12
12
  setGoogleDriveAccessToken: accessToken => _googleDrive.default.accessToken = accessToken,
13
+ /**
14
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
15
+ * unavailable right after app launch or if the user is not logged in.
16
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
17
+ */
18
+ isCloudAvailable: async () => {
19
+ return nativeInstance.isCloudAvailable();
20
+ },
13
21
  /**
14
22
  * Tests whether or not the file at the given path exists.
15
23
  * @param path The path to test.
@@ -1 +1 @@
1
- {"version":3,"names":["_createRNCloudStorage","_interopRequireDefault","require","_googleDrive","obj","__esModule","default","nativeInstance","createRNCloudStorage","RNCloudStorage","setGoogleDriveAccessToken","accessToken","GoogleDriveApiClient","exists","path","scope","fileExists","writeFile","data","createFile","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile","_default","exports"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGlD,MAAMG,cAAc,GAAG,IAAAC,6BAAoB,GAAE;AAC7C,MAAMC,cAAc,GAAG;EACrBC,yBAAyB,EAAGC,WAAmB,IAAMC,oBAAoB,CAACD,WAAW,GAAGA,WAAY;EACpG;AACF;AACA;AACA;AACA;AACA;EACEE,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAmB,KAAuB;IAC/D,OAAOR,cAAc,CAACS,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAmB,KAAoB;IAC7E,OAAOR,cAAc,CAACY,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,QAAQ,EAAEA,CAACN,IAAY,EAAEC,KAAmB,KAAsB;IAChE,OAAOR,cAAc,CAACa,QAAQ,CAACN,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,MAAM,EAAEA,CAACP,IAAY,EAAEC,KAAmB,KAAoB;IAC5D,OAAOR,cAAc,CAACe,UAAU,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,IAAI,EAAE,MAAAA,CAAOT,IAAY,EAAEC,KAAmB,KAA+B;IAC3E,MAAMS,MAAM,GAAG,MAAMjB,cAAc,CAACkB,QAAQ,CAACX,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGS,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAAC,IAAAC,QAAA,GAEaxB,cAAc;AAAAyB,OAAA,CAAA5B,OAAA,GAAA2B,QAAA"}
1
+ {"version":3,"names":["_createRNCloudStorage","_interopRequireDefault","require","_googleDrive","obj","__esModule","default","nativeInstance","createRNCloudStorage","RNCloudStorage","setGoogleDriveAccessToken","accessToken","GoogleDriveApiClient","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile","_default","exports"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGlD,MAAMG,cAAc,GAAG,IAAAC,6BAAoB,GAAE;AAC7C,MAAMC,cAAc,GAAG;EACrBC,yBAAyB,EAAGC,WAAmB,IAAMC,oBAAoB,CAACD,WAAW,GAAGA,WAAY;EAEpG;AACF;AACA;AACA;AACA;EACEE,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAON,cAAc,CAACM,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAmB,KAAuB;IAC/D,OAAOT,cAAc,CAACU,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAmB,KAAoB;IAC7E,OAAOT,cAAc,CAACa,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,QAAQ,EAAEA,CAACN,IAAY,EAAEC,KAAmB,KAAsB;IAChE,OAAOT,cAAc,CAACc,QAAQ,CAACN,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,MAAM,EAAEA,CAACP,IAAY,EAAEC,KAAmB,KAAoB;IAC5D,OAAOT,cAAc,CAACgB,UAAU,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,IAAI,EAAE,MAAAA,CAAOT,IAAY,EAAEC,KAAmB,KAA+B;IAC3E,MAAMS,MAAM,GAAG,MAAMlB,cAAc,CAACmB,QAAQ,CAACX,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGS,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAAC,IAAAC,QAAA,GAEazB,cAAc;AAAA0B,OAAA,CAAA7B,OAAA,GAAA4B,QAAA"}
@@ -43,9 +43,6 @@ function createRNCloudStorage() {
43
43
  }
44
44
  });
45
45
  }
46
- if (_reactNative.Platform.OS === 'android') {
47
- return new _googleDrive.default();
48
- }
49
- throw new Error('Unsupported platform');
46
+ return new _googleDrive.default();
50
47
  }
51
48
  //# sourceMappingURL=createRNCloudStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_googleDrive","_interopRequireDefault","_native","_NativeStorageError","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","nativeIosInstance","NativeModules","CloudStorage","Proxy","get","target","prop","originalFunction","arguments","error","code","Object","values","NativeStorageErrorCode","includes","NativeStorageError","message","UNKNOWN","createRNCloudStorage","OS","Error","GoogleDriveApiClient"],"sourceRoot":"../../src","sources":["createRNCloudStorage.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAF,sBAAA,CAAAF,OAAA;AAA4D,SAAAE,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5D,MAAMG,aAAa,GAChB,qFAAoF,GACrFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEJ,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMK,iBAAiB,GAAGC,0BAAa,CAACC,YAAY,GAChD,IAAIC,KAAK,CAACF,0BAAa,CAACC,YAAY,EAAE;EACpCE,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;IAClE,MAAMC,gBAAgB,GAAGF,MAAM,CAACC,IAAI,CAAC;IACrC,IAAI,OAAOC,gBAAgB,KAAK,UAAU,EAAE;MAC1C,OAAO,kBAA0B;QAC/B,IAAI;UACF;UACA,OAAO,MAAMA,gBAAgB,CAAC,GAAAC,SAAO,CAAC;QACxC,CAAC,CAAC,OAAOC,KAAU,EAAE;UACnB,IAAIA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEC,IAAI,IAAIC,MAAM,CAACC,MAAM,CAACC,8BAAsB,CAAC,CAACC,QAAQ,CAACL,KAAK,CAACC,IAAI,CAAC,EAAE;YAC7E,MAAM,IAAIK,2BAAkB,CAAC,CAAAN,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,OAAO,KAAI,EAAE,EAAEP,KAAK,CAACC,IAAI,CAA2B;UAC1F,CAAC,MAAM;YACL,MAAM,IAAIK,2BAAkB,CAAC,eAAe,EAAEF,8BAAsB,CAACI,OAAO,EAAER,KAAK,CAAC;UACtF;QACF;MACF,CAAC;IACH;IACA,OAAOF,gBAAgB;EACzB;AACF,CAAC,CAAC,GACF,IAAI;AAEO,SAASW,oBAAoBA,CAAA,EAAyB;EACnE,IAAIrB,qBAAQ,CAACsB,EAAE,KAAK,KAAK,EAAE;IACzB,OACEnB,iBAAiB,IACjB,IAAIG,KAAK,CACP,CAAC,CAAC,EACF;MACEC,GAAGA,CAAA,EAAG;QACJ,MAAM,IAAIgB,KAAK,CAACxB,aAAa,CAAC;MAChC;IACF,CAAC,CACF;EAEL;EAEA,IAAIC,qBAAQ,CAACsB,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAO,IAAIE,oBAAoB,EAAE;EACnC;EAEA,MAAM,IAAID,KAAK,CAAC,sBAAsB,CAAC;AACzC"}
1
+ {"version":3,"names":["_reactNative","require","_googleDrive","_interopRequireDefault","_native","_NativeStorageError","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","nativeIosInstance","NativeModules","CloudStorage","Proxy","get","target","prop","originalFunction","arguments","error","code","Object","values","NativeStorageErrorCode","includes","NativeStorageError","message","UNKNOWN","createRNCloudStorage","OS","Error","GoogleDriveApiClient"],"sourceRoot":"../../src","sources":["createRNCloudStorage.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAF,sBAAA,CAAAF,OAAA;AAA4D,SAAAE,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5D,MAAMG,aAAa,GAChB,qFAAoF,GACrFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEJ,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMK,iBAAiB,GAAGC,0BAAa,CAACC,YAAY,GAChD,IAAIC,KAAK,CAACF,0BAAa,CAACC,YAAY,EAAE;EACpCE,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;IAClE,MAAMC,gBAAgB,GAAGF,MAAM,CAACC,IAAI,CAAC;IACrC,IAAI,OAAOC,gBAAgB,KAAK,UAAU,EAAE;MAC1C,OAAO,kBAA0B;QAC/B,IAAI;UACF;UACA,OAAO,MAAMA,gBAAgB,CAAC,GAAAC,SAAO,CAAC;QACxC,CAAC,CAAC,OAAOC,KAAU,EAAE;UACnB,IAAIA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEC,IAAI,IAAIC,MAAM,CAACC,MAAM,CAACC,8BAAsB,CAAC,CAACC,QAAQ,CAACL,KAAK,CAACC,IAAI,CAAC,EAAE;YAC7E,MAAM,IAAIK,2BAAkB,CAAC,CAAAN,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,OAAO,KAAI,EAAE,EAAEP,KAAK,CAACC,IAAI,CAA2B;UAC1F,CAAC,MAAM;YACL,MAAM,IAAIK,2BAAkB,CAAC,eAAe,EAAEF,8BAAsB,CAACI,OAAO,EAAER,KAAK,CAAC;UACtF;QACF;MACF,CAAC;IACH;IACA,OAAOF,gBAAgB;EACzB;AACF,CAAC,CAAC,GACF,IAAI;AAEO,SAASW,oBAAoBA,CAAA,EAAyB;EACnE,IAAIrB,qBAAQ,CAACsB,EAAE,KAAK,KAAK,EAAE;IACzB,OACEnB,iBAAiB,IACjB,IAAIG,KAAK,CACP,CAAC,CAAC,EACF;MACEC,GAAGA,CAAA,EAAG;QACJ,MAAM,IAAIgB,KAAK,CAACxB,aAAa,CAAC;MAChC;IACF,CAAC,CACF;EAEL;EAEA,OAAO,IAAIyB,oBAAoB,EAAE;AACnC"}
@@ -5,6 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _reactNativeGoogleDriveApiWrapperJs = require("react-native-google-drive-api-wrapper-js");
8
+ var _native = require("../types/native");
9
+ var _NativeStorageError = _interopRequireDefault(require("../utils/NativeStorageError"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
11
  class GoogleDriveApiClient {
9
12
  static drive = new _reactNativeGoogleDriveApiWrapperJs.GDrive();
10
13
  constructor() {
@@ -14,7 +17,7 @@ class GoogleDriveApiClient {
14
17
  get(target, prop) {
15
18
  if (typeof target[prop] === 'function') {
16
19
  if (!GoogleDriveApiClient.drive.accessToken) {
17
- throw new Error(`Google Drive access token is not set, cannot call function ${prop.toString()}`);
20
+ throw new _NativeStorageError.default(`Google Drive access token is not set, cannot call function ${prop.toString()}`, _native.NativeStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
18
21
  }
19
22
  }
20
23
  return target[prop];
@@ -29,11 +32,12 @@ class GoogleDriveApiClient {
29
32
  static get accessToken() {
30
33
  return GoogleDriveApiClient.drive.accessToken;
31
34
  }
35
+ isCloudAvailable = async () => true;
32
36
  getRootDirectory(scope) {
33
37
  switch (scope) {
34
38
  case 'documents':
35
39
  return 'drive';
36
- case 'hidden':
40
+ case 'app_data':
37
41
  return 'appDataFolder';
38
42
  }
39
43
  }
@@ -64,16 +68,16 @@ class GoogleDriveApiClient {
64
68
  }
65
69
  }
66
70
  if (!topDirectoryId) {
67
- throw new Error(`Could not find top directory with name ${directoryTree[0]}`);
71
+ throw new _NativeStorageError.default(`Could not find top directory with name ${directoryTree[0]}`, _native.NativeStorageErrorCode.DIRECTORY_NOT_FOUND);
68
72
  }
69
73
 
70
74
  // now, we traverse the directories array and get the id of the last directory from the files array
71
75
  let currentDirectoryId = topDirectoryId;
72
76
  for (let i = 1; i < directoryTree.length; i++) {
73
77
  const currentDirectory = files.find(f => f.id === currentDirectoryId);
74
- if (!currentDirectory) throw new Error(`Could not find directory with id ${currentDirectoryId}`);
78
+ if (!currentDirectory) throw new _NativeStorageError.default(`Could not find directory with id ${currentDirectoryId}`, _native.NativeStorageErrorCode.DIRECTORY_NOT_FOUND);
75
79
  const nextDirectory = files.find(f => f.name === directoryTree[i] && f.parents[0] === currentDirectoryId);
76
- if (!nextDirectory) throw new Error(`Could not find directory with name ${directoryTree[i]}`);
80
+ if (!nextDirectory) throw new _NativeStorageError.default(`Could not find directory with name ${directoryTree[i]}`, _native.NativeStorageErrorCode.DIRECTORY_NOT_FOUND);
77
81
  currentDirectoryId = nextDirectory.id;
78
82
  }
79
83
  return currentDirectoryId;
@@ -100,7 +104,7 @@ class GoogleDriveApiClient {
100
104
  } else {
101
105
  file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
102
106
  }
103
- if (!file) throw new Error(`File not found`);
107
+ if (!file) throw new _NativeStorageError.default(`File not found`, _native.NativeStorageErrorCode.FILE_NOT_FOUND);
104
108
  return file.id;
105
109
  }
106
110
  async fileExists(path, scope) {
@@ -108,7 +112,7 @@ class GoogleDriveApiClient {
108
112
  await this.getFileId(path, scope);
109
113
  return true;
110
114
  } catch (e) {
111
- if (e.message === 'File not found') return false;else throw e;
115
+ if (e instanceof _NativeStorageError.default && e.code === _native.NativeStorageErrorCode.FILE_NOT_FOUND) return false;else throw e;
112
116
  }
113
117
  }
114
118
  async createFile(path, data, scope, overwrite) {
@@ -130,7 +134,7 @@ class GoogleDriveApiClient {
130
134
  const parentDirectoryId = this.findParentDirectoryId(files, directories);
131
135
  uploader.setRequestBody({
132
136
  name: filename,
133
- parents: parentDirectoryId ? [parentDirectoryId] : scope === 'hidden' ? [this.getRootDirectory(scope)] : undefined
137
+ parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
134
138
  });
135
139
  }
136
140
  await uploader.execute();
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeGoogleDriveApiWrapperJs","require","GoogleDriveApiClient","drive","GDrive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","Error","toString","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","MimeTypes","FOLDER","name","topDirectoryId","length","id","possibleTopDirectory","find","parents","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","getFileId","parentDirectoryId","file","f2","fileExists","e","message","createFile","data","overwrite","fileId","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","undefined","execute","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile","_default","exports","default"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNativeGoogleDriveApiWrapperJs","require","_native","_NativeStorageError","_interopRequireDefault","obj","__esModule","default","GoogleDriveApiClient","drive","GDrive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","NativeStorageError","toString","NativeStorageErrorCode","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","isCloudAvailable","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","MimeTypes","FOLDER","name","topDirectoryId","length","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","getFileId","parentDirectoryId","file","f2","FILE_NOT_FOUND","fileExists","e","code","createFile","data","overwrite","fileId","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","undefined","execute","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile","_default","exports"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIsCloudAvailable = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _RNCloudStorage = _interopRequireDefault(require("../RNCloudStorage"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ // TODO: there must be a better way to do this without a timeout?
12
+ const useIsCloudAvailable = function () {
13
+ let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
14
+ const [isCloudAvailable, setIsCloudAvailable] = (0, _react.useState)(_reactNative.Platform.OS !== 'ios');
15
+ const [firstCheck] = (0, _react.useState)(new Date());
16
+ (0, _react.useEffect)(() => {
17
+ const checkCloudAvailability = async () => {
18
+ const isAvailable = await _RNCloudStorage.default.isCloudAvailable();
19
+ if (isAvailable) {
20
+ setIsCloudAvailable(true);
21
+ } else if (new Date().getTime() - firstCheck.getTime() < timeout * 1000) {
22
+ setTimeout(checkCloudAvailability, 500);
23
+ } else {
24
+ console.log('Cloud storage is not available.');
25
+ }
26
+ };
27
+ checkCloudAvailability();
28
+ }, [firstCheck, timeout]);
29
+ return isCloudAvailable;
30
+ };
31
+ exports.useIsCloudAvailable = useIsCloudAvailable;
32
+ //# sourceMappingURL=useIsCloudAvailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_RNCloudStorage","_interopRequireDefault","obj","__esModule","default","useIsCloudAvailable","timeout","arguments","length","undefined","isCloudAvailable","setIsCloudAvailable","useState","Platform","OS","firstCheck","Date","useEffect","checkCloudAvailability","isAvailable","RNCloudStorage","getTime","setTimeout","console","log","exports"],"sourceRoot":"../../../src","sources":["hooks/useIsCloudAvailable.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA+C,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE/C;AACO,MAAMG,mBAAmB,GAAG,SAAAA,CAAA,EAAkB;EAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAC9C,MAAM,CAACG,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG,IAAAC,eAAQ,EAACC,qBAAQ,CAACC,EAAE,KAAK,KAAK,CAAC;EAC/E,MAAM,CAACC,UAAU,CAAC,GAAG,IAAAH,eAAQ,EAAC,IAAII,IAAI,EAAE,CAAC;EAEzC,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,sBAAsB,GAAG,MAAAA,CAAA,KAAY;MACzC,MAAMC,WAAW,GAAG,MAAMC,uBAAc,CAACV,gBAAgB,EAAE;MAC3D,IAAIS,WAAW,EAAE;QACfR,mBAAmB,CAAC,IAAI,CAAC;MAC3B,CAAC,MAAM,IAAI,IAAIK,IAAI,EAAE,CAACK,OAAO,EAAE,GAAGN,UAAU,CAACM,OAAO,EAAE,GAAGf,OAAO,GAAG,IAAI,EAAE;QACvEgB,UAAU,CAACJ,sBAAsB,EAAE,GAAG,CAAC;MACzC,CAAC,MAAM;QACLK,OAAO,CAACC,GAAG,CAAC,iCAAiC,CAAC;MAChD;IACF,CAAC;IACDN,sBAAsB,EAAE;EAC1B,CAAC,EAAE,CAACH,UAAU,EAAET,OAAO,CAAC,CAAC;EAEzB,OAAOI,gBAAgB;AACzB,CAAC;AAACe,OAAA,CAAApB,mBAAA,GAAAA,mBAAA"}
@@ -46,6 +46,18 @@ Object.keys(_useCloudFile).forEach(function (key) {
46
46
  }
47
47
  });
48
48
  });
49
+ var _useIsCloudAvailable = require("./hooks/useIsCloudAvailable");
50
+ Object.keys(_useIsCloudAvailable).forEach(function (key) {
51
+ if (key === "default" || key === "__esModule") return;
52
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
53
+ if (key in exports && exports[key] === _useIsCloudAvailable[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _useIsCloudAvailable[key];
58
+ }
59
+ });
60
+ });
49
61
  var _NativeStorageError = _interopRequireDefault(require("./utils/NativeStorageError"));
50
62
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
51
63
  var _default = _RNCloudStorage.default;
@@ -1 +1 @@
1
- {"version":3,"names":["_RNCloudStorage","_interopRequireDefault","require","_native","_main","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useCloudFile","_NativeStorageError","obj","__esModule","default","_default","RNCloudStorage"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAf,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,mBAAA,GAAAjB,sBAAA,CAAAC,OAAA;AAA4D,SAAAD,uBAAAkB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAI7CC,uBAAc;AAAAV,OAAA,CAAAQ,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"names":["_RNCloudStorage","_interopRequireDefault","require","_native","_main","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useCloudFile","_useIsCloudAvailable","_NativeStorageError","obj","__esModule","default","_default","RNCloudStorage"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAf,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,oBAAA,GAAAhB,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAY,oBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,oBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,oBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,mBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AAA4D,SAAAD,uBAAAmB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAI7CC,uBAAc;AAAAX,OAAA,CAAAS,OAAA,GAAAC,QAAA"}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.StorageScope = void 0;
7
7
  let StorageScope = /*#__PURE__*/function (StorageScope) {
8
8
  StorageScope["Documents"] = "documents";
9
- StorageScope["Hidden"] = "hidden";
9
+ StorageScope["AppData"] = "app_data";
10
10
  return StorageScope;
11
11
  }({});
12
12
  exports.StorageScope = StorageScope;
@@ -13,6 +13,7 @@ let NativeStorageErrorCode = /*#__PURE__*/function (NativeStorageErrorCode) {
13
13
  NativeStorageErrorCode["DELETE_ERROR"] = "ERR_DELETE_ERROR";
14
14
  NativeStorageErrorCode["STAT_ERROR"] = "ERR_STAT_ERROR";
15
15
  NativeStorageErrorCode["UNKNOWN"] = "ERR_UNKNOWN";
16
+ NativeStorageErrorCode["GOOGLE_DRIVE_ACCESS_TOKEN_MISSING"] = "ERR_GOOGLE_DRIVE_ACCESS_TOKEN_MISSING";
16
17
  return NativeStorageErrorCode;
17
18
  }({});
18
19
  exports.NativeStorageErrorCode = NativeStorageErrorCode;
@@ -1 +1 @@
1
- {"version":3,"names":["NativeStorageErrorCode","exports"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":";;;;;;IAUYA,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAAC,OAAA,CAAAD,sBAAA,GAAAA,sBAAA"}
1
+ {"version":3,"names":["NativeStorageErrorCode","exports"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":";;;;;;IAUYA,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAAC,OAAA,CAAAD,sBAAA,GAAAA,sBAAA"}
@@ -3,6 +3,14 @@ import GoogleDriveApiClient from './google-drive';
3
3
  const nativeInstance = createRNCloudStorage();
4
4
  const RNCloudStorage = {
5
5
  setGoogleDriveAccessToken: accessToken => GoogleDriveApiClient.accessToken = accessToken,
6
+ /**
7
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
8
+ * unavailable right after app launch or if the user is not logged in.
9
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
10
+ */
11
+ isCloudAvailable: async () => {
12
+ return nativeInstance.isCloudAvailable();
13
+ },
6
14
  /**
7
15
  * Tests whether or not the file at the given path exists.
8
16
  * @param path The path to test.
@@ -1 +1 @@
1
- {"version":3,"names":["createRNCloudStorage","GoogleDriveApiClient","nativeInstance","RNCloudStorage","setGoogleDriveAccessToken","accessToken","exists","path","scope","fileExists","writeFile","data","createFile","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":"AAAA,OAAOA,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,oBAAoB,MAAM,gBAAgB;AAGjD,MAAMC,cAAc,GAAGF,oBAAoB,EAAE;AAC7C,MAAMG,cAAc,GAAG;EACrBC,yBAAyB,EAAGC,WAAmB,IAAMJ,oBAAoB,CAACI,WAAW,GAAGA,WAAY;EACpG;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAmB,KAAuB;IAC/D,OAAON,cAAc,CAACO,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAmB,KAAoB;IAC7E,OAAON,cAAc,CAACU,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,QAAQ,EAAEA,CAACN,IAAY,EAAEC,KAAmB,KAAsB;IAChE,OAAON,cAAc,CAACW,QAAQ,CAACN,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,MAAM,EAAEA,CAACP,IAAY,EAAEC,KAAmB,KAAoB;IAC5D,OAAON,cAAc,CAACa,UAAU,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,IAAI,EAAE,MAAAA,CAAOT,IAAY,EAAEC,KAAmB,KAA+B;IAC3E,MAAMS,MAAM,GAAG,MAAMf,cAAc,CAACgB,QAAQ,CAACX,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGS,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAED,eAAetB,cAAc"}
1
+ {"version":3,"names":["createRNCloudStorage","GoogleDriveApiClient","nativeInstance","RNCloudStorage","setGoogleDriveAccessToken","accessToken","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","readFile","unlink","deleteFile","stat","native","statFile","birthtime","Date","birthtimeMs","mtime","mtimeMs","isDirectory","isFile"],"sourceRoot":"../../src","sources":["RNCloudStorage.ts"],"mappings":"AAAA,OAAOA,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,oBAAoB,MAAM,gBAAgB;AAGjD,MAAMC,cAAc,GAAGF,oBAAoB,EAAE;AAC7C,MAAMG,cAAc,GAAG;EACrBC,yBAAyB,EAAGC,WAAmB,IAAMJ,oBAAoB,CAACI,WAAW,GAAGA,WAAY;EAEpG;AACF;AACA;AACA;AACA;EACEC,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOJ,cAAc,CAACI,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAmB,KAAuB;IAC/D,OAAOP,cAAc,CAACQ,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAmB,KAAoB;IAC7E,OAAOP,cAAc,CAACW,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,QAAQ,EAAEA,CAACN,IAAY,EAAEC,KAAmB,KAAsB;IAChE,OAAOP,cAAc,CAACY,QAAQ,CAACN,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,MAAM,EAAEA,CAACP,IAAY,EAAEC,KAAmB,KAAoB;IAC5D,OAAOP,cAAc,CAACc,UAAU,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,IAAI,EAAE,MAAAA,CAAOT,IAAY,EAAEC,KAAmB,KAA+B;IAC3E,MAAMS,MAAM,GAAG,MAAMhB,cAAc,CAACiB,QAAQ,CAACX,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGS,MAAM;MACTE,SAAS,EAAE,IAAIC,IAAI,CAACH,MAAM,CAACI,WAAW,CAAC;MACvCC,KAAK,EAAE,IAAIF,IAAI,CAACH,MAAM,CAACM,OAAO,CAAC;MAC/BC,WAAW,EAAEA,CAAA,KAAMP,MAAM,CAACO,WAAW;MACrCC,MAAM,EAAEA,CAAA,KAAMR,MAAM,CAACQ;IACvB,CAAC;EACH;AACF,CAAC;AAED,eAAevB,cAAc"}
@@ -36,9 +36,6 @@ export default function createRNCloudStorage() {
36
36
  }
37
37
  });
38
38
  }
39
- if (Platform.OS === 'android') {
40
- return new GoogleDriveApiClient();
41
- }
42
- throw new Error('Unsupported platform');
39
+ return new GoogleDriveApiClient();
43
40
  }
44
41
  //# sourceMappingURL=createRNCloudStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","GoogleDriveApiClient","NativeStorageErrorCode","NativeStorageError","LINKING_ERROR","select","ios","default","nativeIosInstance","CloudStorage","Proxy","get","target","prop","originalFunction","arguments","error","code","Object","values","includes","message","UNKNOWN","createRNCloudStorage","OS","Error"],"sourceRoot":"../../src","sources":["createRNCloudStorage.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,OAAOC,oBAAoB,MAAM,gBAAgB;AACjD,SAASC,sBAAsB,QAAQ,gBAAgB;AACvD,OAAOC,kBAAkB,MAAM,4BAA4B;AAE3D,MAAMC,aAAa,GAChB,qFAAoF,GACrFJ,QAAQ,CAACK,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,iBAAiB,GAAGT,aAAa,CAACU,YAAY,GAChD,IAAIC,KAAK,CAACX,aAAa,CAACU,YAAY,EAAE;EACpCE,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;IAClE,MAAMC,gBAAgB,GAAGF,MAAM,CAACC,IAAI,CAAC;IACrC,IAAI,OAAOC,gBAAgB,KAAK,UAAU,EAAE;MAC1C,OAAO,kBAA0B;QAC/B,IAAI;UACF;UACA,OAAO,MAAMA,gBAAgB,CAAC,GAAAC,SAAO,CAAC;QACxC,CAAC,CAAC,OAAOC,KAAU,EAAE;UACnB,IAAIA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEC,IAAI,IAAIC,MAAM,CAACC,MAAM,CAACjB,sBAAsB,CAAC,CAACkB,QAAQ,CAACJ,KAAK,CAACC,IAAI,CAAC,EAAE;YAC7E,MAAM,IAAId,kBAAkB,CAAC,CAAAa,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEK,OAAO,KAAI,EAAE,EAAEL,KAAK,CAACC,IAAI,CAA2B;UAC1F,CAAC,MAAM;YACL,MAAM,IAAId,kBAAkB,CAAC,eAAe,EAAED,sBAAsB,CAACoB,OAAO,EAAEN,KAAK,CAAC;UACtF;QACF;MACF,CAAC;IACH;IACA,OAAOF,gBAAgB;EACzB;AACF,CAAC,CAAC,GACF,IAAI;AAER,eAAe,SAASS,oBAAoBA,CAAA,EAAyB;EACnE,IAAIvB,QAAQ,CAACwB,EAAE,KAAK,KAAK,EAAE;IACzB,OACEhB,iBAAiB,IACjB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;MACEC,GAAGA,CAAA,EAAG;QACJ,MAAM,IAAIc,KAAK,CAACrB,aAAa,CAAC;MAChC;IACF,CAAC,CACF;EAEL;EAEA,IAAIJ,QAAQ,CAACwB,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAO,IAAIvB,oBAAoB,EAAE;EACnC;EAEA,MAAM,IAAIwB,KAAK,CAAC,sBAAsB,CAAC;AACzC"}
1
+ {"version":3,"names":["NativeModules","Platform","GoogleDriveApiClient","NativeStorageErrorCode","NativeStorageError","LINKING_ERROR","select","ios","default","nativeIosInstance","CloudStorage","Proxy","get","target","prop","originalFunction","arguments","error","code","Object","values","includes","message","UNKNOWN","createRNCloudStorage","OS","Error"],"sourceRoot":"../../src","sources":["createRNCloudStorage.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,OAAOC,oBAAoB,MAAM,gBAAgB;AACjD,SAASC,sBAAsB,QAAQ,gBAAgB;AACvD,OAAOC,kBAAkB,MAAM,4BAA4B;AAE3D,MAAMC,aAAa,GAChB,qFAAoF,GACrFJ,QAAQ,CAACK,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,iBAAiB,GAAGT,aAAa,CAACU,YAAY,GAChD,IAAIC,KAAK,CAACX,aAAa,CAACU,YAAY,EAAE;EACpCE,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;IAClE,MAAMC,gBAAgB,GAAGF,MAAM,CAACC,IAAI,CAAC;IACrC,IAAI,OAAOC,gBAAgB,KAAK,UAAU,EAAE;MAC1C,OAAO,kBAA0B;QAC/B,IAAI;UACF;UACA,OAAO,MAAMA,gBAAgB,CAAC,GAAAC,SAAO,CAAC;QACxC,CAAC,CAAC,OAAOC,KAAU,EAAE;UACnB,IAAIA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEC,IAAI,IAAIC,MAAM,CAACC,MAAM,CAACjB,sBAAsB,CAAC,CAACkB,QAAQ,CAACJ,KAAK,CAACC,IAAI,CAAC,EAAE;YAC7E,MAAM,IAAId,kBAAkB,CAAC,CAAAa,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEK,OAAO,KAAI,EAAE,EAAEL,KAAK,CAACC,IAAI,CAA2B;UAC1F,CAAC,MAAM;YACL,MAAM,IAAId,kBAAkB,CAAC,eAAe,EAAED,sBAAsB,CAACoB,OAAO,EAAEN,KAAK,CAAC;UACtF;QACF;MACF,CAAC;IACH;IACA,OAAOF,gBAAgB;EACzB;AACF,CAAC,CAAC,GACF,IAAI;AAER,eAAe,SAASS,oBAAoBA,CAAA,EAAyB;EACnE,IAAIvB,QAAQ,CAACwB,EAAE,KAAK,KAAK,EAAE;IACzB,OACEhB,iBAAiB,IACjB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;MACEC,GAAGA,CAAA,EAAG;QACJ,MAAM,IAAIc,KAAK,CAACrB,aAAa,CAAC;MAChC;IACF,CAAC,CACF;EAEL;EAEA,OAAO,IAAIH,oBAAoB,EAAE;AACnC"}
@@ -1,4 +1,6 @@
1
1
  import { GDrive, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
2
+ import { NativeStorageErrorCode } from '../types/native';
3
+ import NativeStorageError from '../utils/NativeStorageError';
2
4
  class GoogleDriveApiClient {
3
5
  static drive = new GDrive();
4
6
  constructor() {
@@ -8,7 +10,7 @@ class GoogleDriveApiClient {
8
10
  get(target, prop) {
9
11
  if (typeof target[prop] === 'function') {
10
12
  if (!GoogleDriveApiClient.drive.accessToken) {
11
- throw new Error(`Google Drive access token is not set, cannot call function ${prop.toString()}`);
13
+ throw new NativeStorageError(`Google Drive access token is not set, cannot call function ${prop.toString()}`, NativeStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
12
14
  }
13
15
  }
14
16
  return target[prop];
@@ -23,11 +25,12 @@ class GoogleDriveApiClient {
23
25
  static get accessToken() {
24
26
  return GoogleDriveApiClient.drive.accessToken;
25
27
  }
28
+ isCloudAvailable = async () => true;
26
29
  getRootDirectory(scope) {
27
30
  switch (scope) {
28
31
  case 'documents':
29
32
  return 'drive';
30
- case 'hidden':
33
+ case 'app_data':
31
34
  return 'appDataFolder';
32
35
  }
33
36
  }
@@ -58,16 +61,16 @@ class GoogleDriveApiClient {
58
61
  }
59
62
  }
60
63
  if (!topDirectoryId) {
61
- throw new Error(`Could not find top directory with name ${directoryTree[0]}`);
64
+ throw new NativeStorageError(`Could not find top directory with name ${directoryTree[0]}`, NativeStorageErrorCode.DIRECTORY_NOT_FOUND);
62
65
  }
63
66
 
64
67
  // now, we traverse the directories array and get the id of the last directory from the files array
65
68
  let currentDirectoryId = topDirectoryId;
66
69
  for (let i = 1; i < directoryTree.length; i++) {
67
70
  const currentDirectory = files.find(f => f.id === currentDirectoryId);
68
- if (!currentDirectory) throw new Error(`Could not find directory with id ${currentDirectoryId}`);
71
+ if (!currentDirectory) throw new NativeStorageError(`Could not find directory with id ${currentDirectoryId}`, NativeStorageErrorCode.DIRECTORY_NOT_FOUND);
69
72
  const nextDirectory = files.find(f => f.name === directoryTree[i] && f.parents[0] === currentDirectoryId);
70
- if (!nextDirectory) throw new Error(`Could not find directory with name ${directoryTree[i]}`);
73
+ if (!nextDirectory) throw new NativeStorageError(`Could not find directory with name ${directoryTree[i]}`, NativeStorageErrorCode.DIRECTORY_NOT_FOUND);
71
74
  currentDirectoryId = nextDirectory.id;
72
75
  }
73
76
  return currentDirectoryId;
@@ -94,7 +97,7 @@ class GoogleDriveApiClient {
94
97
  } else {
95
98
  file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
96
99
  }
97
- if (!file) throw new Error(`File not found`);
100
+ if (!file) throw new NativeStorageError(`File not found`, NativeStorageErrorCode.FILE_NOT_FOUND);
98
101
  return file.id;
99
102
  }
100
103
  async fileExists(path, scope) {
@@ -102,7 +105,7 @@ class GoogleDriveApiClient {
102
105
  await this.getFileId(path, scope);
103
106
  return true;
104
107
  } catch (e) {
105
- if (e.message === 'File not found') return false;else throw e;
108
+ if (e instanceof NativeStorageError && e.code === NativeStorageErrorCode.FILE_NOT_FOUND) return false;else throw e;
106
109
  }
107
110
  }
108
111
  async createFile(path, data, scope, overwrite) {
@@ -124,7 +127,7 @@ class GoogleDriveApiClient {
124
127
  const parentDirectoryId = this.findParentDirectoryId(files, directories);
125
128
  uploader.setRequestBody({
126
129
  name: filename,
127
- parents: parentDirectoryId ? [parentDirectoryId] : scope === 'hidden' ? [this.getRootDirectory(scope)] : undefined
130
+ parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
128
131
  });
129
132
  }
130
133
  await uploader.execute();
@@ -1 +1 @@
1
- {"version":3,"names":["GDrive","MimeTypes","GoogleDriveApiClient","drive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","Error","toString","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","FOLDER","name","topDirectoryId","length","id","possibleTopDirectory","find","parents","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","getFileId","parentDirectoryId","file","f2","fileExists","e","message","createFile","data","overwrite","fileId","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","undefined","execute","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":"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"}
1
+ {"version":3,"names":["GDrive","MimeTypes","NativeStorageErrorCode","NativeStorageError","GoogleDriveApiClient","drive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","toString","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","isCloudAvailable","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","FOLDER","name","topDirectoryId","length","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","getFileId","parentDirectoryId","file","f2","FILE_NOT_FOUND","fileExists","e","code","createFile","data","overwrite","fileId","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","undefined","execute","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { Platform } from 'react-native';
3
+ import RNCloudStorage from '../RNCloudStorage';
4
+
5
+ // TODO: there must be a better way to do this without a timeout?
6
+ export const useIsCloudAvailable = function () {
7
+ let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
8
+ const [isCloudAvailable, setIsCloudAvailable] = useState(Platform.OS !== 'ios');
9
+ const [firstCheck] = useState(new Date());
10
+ useEffect(() => {
11
+ const checkCloudAvailability = async () => {
12
+ const isAvailable = await RNCloudStorage.isCloudAvailable();
13
+ if (isAvailable) {
14
+ setIsCloudAvailable(true);
15
+ } else if (new Date().getTime() - firstCheck.getTime() < timeout * 1000) {
16
+ setTimeout(checkCloudAvailability, 500);
17
+ } else {
18
+ console.log('Cloud storage is not available.');
19
+ }
20
+ };
21
+ checkCloudAvailability();
22
+ }, [firstCheck, timeout]);
23
+ return isCloudAvailable;
24
+ };
25
+ //# sourceMappingURL=useIsCloudAvailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","Platform","RNCloudStorage","useIsCloudAvailable","timeout","arguments","length","undefined","isCloudAvailable","setIsCloudAvailable","OS","firstCheck","Date","checkCloudAvailability","isAvailable","getTime","setTimeout","console","log"],"sourceRoot":"../../../src","sources":["hooks/useIsCloudAvailable.ts"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,QAAQ,QAAQ,cAAc;AACvC,OAAOC,cAAc,MAAM,mBAAmB;;AAE9C;AACA,OAAO,MAAMC,mBAAmB,GAAG,SAAAA,CAAA,EAAkB;EAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAC9C,MAAM,CAACG,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGT,QAAQ,CAACC,QAAQ,CAACS,EAAE,KAAK,KAAK,CAAC;EAC/E,MAAM,CAACC,UAAU,CAAC,GAAGX,QAAQ,CAAC,IAAIY,IAAI,EAAE,CAAC;EAEzCb,SAAS,CAAC,MAAM;IACd,MAAMc,sBAAsB,GAAG,MAAAA,CAAA,KAAY;MACzC,MAAMC,WAAW,GAAG,MAAMZ,cAAc,CAACM,gBAAgB,EAAE;MAC3D,IAAIM,WAAW,EAAE;QACfL,mBAAmB,CAAC,IAAI,CAAC;MAC3B,CAAC,MAAM,IAAI,IAAIG,IAAI,EAAE,CAACG,OAAO,EAAE,GAAGJ,UAAU,CAACI,OAAO,EAAE,GAAGX,OAAO,GAAG,IAAI,EAAE;QACvEY,UAAU,CAACH,sBAAsB,EAAE,GAAG,CAAC;MACzC,CAAC,MAAM;QACLI,OAAO,CAACC,GAAG,CAAC,iCAAiC,CAAC;MAChD;IACF,CAAC;IACDL,sBAAsB,EAAE;EAC1B,CAAC,EAAE,CAACF,UAAU,EAAEP,OAAO,CAAC,CAAC;EAEzB,OAAOI,gBAAgB;AACzB,CAAC"}
@@ -2,6 +2,7 @@ import RNCloudStorage from './RNCloudStorage';
2
2
  import { NativeStorageErrorCode } from './types/native';
3
3
  export * from './types/main';
4
4
  export * from './hooks/useCloudFile';
5
+ export * from './hooks/useIsCloudAvailable';
5
6
  import NativeStorageError from './utils/NativeStorageError';
6
7
  export { NativeStorageError };
7
8
  export { NativeStorageErrorCode };
@@ -1 +1 @@
1
- {"version":3,"names":["RNCloudStorage","NativeStorageErrorCode","NativeStorageError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAC7C,SAASC,sBAAsB,QAAQ,gBAAgB;AACvD,cAAc,cAAc;AAC5B,cAAc,sBAAsB;AACpC,OAAOC,kBAAkB,MAAM,4BAA4B;AAE3D,SAASA,kBAAkB;AAC3B,SAASD,sBAAsB;AAC/B,eAAeD,cAAc"}
1
+ {"version":3,"names":["RNCloudStorage","NativeStorageErrorCode","NativeStorageError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAC7C,SAASC,sBAAsB,QAAQ,gBAAgB;AACvD,cAAc,cAAc;AAC5B,cAAc,sBAAsB;AACpC,cAAc,6BAA6B;AAC3C,OAAOC,kBAAkB,MAAM,4BAA4B;AAE3D,SAASA,kBAAkB;AAC3B,SAASD,sBAAsB;AAC/B,eAAeD,cAAc"}
@@ -1,6 +1,6 @@
1
1
  export let StorageScope = /*#__PURE__*/function (StorageScope) {
2
2
  StorageScope["Documents"] = "documents";
3
- StorageScope["Hidden"] = "hidden";
3
+ StorageScope["AppData"] = "app_data";
4
4
  return StorageScope;
5
5
  }({});
6
6
  //# sourceMappingURL=main.js.map
@@ -7,6 +7,7 @@ export let NativeStorageErrorCode = /*#__PURE__*/function (NativeStorageErrorCod
7
7
  NativeStorageErrorCode["DELETE_ERROR"] = "ERR_DELETE_ERROR";
8
8
  NativeStorageErrorCode["STAT_ERROR"] = "ERR_STAT_ERROR";
9
9
  NativeStorageErrorCode["UNKNOWN"] = "ERR_UNKNOWN";
10
+ NativeStorageErrorCode["GOOGLE_DRIVE_ACCESS_TOKEN_MISSING"] = "ERR_GOOGLE_DRIVE_ACCESS_TOKEN_MISSING";
10
11
  return NativeStorageErrorCode;
11
12
  }({});
12
13
  //# sourceMappingURL=native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeStorageErrorCode"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":"AAUA,WAAYA,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA"}
1
+ {"version":3,"names":["NativeStorageErrorCode"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":"AAUA,WAAYA,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA"}
@@ -1,6 +1,12 @@
1
1
  import type { StorageFileStat, StorageScope } from './types/main';
2
2
  declare const RNCloudStorage: {
3
3
  setGoogleDriveAccessToken: (accessToken: string) => string;
4
+ /**
5
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
6
+ * unavailable right after app launch or if the user is not logged in.
7
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
8
+ */
9
+ isCloudAvailable: () => Promise<boolean>;
4
10
  /**
5
11
  * Tests whether or not the file at the given path exists.
6
12
  * @param path The path to test.
@@ -1 +1 @@
1
- {"version":3,"file":"RNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/RNCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGlE,QAAA,MAAM,cAAc;6CACuB,MAAM;IAC/C;;;;;OAKG;mBACY,MAAM,SAAS,YAAY,KAAG,QAAQ,OAAO,CAAC;IAI7D;;;;;;OAMG;sBACe,MAAM,QAAQ,MAAM,SAAS,YAAY,KAAG,QAAQ,IAAI,CAAC;IAI3E;;;;;OAKG;qBACc,MAAM,SAAS,YAAY,KAAG,QAAQ,MAAM,CAAC;IAI9D;;;;;OAKG;mBACY,MAAM,SAAS,YAAY,KAAG,QAAQ,IAAI,CAAC;IAI1D;;;;;OAKG;iBACgB,MAAM,SAAS,YAAY,KAAG,QAAQ,eAAe,CAAC;CAW1E,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"RNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/RNCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGlE,QAAA,MAAM,cAAc;6CACuB,MAAM;IAE/C;;;;OAIG;4BACyB,QAAQ,OAAO,CAAC;IAI5C;;;;;OAKG;mBACY,MAAM,SAAS,YAAY,KAAG,QAAQ,OAAO,CAAC;IAI7D;;;;;;OAMG;sBACe,MAAM,QAAQ,MAAM,SAAS,YAAY,KAAG,QAAQ,IAAI,CAAC;IAI3E;;;;;OAKG;qBACc,MAAM,SAAS,YAAY,KAAG,QAAQ,MAAM,CAAC;IAI9D;;;;;OAKG;mBACY,MAAM,SAAS,YAAY,KAAG,QAAQ,IAAI,CAAC;IAI1D;;;;;OAKG;iBACgB,MAAM,SAAS,YAAY,KAAG,QAAQ,eAAe,CAAC;CAW1E,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createRNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/createRNCloudStorage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,gBAAgB,CAAC;AAmCvD,MAAM,CAAC,OAAO,UAAU,oBAAoB,IAAI,oBAAoB,CAoBnE"}
1
+ {"version":3,"file":"createRNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/createRNCloudStorage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,gBAAgB,CAAC;AAmCvD,MAAM,CAAC,OAAO,UAAU,oBAAoB,IAAI,oBAAoB,CAgBnE"}
@@ -1,10 +1,11 @@
1
1
  import type NativeRNCloudStorage from '../types/native';
2
- import type { NativeRNCloudStorageFileStat, NativeRNCloudStorageScope } from '../types/native';
2
+ import { type NativeRNCloudStorageFileStat, type NativeRNCloudStorageScope } from '../types/native';
3
3
  declare class GoogleDriveApiClient implements NativeRNCloudStorage {
4
4
  private static drive;
5
5
  constructor();
6
6
  static set accessToken(accessToken: string);
7
7
  static get accessToken(): string;
8
+ isCloudAvailable: () => Promise<boolean>;
8
9
  private getRootDirectory;
9
10
  private resolvePathToDirectories;
10
11
  private findParentDirectoryId;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/google-drive/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG/F,cAAM,oBAAqB,YAAW,oBAAoB;IACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAwB;;IAmB5C,WAAkB,WAAW,CAAC,WAAW,EAAE,MAAM,EAEhD;IAED,WAAkB,WAAW,IAAI,MAAM,CAEtC;IAED,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,qBAAqB;YAsCf,SAAS;YAST,SAAS;IAgBjB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B3G,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMzE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAatG;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/google-drive/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAC;AAIzB,cAAM,oBAAqB,YAAW,oBAAoB;IACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAwB;;IAsB5C,WAAkB,WAAW,CAAC,WAAW,EAAE,MAAM,EAEhD;IAED,WAAkB,WAAW,IAAI,MAAM,CAEtC;IAEM,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAoB;IAEnE,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,qBAAqB;YAiDf,SAAS;YAST,SAAS;IAgBjB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B3G,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMzE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAatG;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const useIsCloudAvailable: (timeout?: number) => boolean;
2
+ //# sourceMappingURL=useIsCloudAvailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsCloudAvailable.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIsCloudAvailable.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,+BAmB/B,CAAC"}
@@ -2,6 +2,7 @@ import RNCloudStorage from './RNCloudStorage';
2
2
  import { NativeStorageErrorCode } from './types/native';
3
3
  export * from './types/main';
4
4
  export * from './hooks/useCloudFile';
5
+ export * from './hooks/useIsCloudAvailable';
5
6
  import NativeStorageError from './utils/NativeStorageError';
6
7
  export { NativeStorageError };
7
8
  export { NativeStorageErrorCode };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,eAAe,cAAc,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export declare enum StorageScope {
2
2
  Documents = "documents",
3
- Hidden = "hidden"
3
+ AppData = "app_data"
4
4
  }
5
5
  export interface StorageFileStat {
6
6
  size: number;
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/types/main.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/types/main.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,SAAS,cAAc;IACvB,OAAO,aAAa;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB"}
@@ -1,4 +1,4 @@
1
- export type NativeRNCloudStorageScope = 'documents' | 'hidden';
1
+ export type NativeRNCloudStorageScope = 'documents' | 'app_data';
2
2
  export interface NativeRNCloudStorageFileStat {
3
3
  size: number;
4
4
  birthtimeMs: number;
@@ -14,7 +14,8 @@ export declare enum NativeStorageErrorCode {
14
14
  READ_ERROR = "ERR_READ_ERROR",
15
15
  DELETE_ERROR = "ERR_DELETE_ERROR",
16
16
  STAT_ERROR = "ERR_STAT_ERROR",
17
- UNKNOWN = "ERR_UNKNOWN"
17
+ UNKNOWN = "ERR_UNKNOWN",
18
+ GOOGLE_DRIVE_ACCESS_TOKEN_MISSING = "ERR_GOOGLE_DRIVE_ACCESS_TOKEN_MISSING"
18
19
  }
19
20
  export default interface NativeRNCloudStorage {
20
21
  fileExists: (path: string, scope: NativeRNCloudStorageScope) => Promise<boolean>;
@@ -22,5 +23,6 @@ export default interface NativeRNCloudStorage {
22
23
  readFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<string>;
23
24
  deleteFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<void>;
24
25
  statFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<NativeRNCloudStorageFileStat>;
26
+ isCloudAvailable: () => Promise<boolean>;
25
27
  }
26
28
  //# sourceMappingURL=native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/types/native.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oBAAY,sBAAsB;IAChC,cAAc,uBAAuB;IACrC,mBAAmB,2BAA2B;IAC9C,mBAAmB,oBAAoB;IACvC,WAAW,oBAAoB;IAC/B,UAAU,mBAAmB;IAC7B,YAAY,qBAAqB;IACjC,UAAU,mBAAmB;IAC7B,OAAO,gBAAgB;CACxB;AAED,MAAM,CAAC,OAAO,WAAW,oBAAoB;IAC3C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,4BAA4B,CAAC,CAAC;CACrG"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/types/native.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,oBAAY,sBAAsB;IAChC,cAAc,uBAAuB;IACrC,mBAAmB,2BAA2B;IAC9C,mBAAmB,oBAAoB;IACvC,WAAW,oBAAoB;IAC/B,UAAU,mBAAmB;IAC7B,YAAY,qBAAqB;IACjC,UAAU,mBAAmB;IAC7B,OAAO,gBAAgB;IACvB,iCAAiC,0CAA0C;CAC5E;AAED,MAAM,CAAC,OAAO,WAAW,oBAAoB;IAC3C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACpG,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C"}
@@ -1,4 +1,4 @@
1
- import type { NativeStorageErrorCode } from 'src/types/native';
1
+ import type { NativeStorageErrorCode } from '../types/native';
2
2
  declare class NativeStorageError extends Error {
3
3
  code: NativeStorageErrorCode;
4
4
  details?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeStorageError.d.ts","sourceRoot":"","sources":["../../../src/utils/NativeStorageError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,cAAM,kBAAmB,SAAQ,KAAK;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,CAAC,EAAE,GAAG,CAAC;gBAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,GAAG;CAKzE;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"NativeStorageError.d.ts","sourceRoot":"","sources":["../../../src/utils/NativeStorageError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,cAAM,kBAAmB,SAAQ,KAAK;IACpC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,CAAC,EAAE,GAAG,CAAC;gBAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,GAAG;CAKzE;AAED,eAAe,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-cloud-storage",
3
- "version": "0.2.0",
4
- "description": "test",
3
+ "version": "0.4.0",
4
+ "description": "Save to & read from iCloud and Google Drive using React Native",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/index.d.ts",
@@ -5,6 +5,16 @@ import type { StorageFileStat, StorageScope } from './types/main';
5
5
  const nativeInstance = createRNCloudStorage();
6
6
  const RNCloudStorage = {
7
7
  setGoogleDriveAccessToken: (accessToken: string) => (GoogleDriveApiClient.accessToken = accessToken),
8
+
9
+ /**
10
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
11
+ * unavailable right after app launch or if the user is not logged in.
12
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
13
+ */
14
+ isCloudAvailable: async (): Promise<boolean> => {
15
+ return nativeInstance.isCloudAvailable();
16
+ },
17
+
8
18
  /**
9
19
  * Tests whether or not the file at the given path exists.
10
20
  * @param path The path to test.
@@ -49,9 +49,5 @@ export default function createRNCloudStorage(): NativeRNCloudStorage {
49
49
  );
50
50
  }
51
51
 
52
- if (Platform.OS === 'android') {
53
- return new GoogleDriveApiClient();
54
- }
55
-
56
- throw new Error('Unsupported platform');
52
+ return new GoogleDriveApiClient();
57
53
  }
@@ -1,7 +1,12 @@
1
1
  import { GDrive, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
2
2
  import type NativeRNCloudStorage from '../types/native';
3
- import type { NativeRNCloudStorageFileStat, NativeRNCloudStorageScope } from '../types/native';
3
+ import {
4
+ NativeStorageErrorCode,
5
+ type NativeRNCloudStorageFileStat,
6
+ type NativeRNCloudStorageScope,
7
+ } from '../types/native';
4
8
  import type { GoogleDriveDetailedFile, GoogleDriveFile, GoogleDriveListOperationResponse } from './types';
9
+ import NativeStorageError from '../utils/NativeStorageError';
5
10
 
6
11
  class GoogleDriveApiClient implements NativeRNCloudStorage {
7
12
  private static drive: GDrive = new GDrive();
@@ -13,7 +18,10 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
13
18
  get(target: GoogleDriveApiClient, prop: keyof GoogleDriveApiClient) {
14
19
  if (typeof target[prop] === 'function') {
15
20
  if (!GoogleDriveApiClient.drive.accessToken) {
16
- throw new Error(`Google Drive access token is not set, cannot call function ${prop.toString()}`);
21
+ throw new NativeStorageError(
22
+ `Google Drive access token is not set, cannot call function ${prop.toString()}`,
23
+ NativeStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING
24
+ );
17
25
  }
18
26
  }
19
27
 
@@ -31,11 +39,13 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
31
39
  return GoogleDriveApiClient.drive.accessToken;
32
40
  }
33
41
 
42
+ public isCloudAvailable: () => Promise<boolean> = async () => true;
43
+
34
44
  private getRootDirectory(scope: NativeRNCloudStorageScope): 'drive' | 'appDataFolder' {
35
45
  switch (scope) {
36
46
  case 'documents':
37
47
  return 'drive';
38
- case 'hidden':
48
+ case 'app_data':
39
49
  return 'appDataFolder';
40
50
  }
41
51
  }
@@ -70,16 +80,27 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
70
80
  }
71
81
 
72
82
  if (!topDirectoryId) {
73
- throw new Error(`Could not find top directory with name ${directoryTree[0]}`);
83
+ throw new NativeStorageError(
84
+ `Could not find top directory with name ${directoryTree[0]}`,
85
+ NativeStorageErrorCode.DIRECTORY_NOT_FOUND
86
+ );
74
87
  }
75
88
 
76
89
  // now, we traverse the directories array and get the id of the last directory from the files array
77
90
  let currentDirectoryId = topDirectoryId;
78
91
  for (let i = 1; i < directoryTree.length; i++) {
79
92
  const currentDirectory = files.find((f) => f.id === currentDirectoryId);
80
- if (!currentDirectory) throw new Error(`Could not find directory with id ${currentDirectoryId}`);
93
+ if (!currentDirectory)
94
+ throw new NativeStorageError(
95
+ `Could not find directory with id ${currentDirectoryId}`,
96
+ NativeStorageErrorCode.DIRECTORY_NOT_FOUND
97
+ );
81
98
  const nextDirectory = files.find((f) => f.name === directoryTree[i] && f.parents![0] === currentDirectoryId);
82
- if (!nextDirectory) throw new Error(`Could not find directory with name ${directoryTree[i]}`);
99
+ if (!nextDirectory)
100
+ throw new NativeStorageError(
101
+ `Could not find directory with name ${directoryTree[i]}`,
102
+ NativeStorageErrorCode.DIRECTORY_NOT_FOUND
103
+ );
83
104
  currentDirectoryId = nextDirectory.id;
84
105
  }
85
106
 
@@ -107,7 +128,7 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
107
128
  } else {
108
129
  file = files.find((f) => f.name === filename && f.parents![0] === parentDirectoryId);
109
130
  }
110
- if (!file) throw new Error(`File not found`);
131
+ if (!file) throw new NativeStorageError(`File not found`, NativeStorageErrorCode.FILE_NOT_FOUND);
111
132
  return file.id;
112
133
  }
113
134
 
@@ -116,7 +137,7 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
116
137
  await this.getFileId(path, scope);
117
138
  return true;
118
139
  } catch (e: any) {
119
- if (e.message === 'File not found') return false;
140
+ if (e instanceof NativeStorageError && e.code === NativeStorageErrorCode.FILE_NOT_FOUND) return false;
120
141
  else throw e;
121
142
  }
122
143
  }
@@ -140,7 +161,7 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
140
161
  name: filename,
141
162
  parents: parentDirectoryId
142
163
  ? [parentDirectoryId]
143
- : scope === 'hidden'
164
+ : scope === 'app_data'
144
165
  ? [this.getRootDirectory(scope)]
145
166
  : undefined,
146
167
  });
@@ -0,0 +1,25 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { Platform } from 'react-native';
3
+ import RNCloudStorage from '../RNCloudStorage';
4
+
5
+ // TODO: there must be a better way to do this without a timeout?
6
+ export const useIsCloudAvailable = (timeout = 10) => {
7
+ const [isCloudAvailable, setIsCloudAvailable] = useState(Platform.OS !== 'ios');
8
+ const [firstCheck] = useState(new Date());
9
+
10
+ useEffect(() => {
11
+ const checkCloudAvailability = async () => {
12
+ const isAvailable = await RNCloudStorage.isCloudAvailable();
13
+ if (isAvailable) {
14
+ setIsCloudAvailable(true);
15
+ } else if (new Date().getTime() - firstCheck.getTime() < timeout * 1000) {
16
+ setTimeout(checkCloudAvailability, 500);
17
+ } else {
18
+ console.log('Cloud storage is not available.');
19
+ }
20
+ };
21
+ checkCloudAvailability();
22
+ }, [firstCheck, timeout]);
23
+
24
+ return isCloudAvailable;
25
+ };
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@ import RNCloudStorage from './RNCloudStorage';
2
2
  import { NativeStorageErrorCode } from './types/native';
3
3
  export * from './types/main';
4
4
  export * from './hooks/useCloudFile';
5
+ export * from './hooks/useIsCloudAvailable';
5
6
  import NativeStorageError from './utils/NativeStorageError';
6
7
 
7
8
  export { NativeStorageError };
package/src/types/main.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export enum StorageScope {
2
2
  Documents = 'documents',
3
- Hidden = 'hidden',
3
+ AppData = 'app_data',
4
4
  }
5
5
 
6
6
  export interface StorageFileStat {
@@ -1,4 +1,4 @@
1
- export type NativeRNCloudStorageScope = 'documents' | 'hidden';
1
+ export type NativeRNCloudStorageScope = 'documents' | 'app_data';
2
2
 
3
3
  export interface NativeRNCloudStorageFileStat {
4
4
  size: number;
@@ -17,6 +17,7 @@ export enum NativeStorageErrorCode {
17
17
  DELETE_ERROR = 'ERR_DELETE_ERROR',
18
18
  STAT_ERROR = 'ERR_STAT_ERROR',
19
19
  UNKNOWN = 'ERR_UNKNOWN',
20
+ GOOGLE_DRIVE_ACCESS_TOKEN_MISSING = 'ERR_GOOGLE_DRIVE_ACCESS_TOKEN_MISSING',
20
21
  }
21
22
 
22
23
  export default interface NativeRNCloudStorage {
@@ -25,4 +26,5 @@ export default interface NativeRNCloudStorage {
25
26
  readFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<string>;
26
27
  deleteFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<void>;
27
28
  statFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<NativeRNCloudStorageFileStat>;
29
+ isCloudAvailable: () => Promise<boolean>;
28
30
  }
@@ -1,4 +1,4 @@
1
- import type { NativeStorageErrorCode } from 'src/types/native';
1
+ import type { NativeStorageErrorCode } from '../types/native';
2
2
 
3
3
  class NativeStorageError extends Error {
4
4
  code: NativeStorageErrorCode;