react-native-cloud-storage 0.3.1 → 0.4.1

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 (40) 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 +9 -0
  5. package/lib/commonjs/RNCloudStorage.js.map +1 -1
  6. package/lib/commonjs/google-drive/index.js +7 -3
  7. package/lib/commonjs/google-drive/index.js.map +1 -1
  8. package/lib/commonjs/hooks/useIsCloudAvailable.js +35 -0
  9. package/lib/commonjs/hooks/useIsCloudAvailable.js.map +1 -0
  10. package/lib/commonjs/index.js +12 -0
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/types/main.js +1 -1
  13. package/lib/module/RNCloudStorage.js +9 -0
  14. package/lib/module/RNCloudStorage.js.map +1 -1
  15. package/lib/module/google-drive/index.js +7 -3
  16. package/lib/module/google-drive/index.js.map +1 -1
  17. package/lib/module/hooks/useIsCloudAvailable.js +28 -0
  18. package/lib/module/hooks/useIsCloudAvailable.js.map +1 -0
  19. package/lib/module/index.js +1 -0
  20. package/lib/module/index.js.map +1 -1
  21. package/lib/module/types/main.js +1 -1
  22. package/lib/typescript/RNCloudStorage.d.ts +7 -0
  23. package/lib/typescript/RNCloudStorage.d.ts.map +1 -1
  24. package/lib/typescript/google-drive/index.d.ts +1 -0
  25. package/lib/typescript/google-drive/index.d.ts.map +1 -1
  26. package/lib/typescript/hooks/useIsCloudAvailable.d.ts +2 -0
  27. package/lib/typescript/hooks/useIsCloudAvailable.d.ts.map +1 -0
  28. package/lib/typescript/index.d.ts +1 -0
  29. package/lib/typescript/index.d.ts.map +1 -1
  30. package/lib/typescript/types/main.d.ts +1 -1
  31. package/lib/typescript/types/main.d.ts.map +1 -1
  32. package/lib/typescript/types/native.d.ts +2 -1
  33. package/lib/typescript/types/native.d.ts.map +1 -1
  34. package/package.json +2 -2
  35. package/src/RNCloudStorage.ts +11 -0
  36. package/src/google-drive/index.ts +5 -3
  37. package/src/hooks/useIsCloudAvailable.ts +30 -0
  38. package/src/index.ts +1 -0
  39. package/src/types/main.ts +1 -1
  40. package/src/types/native.ts +2 -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
@@ -9,7 +9,16 @@ var _googleDrive = _interopRequireDefault(require("./google-drive"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
10
  const nativeInstance = (0, _createRNCloudStorage.default)();
11
11
  const RNCloudStorage = {
12
+ googleDriveAccessToken: _googleDrive.default.accessToken,
12
13
  setGoogleDriveAccessToken: accessToken => _googleDrive.default.accessToken = accessToken,
14
+ /**
15
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
16
+ * unavailable right after app launch or if the user is not logged in.
17
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
18
+ */
19
+ isCloudAvailable: async () => {
20
+ return nativeInstance.isCloudAvailable();
21
+ },
13
22
  /**
14
23
  * Tests whether or not the file at the given path exists.
15
24
  * @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","googleDriveAccessToken","GoogleDriveApiClient","accessToken","setGoogleDriveAccessToken","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,sBAAsB,EAAEC,oBAAoB,CAACC,WAAW;EACxDC,yBAAyB,EAAGD,WAAmB,IAAMD,oBAAoB,CAACC,WAAW,GAAGA,WAAY;EAEpG;AACF;AACA;AACA;AACA;EACEE,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOP,cAAc,CAACO,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAmB,KAAuB;IAC/D,OAAOV,cAAc,CAACW,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,OAAOV,cAAc,CAACc,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,OAAOV,cAAc,CAACe,QAAQ,CAACN,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,MAAM,EAAEA,CAACP,IAAY,EAAEC,KAAmB,KAAoB;IAC5D,OAAOV,cAAc,CAACiB,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,MAAMnB,cAAc,CAACoB,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,GAEa1B,cAAc;AAAA2B,OAAA,CAAA9B,OAAA,GAAA6B,QAAA"}
@@ -15,7 +15,7 @@ class GoogleDriveApiClient {
15
15
  return new Proxy(this, {
16
16
  // before calling any function, check if the access token is set
17
17
  get(target, prop) {
18
- if (typeof target[prop] === 'function') {
18
+ if (typeof target[prop] === 'function' && prop !== 'isCloudAvailable') {
19
19
  if (!GoogleDriveApiClient.drive.accessToken) {
20
20
  throw new _NativeStorageError.default(`Google Drive access token is not set, cannot call function ${prop.toString()}`, _native.NativeStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
21
21
  }
@@ -32,11 +32,15 @@ class GoogleDriveApiClient {
32
32
  static get accessToken() {
33
33
  return GoogleDriveApiClient.drive.accessToken;
34
34
  }
35
+ isCloudAvailable = async () => {
36
+ var _GoogleDriveApiClient;
37
+ return !!((_GoogleDriveApiClient = GoogleDriveApiClient.accessToken) !== null && _GoogleDriveApiClient !== void 0 && _GoogleDriveApiClient.length);
38
+ };
35
39
  getRootDirectory(scope) {
36
40
  switch (scope) {
37
41
  case 'documents':
38
42
  return 'drive';
39
- case 'hidden':
43
+ case 'app_data':
40
44
  return 'appDataFolder';
41
45
  }
42
46
  }
@@ -133,7 +137,7 @@ class GoogleDriveApiClient {
133
137
  const parentDirectoryId = this.findParentDirectoryId(files, directories);
134
138
  uploader.setRequestBody({
135
139
  name: filename,
136
- parents: parentDirectoryId ? [parentDirectoryId] : scope === 'hidden' ? [this.getRootDirectory(scope)] : undefined
140
+ parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
137
141
  });
138
142
  }
139
143
  await uploader.execute();
@@ -1 +1 @@
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","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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"}
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","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","MimeTypes","FOLDER","name","topDirectoryId","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":";;;;;;AAAA,IAAAA,mCAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAMA,IAAAE,mBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA6D,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE7D,MAAMG,oBAAoB,CAAiC;EACzD,OAAeC,KAAK,GAAW,IAAIC,0CAAM,EAAE;EAE3CC,WAAWA,CAAA,EAAG;IACZH,oBAAoB,CAACC,KAAK,CAACG,YAAY,GAAG,IAAI;IAC9C,OAAO,IAAIC,KAAK,CAAC,IAAI,EAAE;MACrB;MACAC,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;QAClE,IAAI,OAAOD,MAAM,CAACC,IAAI,CAAC,KAAK,UAAU,IAAIA,IAAI,KAAK,kBAAkB,EAAE;UACrE,IAAI,CAACR,oBAAoB,CAACC,KAAK,CAACQ,WAAW,EAAE;YAC3C,MAAM,IAAIC,2BAAkB,CACzB,8DAA6DF,IAAI,CAACG,QAAQ,EAAG,EAAC,EAC/EC,8BAAsB,CAACC,iCAAiC,CACzD;UACH;QACF;QAEA,OAAON,MAAM,CAACC,IAAI,CAAC;MACrB;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,WAAkBC,WAAWA,CAACA,WAAmB,EAAE;IACjDT,oBAAoB,CAACC,KAAK,CAACQ,WAAW,GAAGA,WAAW;EACtD;EAEA,WAAkBA,WAAWA,CAAA,EAAW;IACtC,OAAOT,oBAAoB,CAACC,KAAK,CAACQ,WAAW;EAC/C;EAEOK,gBAAgB,GAA2B,MAAAA,CAAA;IAAA,IAAAC,qBAAA;IAAA,OAAY,CAAC,GAAAA,qBAAA,GAACf,oBAAoB,CAACS,WAAW,cAAAM,qBAAA,eAAhCA,qBAAA,CAAkCC,MAAM;EAAA;EAEhGC,gBAAgBA,CAACC,KAAgC,EAA6B;IACpF,QAAQA,KAAK;MACX,KAAK,WAAW;QACd,OAAO,OAAO;MAChB,KAAK,UAAU;QACb,OAAO,eAAe;IAAC;EAE7B;EAEQC,wBAAwBA,CAACC,IAAY,EAA+C;IAC1F,IAAIA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAED,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC;IAC9C,IAAIF,IAAI,CAACG,QAAQ,CAAC,GAAG,CAAC,EAAEH,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAME,WAAW,GAAGJ,IAAI,CAACK,KAAK,CAAC,GAAG,CAAC;IACnC,MAAMC,cAAc,GAAGF,WAAW,CAACG,GAAG,EAAE,IAAI,EAAE;IAC9C,OAAO;MAAEH,WAAW;MAAEI,QAAQ,EAAEF;IAAe,CAAC;EAClD;EAEQG,qBAAqBA,CAACC,KAAwB,EAAEC,aAAuB,EAAiB;IAC9F,MAAMC,sBAAsB,GAAGF,KAAK,CACjCG,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,KAAKC,6CAAS,CAACC,MAAM,CAAC,CAC9CJ,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKP,aAAa,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAIQ,cAAkC;IACtC,IAAIP,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,KAChD,IAAIgB,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE;MAC5CuB,cAAc,GAAGP,sBAAsB,CAAC,CAAC,CAAC,CAAEQ,EAAE;IAChD,CAAC,MAAM;MACL;AACN;AACA;MACM,KAAK,MAAMC,oBAAoB,IAAIT,sBAAsB,EAAE;QACzD,IAAI,CAACF,KAAK,CAACY,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACM,EAAE,KAAKC,oBAAoB,CAAEE,OAAO,CAAE,CAAC,CAAC,IAAIT,CAAC,CAACC,QAAQ,KAAKC,6CAAS,CAACC,MAAM,CAAC,EAAE;UACrGE,cAAc,GAAGE,oBAAoB,CAAED,EAAE;UACzC;QACF;MACF;IACF;IAEA,IAAI,CAACD,cAAc,EAAE;MACnB,MAAM,IAAI7B,2BAAkB,CACzB,0CAAyCqB,aAAa,CAAC,CAAC,CAAE,EAAC,EAC5DnB,8BAAsB,CAACgC,mBAAmB,CAC3C;IACH;;IAEA;IACA,IAAIC,kBAAkB,GAAGN,cAAc;IACvC,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGf,aAAa,CAACf,MAAM,EAAE8B,CAAC,EAAE,EAAE;MAC7C,MAAMC,gBAAgB,GAAGjB,KAAK,CAACY,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACM,EAAE,KAAKK,kBAAkB,CAAC;MACvE,IAAI,CAACE,gBAAgB,EACnB,MAAM,IAAIrC,2BAAkB,CACzB,oCAAmCmC,kBAAmB,EAAC,EACxDjC,8BAAsB,CAACgC,mBAAmB,CAC3C;MACH,MAAMI,aAAa,GAAGlB,KAAK,CAACY,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKP,aAAa,CAACe,CAAC,CAAC,IAAIZ,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKE,kBAAkB,CAAC;MAC5G,IAAI,CAACG,aAAa,EAChB,MAAM,IAAItC,2BAAkB,CACzB,sCAAqCqB,aAAa,CAACe,CAAC,CAAE,EAAC,EACxDlC,8BAAsB,CAACgC,mBAAmB,CAC3C;MACHC,kBAAkB,GAAGG,aAAa,CAACR,EAAE;IACvC;IAEA,OAAOK,kBAAkB;EAC3B;EAEA,MAAcI,SAASA,CAAC/B,KAAgC,EAA8B;IACpF,MAAMY,KAAuC,GAAG,MAAM9B,oBAAoB,CAACC,KAAK,CAAC6B,KAAK,CAACoB,IAAI,CAAC;MAC1FC,MAAM,EAAE,CAAC,IAAI,CAAClC,gBAAgB,CAACC,KAAK,CAAC,CAAC;MACtCkC,MAAM,EAAE;IACV,CAAC,CAAC;IAEF,OAAOtB,KAAK,CAACA,KAAK;EACpB;EAEA,MAAcuB,SAASA,CAACjC,IAAY,EAAEF,KAAgC,EAAmB;IACvF,MAAMY,KAAK,GAAG,MAAM,IAAI,CAACmB,SAAS,CAAC/B,KAAK,CAAC;IACzC,MAAM;MAAEM,WAAW;MAAEI;IAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;IACrE,MAAMkC,iBAAiB,GAAG,IAAI,CAACzB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;IACxE,IAAI+B,IAAiC;IACrC,IAAID,iBAAiB,KAAK,IAAI,EAAE;MAC9B;AACN;MACMC,IAAI,GAAGzB,KAAK,CAACY,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKV,QAAQ,IAAI,CAACE,KAAK,CAACY,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKN,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC,MAAM;MACLY,IAAI,GAAGzB,KAAK,CAACY,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKV,QAAQ,IAAIM,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;IACtF;IACA,IAAI,CAACC,IAAI,EAAE,MAAM,IAAI7C,2BAAkB,CAAE,gBAAe,EAAEE,8BAAsB,CAAC6C,cAAc,CAAC;IAChG,OAAOF,IAAI,CAACf,EAAE;EAChB;EAEA,MAAMkB,UAAUA,CAACtC,IAAY,EAAEF,KAAgC,EAAoB;IACjF,IAAI;MACF,MAAM,IAAI,CAACmC,SAAS,CAACjC,IAAI,EAAEF,KAAK,CAAC;MACjC,OAAO,IAAI;IACb,CAAC,CAAC,OAAOyC,CAAM,EAAE;MACf,IAAIA,CAAC,YAAYjD,2BAAkB,IAAIiD,CAAC,CAACC,IAAI,KAAKhD,8BAAsB,CAAC6C,cAAc,EAAE,OAAO,KAAK,CAAC,KACjG,MAAME,CAAC;IACd;EACF;EAEA,MAAME,UAAUA,CAACzC,IAAY,EAAE0C,IAAY,EAAE5C,KAAgC,EAAE6C,SAAkB,EAAiB;IAChH,IAAIC,MAA0B;IAC9B,IAAID,SAAS,EAAE;MACb,IAAI;QACFC,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACjC,IAAI,EAAEF,KAAK,CAAC;MAC5C,CAAC,CAAC,OAAOyC,CAAM,EAAE;QACf;MAAA;IAEJ;IACA,MAAMM,QAAQ,GAAGjE,oBAAoB,CAACC,KAAK,CAAC6B,KAAK,CAACoC,oBAAoB,EAAE,CAACC,OAAO,CAACL,IAAI,EAAE1B,6CAAS,CAACgC,IAAI,CAAC;IACtG,IAAIJ,MAAM,EAAEC,QAAQ,CAACI,mBAAmB,CAACL,MAAM,CAAC,CAAC,KAC5C;MACH,MAAMlC,KAAK,GAAG,MAAM,IAAI,CAACmB,SAAS,CAAC/B,KAAK,CAAC;MACzC,MAAM;QAAEM,WAAW;QAAEI;MAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;MACrE,MAAMkC,iBAAiB,GAAG,IAAI,CAACzB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;MACxEyC,QAAQ,CAACK,cAAc,CAAC;QACtBhC,IAAI,EAAEV,QAAQ;QACde,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBpC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9BqD;MACN,CAAC,CAAC;IACJ;IACA,MAAMN,QAAQ,CAACO,OAAO,EAAE;EAC1B;EAEA,MAAMC,QAAQA,CAACrD,IAAY,EAAEF,KAAgC,EAAmB;IAC9E,MAAM8C,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACjC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAMwD,OAAO,GAAG,MAAM1E,oBAAoB,CAACC,KAAK,CAAC6B,KAAK,CAAC6C,OAAO,CAACX,MAAM,CAAC;IACtE,OAAOU,OAAO;EAChB;EAEA,MAAME,UAAUA,CAACxD,IAAY,EAAEF,KAAgC,EAAiB;IAC9E,MAAM8C,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACjC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAMlB,oBAAoB,CAACC,KAAK,CAAC6B,KAAK,CAAC+C,MAAM,CAACb,MAAM,CAAC;EACvD;EAEA,MAAMc,QAAQA,CAAC1D,IAAY,EAAEF,KAAgC,EAAyC;IACpG,MAAM8C,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACjC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAMqC,IAA6B,GAAG,MAAMvD,oBAAoB,CAACC,KAAK,CAAC6B,KAAK,CAACxB,GAAG,CAAC0D,MAAM,EAAE;MACvFZ,MAAM,EAAE;IACV,CAAC,CAAC;IACF,OAAO;MACL2B,IAAI,EAAExB,IAAI,CAACwB,IAAI,IAAI,CAAC;MACpBC,WAAW,EAAE,IAAIC,IAAI,CAAC1B,IAAI,CAAC2B,WAAW,CAAE,CAACC,OAAO,EAAE;MAClDC,OAAO,EAAE,IAAIH,IAAI,CAAC1B,IAAI,CAAC8B,YAAY,CAAE,CAACF,OAAO,EAAE;MAC/CG,WAAW,EAAE/B,IAAI,CAACpB,QAAQ,KAAKC,6CAAS,CAACC,MAAM;MAC/CkD,MAAM,EAAEhC,IAAI,CAACpB,QAAQ,KAAKC,6CAAS,CAACC;IACtC,CAAC;EACH;AACF;AAAC,IAAAmD,QAAA,GAEcxF,oBAAoB;AAAAyF,OAAA,CAAA1F,OAAA,GAAAyF,QAAA"}
@@ -0,0 +1,35 @@
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 iCloudTimeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
14
+ const [isAvailable, setIsAvailable] = (0, _react.useState)(false);
15
+ (0, _react.useEffect)(() => {
16
+ const interval = setInterval(async () => {
17
+ const newIsAvailable = await _RNCloudStorage.default.isCloudAvailable();
18
+ setIsAvailable(newIsAvailable);
19
+ if (_reactNative.Platform.OS === 'ios' && newIsAvailable) {
20
+ console.log('Stopped because iCloud became available');
21
+ clearInterval(interval);
22
+ }
23
+ }, 500);
24
+ if (_reactNative.Platform.OS === 'ios') {
25
+ setTimeout(() => {
26
+ console.log('Stopped because of timeout');
27
+ clearInterval(interval);
28
+ }, iCloudTimeout * 1000);
29
+ }
30
+ return () => clearInterval(interval);
31
+ }, [iCloudTimeout]);
32
+ return isAvailable;
33
+ };
34
+ exports.useIsCloudAvailable = useIsCloudAvailable;
35
+ //# sourceMappingURL=useIsCloudAvailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_RNCloudStorage","_interopRequireDefault","obj","__esModule","default","useIsCloudAvailable","iCloudTimeout","arguments","length","undefined","isAvailable","setIsAvailable","useState","useEffect","interval","setInterval","newIsAvailable","RNCloudStorage","isCloudAvailable","Platform","OS","console","log","clearInterval","setTimeout","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,EAAwB;EAAA,IAAvBC,aAAa,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EACpD,MAAM,CAACG,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAErD,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,QAAQ,GAAGC,WAAW,CAAC,YAAY;MACvC,MAAMC,cAAc,GAAG,MAAMC,uBAAc,CAACC,gBAAgB,EAAE;MAC9DP,cAAc,CAACK,cAAc,CAAC;MAC9B,IAAIG,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAIJ,cAAc,EAAE;QAC3CK,OAAO,CAACC,GAAG,CAAC,yCAAyC,CAAC;QACtDC,aAAa,CAACT,QAAQ,CAAC;MACzB;IACF,CAAC,EAAE,GAAG,CAAC;IAEP,IAAIK,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzBI,UAAU,CAAC,MAAM;QACfH,OAAO,CAACC,GAAG,CAAC,4BAA4B,CAAC;QACzCC,aAAa,CAACT,QAAQ,CAAC;MACzB,CAAC,EAAER,aAAa,GAAG,IAAI,CAAC;IAC1B;IAEA,OAAO,MAAMiB,aAAa,CAACT,QAAQ,CAAC;EACtC,CAAC,EAAE,CAACR,aAAa,CAAC,CAAC;EAEnB,OAAOI,WAAW;AACpB,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;
@@ -2,7 +2,16 @@ import createRNCloudStorage from './createRNCloudStorage';
2
2
  import GoogleDriveApiClient from './google-drive';
3
3
  const nativeInstance = createRNCloudStorage();
4
4
  const RNCloudStorage = {
5
+ googleDriveAccessToken: GoogleDriveApiClient.accessToken,
5
6
  setGoogleDriveAccessToken: accessToken => GoogleDriveApiClient.accessToken = accessToken,
7
+ /**
8
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
9
+ * unavailable right after app launch or if the user is not logged in.
10
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
11
+ */
12
+ isCloudAvailable: async () => {
13
+ return nativeInstance.isCloudAvailable();
14
+ },
6
15
  /**
7
16
  * Tests whether or not the file at the given path exists.
8
17
  * @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","googleDriveAccessToken","accessToken","setGoogleDriveAccessToken","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,sBAAsB,EAAEH,oBAAoB,CAACI,WAAW;EACxDC,yBAAyB,EAAGD,WAAmB,IAAMJ,oBAAoB,CAACI,WAAW,GAAGA,WAAY;EAEpG;AACF;AACA;AACA;AACA;EACEE,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOL,cAAc,CAACK,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,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;AAED,eAAexB,cAAc"}
@@ -8,7 +8,7 @@ class GoogleDriveApiClient {
8
8
  return new Proxy(this, {
9
9
  // before calling any function, check if the access token is set
10
10
  get(target, prop) {
11
- if (typeof target[prop] === 'function') {
11
+ if (typeof target[prop] === 'function' && prop !== 'isCloudAvailable') {
12
12
  if (!GoogleDriveApiClient.drive.accessToken) {
13
13
  throw new NativeStorageError(`Google Drive access token is not set, cannot call function ${prop.toString()}`, NativeStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
14
14
  }
@@ -25,11 +25,15 @@ class GoogleDriveApiClient {
25
25
  static get accessToken() {
26
26
  return GoogleDriveApiClient.drive.accessToken;
27
27
  }
28
+ isCloudAvailable = async () => {
29
+ var _GoogleDriveApiClient;
30
+ return !!((_GoogleDriveApiClient = GoogleDriveApiClient.accessToken) !== null && _GoogleDriveApiClient !== void 0 && _GoogleDriveApiClient.length);
31
+ };
28
32
  getRootDirectory(scope) {
29
33
  switch (scope) {
30
34
  case 'documents':
31
35
  return 'drive';
32
- case 'hidden':
36
+ case 'app_data':
33
37
  return 'appDataFolder';
34
38
  }
35
39
  }
@@ -126,7 +130,7 @@ class GoogleDriveApiClient {
126
130
  const parentDirectoryId = this.findParentDirectoryId(files, directories);
127
131
  uploader.setRequestBody({
128
132
  name: filename,
129
- parents: parentDirectoryId ? [parentDirectoryId] : scope === 'hidden' ? [this.getRootDirectory(scope)] : undefined
133
+ parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
130
134
  });
131
135
  }
132
136
  await uploader.execute();
@@ -1 +1 @@
1
- {"version":3,"names":["GDrive","MimeTypes","NativeStorageErrorCode","NativeStorageError","GoogleDriveApiClient","drive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","toString","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","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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"}
1
+ {"version":3,"names":["GDrive","MimeTypes","NativeStorageErrorCode","NativeStorageError","GoogleDriveApiClient","drive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","toString","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","isCloudAvailable","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","filter","f","mimeType","FOLDER","name","topDirectoryId","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":"AAAA,SAASA,MAAM,EAAEC,SAAS,QAAQ,0CAA0C;AAE5E,SACEC,sBAAsB,QAGjB,iBAAiB;AAExB,OAAOC,kBAAkB,MAAM,6BAA6B;AAE5D,MAAMC,oBAAoB,CAAiC;EACzD,OAAeC,KAAK,GAAW,IAAIL,MAAM,EAAE;EAE3CM,WAAWA,CAAA,EAAG;IACZF,oBAAoB,CAACC,KAAK,CAACE,YAAY,GAAG,IAAI;IAC9C,OAAO,IAAIC,KAAK,CAAC,IAAI,EAAE;MACrB;MACAC,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;QAClE,IAAI,OAAOD,MAAM,CAACC,IAAI,CAAC,KAAK,UAAU,IAAIA,IAAI,KAAK,kBAAkB,EAAE;UACrE,IAAI,CAACP,oBAAoB,CAACC,KAAK,CAACO,WAAW,EAAE;YAC3C,MAAM,IAAIT,kBAAkB,CACzB,8DAA6DQ,IAAI,CAACE,QAAQ,EAAG,EAAC,EAC/EX,sBAAsB,CAACY,iCAAiC,CACzD;UACH;QACF;QAEA,OAAOJ,MAAM,CAACC,IAAI,CAAC;MACrB;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,WAAkBC,WAAWA,CAACA,WAAmB,EAAE;IACjDR,oBAAoB,CAACC,KAAK,CAACO,WAAW,GAAGA,WAAW;EACtD;EAEA,WAAkBA,WAAWA,CAAA,EAAW;IACtC,OAAOR,oBAAoB,CAACC,KAAK,CAACO,WAAW;EAC/C;EAEOG,gBAAgB,GAA2B,MAAAA,CAAA;IAAA,IAAAC,qBAAA;IAAA,OAAY,CAAC,GAAAA,qBAAA,GAACZ,oBAAoB,CAACQ,WAAW,cAAAI,qBAAA,eAAhCA,qBAAA,CAAkCC,MAAM;EAAA;EAEhGC,gBAAgBA,CAACC,KAAgC,EAA6B;IACpF,QAAQA,KAAK;MACX,KAAK,WAAW;QACd,OAAO,OAAO;MAChB,KAAK,UAAU;QACb,OAAO,eAAe;IAAC;EAE7B;EAEQC,wBAAwBA,CAACC,IAAY,EAA+C;IAC1F,IAAIA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAED,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,CAAC;IAC9C,IAAIF,IAAI,CAACG,QAAQ,CAAC,GAAG,CAAC,EAAEH,IAAI,GAAGA,IAAI,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAME,WAAW,GAAGJ,IAAI,CAACK,KAAK,CAAC,GAAG,CAAC;IACnC,MAAMC,cAAc,GAAGF,WAAW,CAACG,GAAG,EAAE,IAAI,EAAE;IAC9C,OAAO;MAAEH,WAAW;MAAEI,QAAQ,EAAEF;IAAe,CAAC;EAClD;EAEQG,qBAAqBA,CAACC,KAAwB,EAAEC,aAAuB,EAAiB;IAC9F,MAAMC,sBAAsB,GAAGF,KAAK,CACjCG,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,KAAKnC,SAAS,CAACoC,MAAM,CAAC,CAC9CH,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKN,aAAa,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAIO,cAAkC;IACtC,IAAIN,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,KAChD,IAAIgB,sBAAsB,CAAChB,MAAM,KAAK,CAAC,EAAE;MAC5CsB,cAAc,GAAGN,sBAAsB,CAAC,CAAC,CAAC,CAAEO,EAAE;IAChD,CAAC,MAAM;MACL;AACN;AACA;MACM,KAAK,MAAMC,oBAAoB,IAAIR,sBAAsB,EAAE;QACzD,IAAI,CAACF,KAAK,CAACW,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACK,EAAE,KAAKC,oBAAoB,CAAEE,OAAO,CAAE,CAAC,CAAC,IAAIR,CAAC,CAACC,QAAQ,KAAKnC,SAAS,CAACoC,MAAM,CAAC,EAAE;UACrGE,cAAc,GAAGE,oBAAoB,CAAED,EAAE;UACzC;QACF;MACF;IACF;IAEA,IAAI,CAACD,cAAc,EAAE;MACnB,MAAM,IAAIpC,kBAAkB,CACzB,0CAAyC6B,aAAa,CAAC,CAAC,CAAE,EAAC,EAC5D9B,sBAAsB,CAAC0C,mBAAmB,CAC3C;IACH;;IAEA;IACA,IAAIC,kBAAkB,GAAGN,cAAc;IACvC,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,aAAa,CAACf,MAAM,EAAE6B,CAAC,EAAE,EAAE;MAC7C,MAAMC,gBAAgB,GAAGhB,KAAK,CAACW,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACK,EAAE,KAAKK,kBAAkB,CAAC;MACvE,IAAI,CAACE,gBAAgB,EACnB,MAAM,IAAI5C,kBAAkB,CACzB,oCAAmC0C,kBAAmB,EAAC,EACxD3C,sBAAsB,CAAC0C,mBAAmB,CAC3C;MACH,MAAMI,aAAa,GAAGjB,KAAK,CAACW,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKN,aAAa,CAACc,CAAC,CAAC,IAAIX,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,KAAKE,kBAAkB,CAAC;MAC5G,IAAI,CAACG,aAAa,EAChB,MAAM,IAAI7C,kBAAkB,CACzB,sCAAqC6B,aAAa,CAACc,CAAC,CAAE,EAAC,EACxD5C,sBAAsB,CAAC0C,mBAAmB,CAC3C;MACHC,kBAAkB,GAAGG,aAAa,CAACR,EAAE;IACvC;IAEA,OAAOK,kBAAkB;EAC3B;EAEA,MAAcI,SAASA,CAAC9B,KAAgC,EAA8B;IACpF,MAAMY,KAAuC,GAAG,MAAM3B,oBAAoB,CAACC,KAAK,CAAC0B,KAAK,CAACmB,IAAI,CAAC;MAC1FC,MAAM,EAAE,CAAC,IAAI,CAACjC,gBAAgB,CAACC,KAAK,CAAC,CAAC;MACtCiC,MAAM,EAAE;IACV,CAAC,CAAC;IAEF,OAAOrB,KAAK,CAACA,KAAK;EACpB;EAEA,MAAcsB,SAASA,CAAChC,IAAY,EAAEF,KAAgC,EAAmB;IACvF,MAAMY,KAAK,GAAG,MAAM,IAAI,CAACkB,SAAS,CAAC9B,KAAK,CAAC;IACzC,MAAM;MAAEM,WAAW;MAAEI;IAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;IACrE,MAAMiC,iBAAiB,GAAG,IAAI,CAACxB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;IACxE,IAAI8B,IAAiC;IACrC,IAAID,iBAAiB,KAAK,IAAI,EAAE;MAC9B;AACN;MACMC,IAAI,GAAGxB,KAAK,CAACW,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKT,QAAQ,IAAI,CAACE,KAAK,CAACW,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKL,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC,MAAM;MACLY,IAAI,GAAGxB,KAAK,CAACW,IAAI,CAAEP,CAAC,IAAKA,CAAC,CAACG,IAAI,KAAKT,QAAQ,IAAIM,CAAC,CAACQ,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;IACtF;IACA,IAAI,CAACC,IAAI,EAAE,MAAM,IAAIpD,kBAAkB,CAAE,gBAAe,EAAED,sBAAsB,CAACuD,cAAc,CAAC;IAChG,OAAOF,IAAI,CAACf,EAAE;EAChB;EAEA,MAAMkB,UAAUA,CAACrC,IAAY,EAAEF,KAAgC,EAAoB;IACjF,IAAI;MACF,MAAM,IAAI,CAACkC,SAAS,CAAChC,IAAI,EAAEF,KAAK,CAAC;MACjC,OAAO,IAAI;IACb,CAAC,CAAC,OAAOwC,CAAM,EAAE;MACf,IAAIA,CAAC,YAAYxD,kBAAkB,IAAIwD,CAAC,CAACC,IAAI,KAAK1D,sBAAsB,CAACuD,cAAc,EAAE,OAAO,KAAK,CAAC,KACjG,MAAME,CAAC;IACd;EACF;EAEA,MAAME,UAAUA,CAACxC,IAAY,EAAEyC,IAAY,EAAE3C,KAAgC,EAAE4C,SAAkB,EAAiB;IAChH,IAAIC,MAA0B;IAC9B,IAAID,SAAS,EAAE;MACb,IAAI;QACFC,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAAChC,IAAI,EAAEF,KAAK,CAAC;MAC5C,CAAC,CAAC,OAAOwC,CAAM,EAAE;QACf;MAAA;IAEJ;IACA,MAAMM,QAAQ,GAAG7D,oBAAoB,CAACC,KAAK,CAAC0B,KAAK,CAACmC,oBAAoB,EAAE,CAACC,OAAO,CAACL,IAAI,EAAE7D,SAAS,CAACmE,IAAI,CAAC;IACtG,IAAIJ,MAAM,EAAEC,QAAQ,CAACI,mBAAmB,CAACL,MAAM,CAAC,CAAC,KAC5C;MACH,MAAMjC,KAAK,GAAG,MAAM,IAAI,CAACkB,SAAS,CAAC9B,KAAK,CAAC;MACzC,MAAM;QAAEM,WAAW;QAAEI;MAAS,CAAC,GAAG,IAAI,CAACT,wBAAwB,CAACC,IAAI,CAAC;MACrE,MAAMiC,iBAAiB,GAAG,IAAI,CAACxB,qBAAqB,CAACC,KAAK,EAAEN,WAAW,CAAC;MACxEwC,QAAQ,CAACK,cAAc,CAAC;QACtBhC,IAAI,EAAET,QAAQ;QACdc,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBnC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9BoD;MACN,CAAC,CAAC;IACJ;IACA,MAAMN,QAAQ,CAACO,OAAO,EAAE;EAC1B;EAEA,MAAMC,QAAQA,CAACpD,IAAY,EAAEF,KAAgC,EAAmB;IAC9E,MAAM6C,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAAChC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAMuD,OAAO,GAAG,MAAMtE,oBAAoB,CAACC,KAAK,CAAC0B,KAAK,CAAC4C,OAAO,CAACX,MAAM,CAAC;IACtE,OAAOU,OAAO;EAChB;EAEA,MAAME,UAAUA,CAACvD,IAAY,EAAEF,KAAgC,EAAiB;IAC9E,MAAM6C,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAAChC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAMf,oBAAoB,CAACC,KAAK,CAAC0B,KAAK,CAAC8C,MAAM,CAACb,MAAM,CAAC;EACvD;EAEA,MAAMc,QAAQA,CAACzD,IAAY,EAAEF,KAAgC,EAAyC;IACpG,MAAM6C,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAAChC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAMoC,IAA6B,GAAG,MAAMnD,oBAAoB,CAACC,KAAK,CAAC0B,KAAK,CAACtB,GAAG,CAACuD,MAAM,EAAE;MACvFZ,MAAM,EAAE;IACV,CAAC,CAAC;IACF,OAAO;MACL2B,IAAI,EAAExB,IAAI,CAACwB,IAAI,IAAI,CAAC;MACpBC,WAAW,EAAE,IAAIC,IAAI,CAAC1B,IAAI,CAAC2B,WAAW,CAAE,CAACC,OAAO,EAAE;MAClDC,OAAO,EAAE,IAAIH,IAAI,CAAC1B,IAAI,CAAC8B,YAAY,CAAE,CAACF,OAAO,EAAE;MAC/CG,WAAW,EAAE/B,IAAI,CAACnB,QAAQ,KAAKnC,SAAS,CAACoC,MAAM;MAC/CkD,MAAM,EAAEhC,IAAI,CAACnB,QAAQ,KAAKnC,SAAS,CAACoC;IACtC,CAAC;EACH;AACF;AAEA,eAAejC,oBAAoB"}
@@ -0,0 +1,28 @@
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 iCloudTimeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
8
+ const [isAvailable, setIsAvailable] = useState(false);
9
+ useEffect(() => {
10
+ const interval = setInterval(async () => {
11
+ const newIsAvailable = await RNCloudStorage.isCloudAvailable();
12
+ setIsAvailable(newIsAvailable);
13
+ if (Platform.OS === 'ios' && newIsAvailable) {
14
+ console.log('Stopped because iCloud became available');
15
+ clearInterval(interval);
16
+ }
17
+ }, 500);
18
+ if (Platform.OS === 'ios') {
19
+ setTimeout(() => {
20
+ console.log('Stopped because of timeout');
21
+ clearInterval(interval);
22
+ }, iCloudTimeout * 1000);
23
+ }
24
+ return () => clearInterval(interval);
25
+ }, [iCloudTimeout]);
26
+ return isAvailable;
27
+ };
28
+ //# sourceMappingURL=useIsCloudAvailable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","Platform","RNCloudStorage","useIsCloudAvailable","iCloudTimeout","arguments","length","undefined","isAvailable","setIsAvailable","interval","setInterval","newIsAvailable","isCloudAvailable","OS","console","log","clearInterval","setTimeout"],"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,EAAwB;EAAA,IAAvBC,aAAa,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EACpD,MAAM,CAACG,WAAW,EAAEC,cAAc,CAAC,GAAGT,QAAQ,CAAC,KAAK,CAAC;EAErDD,SAAS,CAAC,MAAM;IACd,MAAMW,QAAQ,GAAGC,WAAW,CAAC,YAAY;MACvC,MAAMC,cAAc,GAAG,MAAMV,cAAc,CAACW,gBAAgB,EAAE;MAC9DJ,cAAc,CAACG,cAAc,CAAC;MAC9B,IAAIX,QAAQ,CAACa,EAAE,KAAK,KAAK,IAAIF,cAAc,EAAE;QAC3CG,OAAO,CAACC,GAAG,CAAC,yCAAyC,CAAC;QACtDC,aAAa,CAACP,QAAQ,CAAC;MACzB;IACF,CAAC,EAAE,GAAG,CAAC;IAEP,IAAIT,QAAQ,CAACa,EAAE,KAAK,KAAK,EAAE;MACzBI,UAAU,CAAC,MAAM;QACfH,OAAO,CAACC,GAAG,CAAC,4BAA4B,CAAC;QACzCC,aAAa,CAACP,QAAQ,CAAC;MACzB,CAAC,EAAEN,aAAa,GAAG,IAAI,CAAC;IAC1B;IAEA,OAAO,MAAMa,aAAa,CAACP,QAAQ,CAAC;EACtC,CAAC,EAAE,CAACN,aAAa,CAAC,CAAC;EAEnB,OAAOI,WAAW;AACpB,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
@@ -1,6 +1,13 @@
1
1
  import type { StorageFileStat, StorageScope } from './types/main';
2
2
  declare const RNCloudStorage: {
3
+ googleDriveAccessToken: string;
3
4
  setGoogleDriveAccessToken: (accessToken: string) => string;
5
+ /**
6
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
7
+ * unavailable right after app launch or if the user is not logged in.
8
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
9
+ */
10
+ isCloudAvailable: () => Promise<boolean>;
4
11
  /**
5
12
  * Tests whether or not the file at the given path exists.
6
13
  * @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;;6CAEuB,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"}
@@ -5,6 +5,7 @@ declare class GoogleDriveApiClient implements NativeRNCloudStorage {
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,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;IAED,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"}
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,CAA0D;IAEzG,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: (iCloudTimeout?: 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,qCAwB/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;
@@ -23,5 +23,6 @@ export default interface NativeRNCloudStorage {
23
23
  readFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<string>;
24
24
  deleteFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<void>;
25
25
  statFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<NativeRNCloudStorageFileStat>;
26
+ isCloudAvailable: () => Promise<boolean>;
26
27
  }
27
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;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;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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-cloud-storage",
3
- "version": "0.3.1",
4
- "description": "test",
3
+ "version": "0.4.1",
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",
@@ -4,7 +4,18 @@ import type { StorageFileStat, StorageScope } from './types/main';
4
4
 
5
5
  const nativeInstance = createRNCloudStorage();
6
6
  const RNCloudStorage = {
7
+ googleDriveAccessToken: GoogleDriveApiClient.accessToken,
7
8
  setGoogleDriveAccessToken: (accessToken: string) => (GoogleDriveApiClient.accessToken = accessToken),
9
+
10
+ /**
11
+ * Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
12
+ * unavailable right after app launch or if the user is not logged in.
13
+ * @returns A promise that resolves to true if the cloud storage is available, false otherwise.
14
+ */
15
+ isCloudAvailable: async (): Promise<boolean> => {
16
+ return nativeInstance.isCloudAvailable();
17
+ },
18
+
8
19
  /**
9
20
  * Tests whether or not the file at the given path exists.
10
21
  * @param path The path to test.
@@ -16,7 +16,7 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
16
16
  return new Proxy(this, {
17
17
  // before calling any function, check if the access token is set
18
18
  get(target: GoogleDriveApiClient, prop: keyof GoogleDriveApiClient) {
19
- if (typeof target[prop] === 'function') {
19
+ if (typeof target[prop] === 'function' && prop !== 'isCloudAvailable') {
20
20
  if (!GoogleDriveApiClient.drive.accessToken) {
21
21
  throw new NativeStorageError(
22
22
  `Google Drive access token is not set, cannot call function ${prop.toString()}`,
@@ -39,11 +39,13 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
39
39
  return GoogleDriveApiClient.drive.accessToken;
40
40
  }
41
41
 
42
+ public isCloudAvailable: () => Promise<boolean> = async () => !!GoogleDriveApiClient.accessToken?.length;
43
+
42
44
  private getRootDirectory(scope: NativeRNCloudStorageScope): 'drive' | 'appDataFolder' {
43
45
  switch (scope) {
44
46
  case 'documents':
45
47
  return 'drive';
46
- case 'hidden':
48
+ case 'app_data':
47
49
  return 'appDataFolder';
48
50
  }
49
51
  }
@@ -159,7 +161,7 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
159
161
  name: filename,
160
162
  parents: parentDirectoryId
161
163
  ? [parentDirectoryId]
162
- : scope === 'hidden'
164
+ : scope === 'app_data'
163
165
  ? [this.getRootDirectory(scope)]
164
166
  : undefined,
165
167
  });
@@ -0,0 +1,30 @@
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 = (iCloudTimeout = 10) => {
7
+ const [isAvailable, setIsAvailable] = useState(false);
8
+
9
+ useEffect(() => {
10
+ const interval = setInterval(async () => {
11
+ const newIsAvailable = await RNCloudStorage.isCloudAvailable();
12
+ setIsAvailable(newIsAvailable);
13
+ if (Platform.OS === 'ios' && newIsAvailable) {
14
+ console.log('Stopped because iCloud became available');
15
+ clearInterval(interval);
16
+ }
17
+ }, 500);
18
+
19
+ if (Platform.OS === 'ios') {
20
+ setTimeout(() => {
21
+ console.log('Stopped because of timeout');
22
+ clearInterval(interval);
23
+ }, iCloudTimeout * 1000);
24
+ }
25
+
26
+ return () => clearInterval(interval);
27
+ }, [iCloudTimeout]);
28
+
29
+ return isAvailable;
30
+ };
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;
@@ -26,4 +26,5 @@ export default interface NativeRNCloudStorage {
26
26
  readFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<string>;
27
27
  deleteFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<void>;
28
28
  statFile: (path: string, scope: NativeRNCloudStorageScope) => Promise<NativeRNCloudStorageFileStat>;
29
+ isCloudAvailable: () => Promise<boolean>;
29
30
  }