react-native-cloud-storage 0.4.2 → 0.6.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.
- package/ios/CloudStorage.m +1 -0
- package/ios/CloudStorage.swift +22 -0
- package/lib/commonjs/RNCloudStorage.js +19 -0
- package/lib/commonjs/RNCloudStorage.js.map +1 -1
- package/lib/commonjs/google-drive/index.js +108 -23
- package/lib/commonjs/google-drive/index.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/native.js +3 -0
- package/lib/commonjs/types/native.js.map +1 -1
- package/lib/module/RNCloudStorage.js +19 -0
- package/lib/module/RNCloudStorage.js.map +1 -1
- package/lib/module/google-drive/index.js +109 -24
- package/lib/module/google-drive/index.js.map +1 -1
- package/lib/module/index.js +1 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/types/native.js +3 -0
- package/lib/module/types/native.js.map +1 -1
- package/lib/typescript/RNCloudStorage.d.ts +14 -0
- package/lib/typescript/RNCloudStorage.d.ts.map +1 -1
- package/lib/typescript/google-drive/index.d.ts +14 -2
- package/lib/typescript/google-drive/index.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types/native.d.ts +4 -0
- package/lib/typescript/types/native.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/RNCloudStorage.ts +20 -0
- package/src/google-drive/index.ts +133 -23
- package/src/index.ts +1 -2
- package/src/types/native.ts +4 -0
package/ios/CloudStorage.m
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
RCT_EXTERN_METHOD(fileExists:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
|
|
6
6
|
RCT_EXTERN_METHOD(createFile:(NSString *)path withData:(NSString *)data withScope:(NSString *)scope withOverwrite:(BOOL)overwrite withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
|
|
7
|
+
RCT_EXTERN_METHOD(createDirectory:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
|
|
7
8
|
RCT_EXTERN_METHOD(readFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
|
|
8
9
|
RCT_EXTERN_METHOD(deleteFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
|
|
9
10
|
RCT_EXTERN_METHOD(statFile:(NSString *)path withScope:(NSString *)scope withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject)
|
package/ios/CloudStorage.swift
CHANGED
|
@@ -37,6 +37,28 @@ class CloudStorage: NSObject {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
@objc(createDirectory:withScope:withResolver:withRejecter:)
|
|
41
|
+
func createDirectory(path: String, scope: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
|
|
42
|
+
let fileManager = FileManager.default
|
|
43
|
+
let directory = getDirectory(scope)
|
|
44
|
+
if (directory == nil) {
|
|
45
|
+
reject("ERR_NO_DIRECTORY_FOUND", "No directory found for scope \(scope)", nil)
|
|
46
|
+
return
|
|
47
|
+
}
|
|
48
|
+
let dirPath = directory?.appendingPathComponent(path)
|
|
49
|
+
let dirExists = fileManager.fileExists(atPath: dirPath!.path)
|
|
50
|
+
if (dirExists) {
|
|
51
|
+
reject("ERR_FILE_EXISTS", "Directory \(path) already exists", nil)
|
|
52
|
+
return
|
|
53
|
+
}
|
|
54
|
+
do {
|
|
55
|
+
try fileManager.createDirectory(at: dirPath!, withIntermediateDirectories: true, attributes: nil)
|
|
56
|
+
resolve(true)
|
|
57
|
+
} catch {
|
|
58
|
+
reject("ERR_WRITE_ERROR", "Error creating directory \(path)", error)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
40
62
|
@objc(readFile:withScope:withResolver:withRejecter:)
|
|
41
63
|
func readFile(path: String, scope: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
|
|
42
64
|
let fileManager = FileManager.default
|
|
@@ -6,11 +6,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _createRNCloudStorage = _interopRequireDefault(require("./createRNCloudStorage"));
|
|
8
8
|
var _googleDrive = _interopRequireDefault(require("./google-drive"));
|
|
9
|
+
var _reactNative = require("react-native");
|
|
9
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
11
|
const nativeInstance = (0, _createRNCloudStorage.default)();
|
|
11
12
|
const RNCloudStorage = {
|
|
12
13
|
getGoogleDriveAccessToken: () => _googleDrive.default.accessToken,
|
|
13
14
|
setGoogleDriveAccessToken: accessToken => _googleDrive.default.accessToken = accessToken,
|
|
15
|
+
setThrowOnFilesWithSameName: enable => _googleDrive.default.throwOnFilesWithSameName = enable,
|
|
16
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
17
|
+
subscribeToFilesWithSameName: _reactNative.Platform.OS === 'ios' ?
|
|
18
|
+
// @ts-expect-error - subscriber is undefined; just a mock
|
|
19
|
+
subscriber => ({
|
|
20
|
+
remove: () => {}
|
|
21
|
+
}) : nativeInstance.subscribeToFilesWithSameName.bind(nativeInstance),
|
|
22
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
23
|
+
|
|
14
24
|
/**
|
|
15
25
|
* Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
|
|
16
26
|
* unavailable right after app launch or if the user is not logged in.
|
|
@@ -38,6 +48,15 @@ const RNCloudStorage = {
|
|
|
38
48
|
writeFile: (path, data, scope) => {
|
|
39
49
|
return nativeInstance.createFile(path, data, scope, true);
|
|
40
50
|
},
|
|
51
|
+
/**
|
|
52
|
+
* Creates a new directory at the given path.
|
|
53
|
+
* @param path The directory to create.
|
|
54
|
+
* @param scope The directory scope the path is in.
|
|
55
|
+
* @returns A promise that resolves when the directory has been created.
|
|
56
|
+
*/
|
|
57
|
+
mkdir: (path, scope) => {
|
|
58
|
+
return nativeInstance.createDirectory(path, scope);
|
|
59
|
+
},
|
|
41
60
|
/**
|
|
42
61
|
* Reads the contents of the file at the given path.
|
|
43
62
|
* @param path The file to read.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_createRNCloudStorage","_interopRequireDefault","require","_googleDrive","obj","__esModule","default","nativeInstance","createRNCloudStorage","RNCloudStorage","getGoogleDriveAccessToken","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;
|
|
1
|
+
{"version":3,"names":["_createRNCloudStorage","_interopRequireDefault","require","_googleDrive","_reactNative","obj","__esModule","default","nativeInstance","createRNCloudStorage","RNCloudStorage","getGoogleDriveAccessToken","GoogleDriveApiClient","accessToken","setGoogleDriveAccessToken","setThrowOnFilesWithSameName","enable","throwOnFilesWithSameName","subscribeToFilesWithSameName","Platform","OS","subscriber","remove","bind","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","mkdir","createDirectory","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;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAAwC,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExC,MAAMG,cAAc,GAAG,IAAAC,6BAAoB,GAAE;AAE7C,MAAMC,cAAc,GAAG;EACrBC,yBAAyB,EAAEA,CAAA,KAAMC,oBAAoB,CAACC,WAAW;EACjEC,yBAAyB,EAAGD,WAAmB,IAAMD,oBAAoB,CAACC,WAAW,GAAGA,WAAY;EACpGE,2BAA2B,EAAGC,MAAe,IAAMJ,oBAAoB,CAACK,wBAAwB,GAAGD,MAAO;EAC1G;EACAE,4BAA4B,EAC1BC,qBAAQ,CAACC,EAAE,KAAK,KAAK;EACjB;EACCC,UAA4E,KAAM;IAAEC,MAAM,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAC,CAAC,GACvGd,cAAc,CAA0BU,4BAA4B,CAACK,IAAI,CAACf,cAAc,CAAC;EAChG;;EAEA;AACF;AACA;AACA;AACA;EACEgB,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOhB,cAAc,CAACgB,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAwB,KAAuB;IACpE,OAAOnB,cAAc,CAACoB,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAwB,KAAoB;IAClF,OAAOnB,cAAc,CAACuB,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,KAAK,EAAEA,CAACN,IAAY,EAAEC,KAAwB,KAAoB;IAChE,OAAOnB,cAAc,CAACyB,eAAe,CAACP,IAAI,EAAEC,KAAK,CAAC;EACpD,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEO,QAAQ,EAAEA,CAACR,IAAY,EAAEC,KAAwB,KAAsB;IACrE,OAAOnB,cAAc,CAAC0B,QAAQ,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,MAAM,EAAEA,CAACT,IAAY,EAAEC,KAAwB,KAAoB;IACjE,OAAOnB,cAAc,CAAC4B,UAAU,CAACV,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEU,IAAI,EAAE,MAAAA,CAAOX,IAAY,EAAEC,KAAwB,KAAoC;IACrF,MAAMW,MAAM,GAAG,MAAM9B,cAAc,CAAC+B,QAAQ,CAACb,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGW,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,GAEarC,cAAc;AAAAsC,OAAA,CAAAzC,OAAA,GAAAwC,QAAA"}
|
|
@@ -10,12 +10,15 @@ var _CloudStorageError = _interopRequireDefault(require("../utils/CloudStorageEr
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
class GoogleDriveApiClient {
|
|
12
12
|
static drive = new _reactNativeGoogleDriveApiWrapperJs.GDrive();
|
|
13
|
+
static throwOnFilesWithSameName = false;
|
|
13
14
|
constructor() {
|
|
15
|
+
this.filesWithSameNameSubscribers = [];
|
|
14
16
|
GoogleDriveApiClient.drive.fetchTimeout = 3000;
|
|
15
17
|
return new Proxy(this, {
|
|
16
18
|
// before calling any function, check if the access token is set
|
|
17
19
|
get(target, prop) {
|
|
18
|
-
|
|
20
|
+
const allowedFunctions = ['isCloudAvailable', 'subscribeToFilesWithSameName'];
|
|
21
|
+
if (typeof target[prop] === 'function' && !allowedFunctions.includes(prop.toString())) {
|
|
19
22
|
if (!GoogleDriveApiClient.drive.accessToken) {
|
|
20
23
|
throw new _CloudStorageError.default(`Google Drive access token is not set, cannot call function ${prop.toString()}`, _native.CloudStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
|
|
21
24
|
}
|
|
@@ -32,6 +35,14 @@ class GoogleDriveApiClient {
|
|
|
32
35
|
static get accessToken() {
|
|
33
36
|
return GoogleDriveApiClient.drive.accessToken;
|
|
34
37
|
}
|
|
38
|
+
subscribeToFilesWithSameName(subscriber) {
|
|
39
|
+
this.filesWithSameNameSubscribers.push(subscriber);
|
|
40
|
+
return {
|
|
41
|
+
remove: () => {
|
|
42
|
+
this.filesWithSameNameSubscribers = this.filesWithSameNameSubscribers.filter(s => s !== subscriber);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
35
46
|
isCloudAvailable = async () => {
|
|
36
47
|
var _GoogleDriveApiClient;
|
|
37
48
|
return !!((_GoogleDriveApiClient = GoogleDriveApiClient.accessToken) !== null && _GoogleDriveApiClient !== void 0 && _GoogleDriveApiClient.length);
|
|
@@ -92,27 +103,60 @@ class GoogleDriveApiClient {
|
|
|
92
103
|
});
|
|
93
104
|
return files.files;
|
|
94
105
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
and the first parent has an id which does not exist in the files array */
|
|
106
|
-
file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
|
|
106
|
+
checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId) {
|
|
107
|
+
let possibleFiles;
|
|
108
|
+
if (parentDirectoryId) {
|
|
109
|
+
possibleFiles = files.filter(f => f.name === filename && f.parents[0] === parentDirectoryId);
|
|
110
|
+
} else {
|
|
111
|
+
possibleFiles = files.filter(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
|
|
112
|
+
}
|
|
113
|
+
if (possibleFiles.length <= 1) return;
|
|
114
|
+
if (GoogleDriveApiClient.throwOnFilesWithSameName) {
|
|
115
|
+
throw new _CloudStorageError.default(`Multiple files with the same name found at path ${path}: ${possibleFiles.map(f => f.id).join(', ')}`, _native.CloudStorageErrorCode.MULTIPLE_FILES_SAME_NAME);
|
|
107
116
|
} else {
|
|
108
|
-
|
|
117
|
+
this.filesWithSameNameSubscribers.forEach(s => s({
|
|
118
|
+
path,
|
|
119
|
+
fileIds: possibleFiles.map(f => f.id)
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async getFileId(path, scope) {
|
|
124
|
+
let throwIfDirectory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
125
|
+
try {
|
|
126
|
+
const files = await this.listFiles(scope);
|
|
127
|
+
const {
|
|
128
|
+
directories,
|
|
129
|
+
filename
|
|
130
|
+
} = this.resolvePathToDirectories(path);
|
|
131
|
+
const parentDirectoryId = this.findParentDirectoryId(files, directories);
|
|
132
|
+
let file;
|
|
133
|
+
if (parentDirectoryId === null) {
|
|
134
|
+
this.checkIfMultipleFilesWithSameName(path, files, filename, null);
|
|
135
|
+
/* when the file is supposed to be in the root directory, we need to get the file where the name is the filename
|
|
136
|
+
and the first parent has an id which does not exist in the files array */
|
|
137
|
+
file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
|
|
138
|
+
} else {
|
|
139
|
+
this.checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId);
|
|
140
|
+
file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
|
|
141
|
+
}
|
|
142
|
+
if (!file) throw new _CloudStorageError.default(`File not found`, _native.CloudStorageErrorCode.FILE_NOT_FOUND);
|
|
143
|
+
if (file.mimeType === _reactNativeGoogleDriveApiWrapperJs.MimeTypes.FOLDER && throwIfDirectory) {
|
|
144
|
+
throw new _CloudStorageError.default(`Path ${path} is a directory`, _native.CloudStorageErrorCode.PATH_IS_DIRECTORY);
|
|
145
|
+
}
|
|
146
|
+
return file.id;
|
|
147
|
+
} catch (e) {
|
|
148
|
+
var _e$json, _e$json$error;
|
|
149
|
+
if (e instanceof _reactNativeGoogleDriveApiWrapperJs.HttpError && ((_e$json = e.json) === null || _e$json === void 0 ? void 0 : (_e$json$error = _e$json.error) === null || _e$json$error === void 0 ? void 0 : _e$json$error.status) === 'UNAUTHENTICATED') {
|
|
150
|
+
throw new _CloudStorageError.default(`Could not authenticate with Google Drive`, _native.CloudStorageErrorCode.AUTHENTICATION_FAILED, e.json);
|
|
151
|
+
} else {
|
|
152
|
+
if (e instanceof _CloudStorageError.default) throw e;
|
|
153
|
+
throw new _CloudStorageError.default(`Could not get file id for path ${path}`, _native.CloudStorageErrorCode.UNKNOWN, e);
|
|
154
|
+
}
|
|
109
155
|
}
|
|
110
|
-
if (!file) throw new _CloudStorageError.default(`File not found`, _native.CloudStorageErrorCode.FILE_NOT_FOUND);
|
|
111
|
-
return file.id;
|
|
112
156
|
}
|
|
113
157
|
async fileExists(path, scope) {
|
|
114
158
|
try {
|
|
115
|
-
await this.getFileId(path, scope);
|
|
159
|
+
await this.getFileId(path, scope, false);
|
|
116
160
|
return true;
|
|
117
161
|
} catch (e) {
|
|
118
162
|
if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) return false;else throw e;
|
|
@@ -124,7 +168,22 @@ class GoogleDriveApiClient {
|
|
|
124
168
|
try {
|
|
125
169
|
fileId = await this.getFileId(path, scope);
|
|
126
170
|
} catch (e) {
|
|
127
|
-
|
|
171
|
+
if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
172
|
+
/* do nothing, simply create the file */
|
|
173
|
+
} else {
|
|
174
|
+
throw e;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
try {
|
|
179
|
+
await this.getFileId(path, scope);
|
|
180
|
+
throw new _CloudStorageError.default(`File ${path} already exists`, _native.CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
181
|
+
} catch (e) {
|
|
182
|
+
if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
183
|
+
/* do nothing, simply create the file */
|
|
184
|
+
} else {
|
|
185
|
+
throw e;
|
|
186
|
+
}
|
|
128
187
|
}
|
|
129
188
|
}
|
|
130
189
|
const uploader = GoogleDriveApiClient.drive.files.newMultipartUploader().setData(data, _reactNativeGoogleDriveApiWrapperJs.MimeTypes.TEXT);
|
|
@@ -142,6 +201,33 @@ class GoogleDriveApiClient {
|
|
|
142
201
|
}
|
|
143
202
|
await uploader.execute();
|
|
144
203
|
}
|
|
204
|
+
async createDirectory(path, scope) {
|
|
205
|
+
try {
|
|
206
|
+
await this.getFileId(path, scope);
|
|
207
|
+
throw new _CloudStorageError.default(`File ${path} already exists`, _native.CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
208
|
+
} catch (e) {
|
|
209
|
+
if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
210
|
+
/* do nothing, simply create the file */
|
|
211
|
+
} else if (e instanceof _CloudStorageError.default && e.code === _native.CloudStorageErrorCode.PATH_IS_DIRECTORY) {
|
|
212
|
+
throw new _CloudStorageError.default(`Directory ${path} already exists`, _native.CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
213
|
+
} else {
|
|
214
|
+
throw e;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const uploader = GoogleDriveApiClient.drive.files.newMetadataOnlyUploader();
|
|
218
|
+
const files = await this.listFiles(scope);
|
|
219
|
+
const {
|
|
220
|
+
directories,
|
|
221
|
+
filename
|
|
222
|
+
} = this.resolvePathToDirectories(path);
|
|
223
|
+
const parentDirectoryId = this.findParentDirectoryId(files, directories);
|
|
224
|
+
uploader.setRequestBody({
|
|
225
|
+
name: filename,
|
|
226
|
+
mimeType: _reactNativeGoogleDriveApiWrapperJs.MimeTypes.FOLDER,
|
|
227
|
+
parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
|
|
228
|
+
});
|
|
229
|
+
await uploader.execute();
|
|
230
|
+
}
|
|
145
231
|
async readFile(path, scope) {
|
|
146
232
|
const fileId = await this.getFileId(path, scope);
|
|
147
233
|
const content = await GoogleDriveApiClient.drive.files.getText(fileId);
|
|
@@ -152,10 +238,10 @@ class GoogleDriveApiClient {
|
|
|
152
238
|
await GoogleDriveApiClient.drive.files.delete(fileId);
|
|
153
239
|
}
|
|
154
240
|
async statFile(path, scope) {
|
|
155
|
-
const fileId = await this.getFileId(path, scope);
|
|
156
|
-
const file = await GoogleDriveApiClient.drive.files.get(fileId, {
|
|
241
|
+
const fileId = await this.getFileId(path, scope, false);
|
|
242
|
+
const file = await (await GoogleDriveApiClient.drive.files.get(fileId, {
|
|
157
243
|
fields: 'id,kind,mimeType,name,parents,spaces,size,createdTime,modifiedTime'
|
|
158
|
-
});
|
|
244
|
+
})).json();
|
|
159
245
|
return {
|
|
160
246
|
size: file.size ?? 0,
|
|
161
247
|
birthtimeMs: new Date(file.createdTime).getTime(),
|
|
@@ -165,6 +251,5 @@ class GoogleDriveApiClient {
|
|
|
165
251
|
};
|
|
166
252
|
}
|
|
167
253
|
}
|
|
168
|
-
|
|
169
|
-
exports.default = _default;
|
|
254
|
+
exports.default = GoogleDriveApiClient;
|
|
170
255
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeGoogleDriveApiWrapperJs","require","_native","_CloudStorageError","_interopRequireDefault","obj","__esModule","default","GoogleDriveApiClient","drive","GDrive","constructor","fetchTimeout","Proxy","get","target","prop","accessToken","CloudStorageError","toString","CloudStorageErrorCode","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":"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"}
|
|
1
|
+
{"version":3,"names":["_reactNativeGoogleDriveApiWrapperJs","require","_native","_CloudStorageError","_interopRequireDefault","obj","__esModule","default","GoogleDriveApiClient","drive","GDrive","throwOnFilesWithSameName","constructor","filesWithSameNameSubscribers","fetchTimeout","Proxy","get","target","prop","allowedFunctions","includes","toString","accessToken","CloudStorageError","CloudStorageErrorCode","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","subscribeToFilesWithSameName","subscriber","push","remove","filter","s","isCloudAvailable","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","f","mimeType","MimeTypes","FOLDER","name","topDirectoryId","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","checkIfMultipleFilesWithSameName","parentDirectoryId","possibleFiles","f2","map","join","MULTIPLE_FILES_SAME_NAME","forEach","fileIds","getFileId","throwIfDirectory","arguments","undefined","file","FILE_NOT_FOUND","PATH_IS_DIRECTORY","e","_e$json","_e$json$error","HttpError","json","error","status","AUTHENTICATION_FAILED","UNKNOWN","fileExists","code","createFile","data","overwrite","fileId","FILE_ALREADY_EXISTS","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","execute","createDirectory","newMetadataOnlyUploader","readFile","content","getText","deleteFile","delete","statFile","size","birthtimeMs","Date","createdTime","getTime","mtimeMs","modifiedTime","isDirectory","isFile","exports"],"sourceRoot":"../../../src","sources":["google-drive/index.ts"],"mappings":";;;;;;AAAA,IAAAA,mCAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAMA,IAAAE,kBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA2D,SAAAG,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5C,MAAMG,oBAAoB,CAAiC;EACxE,OAAeC,KAAK,GAAW,IAAIC,0CAAM,EAAE;EAC3C,OAAcC,wBAAwB,GAAG,KAAK;EAG9CC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,4BAA4B,GAAG,EAAE;IACtCL,oBAAoB,CAACC,KAAK,CAACK,YAAY,GAAG,IAAI;IAC9C,OAAO,IAAIC,KAAK,CAAC,IAAI,EAAE;MACrB;MACAC,GAAGA,CAACC,MAA4B,EAAEC,IAAgC,EAAE;QAClE,MAAMC,gBAAgB,GAAG,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;QAC7E,IAAI,OAAOF,MAAM,CAACC,IAAI,CAAC,KAAK,UAAU,IAAI,CAACC,gBAAgB,CAACC,QAAQ,CAACF,IAAI,CAACG,QAAQ,EAAE,CAAC,EAAE;UACrF,IAAI,CAACb,oBAAoB,CAACC,KAAK,CAACa,WAAW,EAAE;YAC3C,MAAM,IAAIC,0BAAiB,CACxB,8DAA6DL,IAAI,CAACG,QAAQ,EAAG,EAAC,EAC/EG,6BAAqB,CAACC,iCAAiC,CACxD;UACH;QACF;QAEA,OAAOR,MAAM,CAACC,IAAI,CAAC;MACrB;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,WAAkBI,WAAWA,CAACA,WAA+B,EAAE;IAC7Dd,oBAAoB,CAACC,KAAK,CAACa,WAAW,GAAGA,WAAW;EACtD;EAEA,WAAkBA,WAAWA,CAAA,EAAuB;IAClD,OAAOd,oBAAoB,CAACC,KAAK,CAACa,WAAW;EAC/C;EAEOI,4BAA4BA,CAACC,UAA4E,EAE9G;IACA,IAAI,CAACd,4BAA4B,CAACe,IAAI,CAACD,UAAU,CAAC;IAElD,OAAO;MACLE,MAAM,EAAEA,CAAA,KAAM;QACZ,IAAI,CAAChB,4BAA4B,GAAG,IAAI,CAACA,4BAA4B,CAACiB,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKJ,UAAU,CAAC;MACvG;IACF,CAAC;EACH;EAEOK,gBAAgB,GAA2B,MAAAA,CAAA;IAAA,IAAAC,qBAAA;IAAA,OAAY,CAAC,GAAAA,qBAAA,GAACzB,oBAAoB,CAACc,WAAW,cAAAW,qBAAA,eAAhCA,qBAAA,CAAkCC,MAAM;EAAA;EAEhGC,gBAAgBA,CAACC,KAAqC,EAA6B;IACzF,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,CACjClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACC,QAAQ,KAAKC,6CAAS,CAACC,MAAM,CAAC,CAC9CxB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACI,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,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,IAAIjC,0BAAiB,CACxB,0CAAyC0B,aAAa,CAAC,CAAC,CAAE,EAAC,EAC5DzB,6BAAqB,CAACqC,mBAAmB,CAC1C;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,CAAER,CAAC,IAAKA,CAAC,CAACM,EAAE,KAAKK,kBAAkB,CAAC;MACvE,IAAI,CAACE,gBAAgB,EACnB,MAAM,IAAIzC,0BAAiB,CACxB,oCAAmCuC,kBAAmB,EAAC,EACxDtC,6BAAqB,CAACqC,mBAAmB,CAC1C;MACH,MAAMI,aAAa,GAAGjB,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKN,aAAa,CAACc,CAAC,CAAC,IAAIZ,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKE,kBAAkB,CAAC;MAC5G,IAAI,CAACG,aAAa,EAChB,MAAM,IAAI1C,0BAAiB,CACxB,sCAAqC0B,aAAa,CAACc,CAAC,CAAE,EAAC,EACxDvC,6BAAqB,CAACqC,mBAAmB,CAC1C;MACHC,kBAAkB,GAAGG,aAAa,CAACR,EAAE;IACvC;IAEA,OAAOK,kBAAkB;EAC3B;EAEA,MAAcI,SAASA,CAAC9B,KAAqC,EAA8B;IACzF,MAAMY,KAAuC,GAAG,MAAMxC,oBAAoB,CAACC,KAAK,CAACuC,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;EAEQsB,gCAAgCA,CACtChC,IAAY,EACZU,KAAwB,EACxBF,QAAgB,EAChByB,iBAAgC,EAChC;IACA,IAAIC,aAAgC;IACpC,IAAID,iBAAiB,EAAE;MACrBC,aAAa,GAAGxB,KAAK,CAAClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAIK,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;IACjG,CAAC,MAAM;MACLC,aAAa,GAAGxB,KAAK,CAAClB,MAAM,CAAEqB,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAI,CAACE,KAAK,CAACW,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKN,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;IAC1G;IAEA,IAAIY,aAAa,CAACtC,MAAM,IAAI,CAAC,EAAE;IAE/B,IAAI1B,oBAAoB,CAACG,wBAAwB,EAAE;MACjD,MAAM,IAAIY,0BAAiB,CACxB,mDAAkDe,IAAK,KAAIkC,aAAa,CAACE,GAAG,CAAEvB,CAAC,IAAKA,CAAC,CAACM,EAAE,CAAC,CAACkB,IAAI,CAAC,IAAI,CAAE,EAAC,EACvGnD,6BAAqB,CAACoD,wBAAwB,CAC/C;IACH,CAAC,MAAM;MACL,IAAI,CAAC/D,4BAA4B,CAACgE,OAAO,CAAE9C,CAAC,IAAKA,CAAC,CAAC;QAAEO,IAAI;QAAEwC,OAAO,EAAEN,aAAa,CAACE,GAAG,CAAEvB,CAAC,IAAKA,CAAC,CAACM,EAAE;MAAE,CAAC,CAAC,CAAC;IACxG;EACF;EAEA,MAAcsB,SAASA,CACrBzC,IAAY,EACZF,KAAqC,EAEpB;IAAA,IADjB4C,gBAAgB,GAAAC,SAAA,CAAA/C,MAAA,QAAA+C,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;IAEvB,IAAI;MACF,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;MACxE,IAAIyC,IAAiC;MACrC,IAAIZ,iBAAiB,KAAK,IAAI,EAAE;QAC9B,IAAI,CAACD,gCAAgC,CAAChC,IAAI,EAAEU,KAAK,EAAEF,QAAQ,EAAE,IAAI,CAAC;QAClE;AACR;QACQqC,IAAI,GAAGnC,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAI,CAACE,KAAK,CAACW,IAAI,CAAEc,EAAE,IAAKA,EAAE,CAAChB,EAAE,KAAKN,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,CAAC,CAAC;MAC/F,CAAC,MAAM;QACL,IAAI,CAACU,gCAAgC,CAAChC,IAAI,EAAEU,KAAK,EAAEF,QAAQ,EAAEyB,iBAAiB,CAAC;QAC/EY,IAAI,GAAGnC,KAAK,CAACW,IAAI,CAAER,CAAC,IAAKA,CAAC,CAACI,IAAI,KAAKT,QAAQ,IAAIK,CAAC,CAACS,OAAO,CAAE,CAAC,CAAC,KAAKW,iBAAiB,CAAC;MACtF;MACA,IAAI,CAACY,IAAI,EAAE,MAAM,IAAI5D,0BAAiB,CAAE,gBAAe,EAAEC,6BAAqB,CAAC4D,cAAc,CAAC;MAC9F,IAAID,IAAI,CAAC/B,QAAQ,KAAKC,6CAAS,CAACC,MAAM,IAAI0B,gBAAgB,EAAE;QAC1D,MAAM,IAAIzD,0BAAiB,CAAE,QAAOe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6D,iBAAiB,CAAC;MACrG;MACA,OAAOF,IAAI,CAAC1B,EAAE;IAChB,CAAC,CAAC,OAAO6B,CAAU,EAAE;MAAA,IAAAC,OAAA,EAAAC,aAAA;MACnB,IAAIF,CAAC,YAAYG,6CAAS,IAAI,EAAAF,OAAA,GAAAD,CAAC,CAACI,IAAI,cAAAH,OAAA,wBAAAC,aAAA,GAAND,OAAA,CAAQI,KAAK,cAAAH,aAAA,uBAAbA,aAAA,CAAeI,MAAM,MAAK,iBAAiB,EAAE;QACzE,MAAM,IAAIrE,0BAAiB,CACxB,0CAAyC,EAC1CC,6BAAqB,CAACqE,qBAAqB,EAC3CP,CAAC,CAACI,IAAI,CACP;MACH,CAAC,MAAM;QACL,IAAIJ,CAAC,YAAY/D,0BAAiB,EAAE,MAAM+D,CAAC;QAC3C,MAAM,IAAI/D,0BAAiB,CAAE,kCAAiCe,IAAK,EAAC,EAAEd,6BAAqB,CAACsE,OAAO,EAAER,CAAC,CAAC;MACzG;IACF;EACF;EAEA,MAAMS,UAAUA,CAACzD,IAAY,EAAEF,KAAqC,EAAoB;IACtF,IAAI;MACF,MAAM,IAAI,CAAC2C,SAAS,CAACzC,IAAI,EAAEF,KAAK,EAAE,KAAK,CAAC;MACxC,OAAO,IAAI;IACb,CAAC,CAAC,OAAOkD,CAAM,EAAE;MACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE,OAAO,KAAK,CAAC,KAC/F,MAAME,CAAC;IACd;EACF;EAEA,MAAMW,UAAUA,CACd3D,IAAY,EACZ4D,IAAY,EACZ9D,KAAqC,EACrC+D,SAAkB,EACH;IACf,IAAIC,MAA0B;IAC9B,IAAID,SAAS,EAAE;MACb,IAAI;QACFC,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;MAC5C,CAAC,CAAC,OAAOkD,CAAM,EAAE;QACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE;UACrF;QAAA,CACD,MAAM;UACL,MAAME,CAAC;QACT;MACF;IACF,CAAC,MAAM;MACL,IAAI;QACF,MAAM,IAAI,CAACP,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;QACjC,MAAM,IAAIb,0BAAiB,CAAE,QAAOe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6E,mBAAmB,CAAC;MACvG,CAAC,CAAC,OAAOf,CAAM,EAAE;QACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE;UACrF;QAAA,CACD,MAAM;UACL,MAAME,CAAC;QACT;MACF;IACF;IAEA,MAAMgB,QAAQ,GAAG9F,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAACuD,oBAAoB,EAAE,CAACC,OAAO,CAACN,IAAI,EAAE7C,6CAAS,CAACoD,IAAI,CAAC;IACtG,IAAIL,MAAM,EAAEE,QAAQ,CAACI,mBAAmB,CAACN,MAAM,CAAC,CAAC,KAC5C;MACH,MAAMpD,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;MACxE4D,QAAQ,CAACK,cAAc,CAAC;QACtBpD,IAAI,EAAET,QAAQ;QACdc,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBnC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9B8C;MACN,CAAC,CAAC;IACJ;IACA,MAAMoB,QAAQ,CAACM,OAAO,EAAE;EAC1B;EAEA,MAAMC,eAAeA,CAACvE,IAAY,EAAEF,KAAqC,EAAiB;IACxF,IAAI;MACF,MAAM,IAAI,CAAC2C,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;MACjC,MAAM,IAAIb,0BAAiB,CAAE,QAAOe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6E,mBAAmB,CAAC;IACvG,CAAC,CAAC,OAAOf,CAAM,EAAE;MACf,IAAIA,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC4D,cAAc,EAAE;QACrF;MAAA,CACD,MAAM,IAAIE,CAAC,YAAY/D,0BAAiB,IAAI+D,CAAC,CAACU,IAAI,KAAKxE,6BAAqB,CAAC6D,iBAAiB,EAAE;QAC/F,MAAM,IAAI9D,0BAAiB,CAAE,aAAYe,IAAK,iBAAgB,EAAEd,6BAAqB,CAAC6E,mBAAmB,CAAC;MAC5G,CAAC,MAAM;QACL,MAAMf,CAAC;MACT;IACF;IAEA,MAAMgB,QAAQ,GAAG9F,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAAC8D,uBAAuB,EAAE;IAC3E,MAAM9D,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;IACxE4D,QAAQ,CAACK,cAAc,CAAC;MACtBpD,IAAI,EAAET,QAAQ;MACdM,QAAQ,EAAEC,6CAAS,CAACC,MAAM;MAC1BM,OAAO,EAAEW,iBAAiB,GACtB,CAACA,iBAAiB,CAAC,GACnBnC,KAAK,KAAK,UAAU,GACpB,CAAC,IAAI,CAACD,gBAAgB,CAACC,KAAK,CAAC,CAAC,GAC9B8C;IACN,CAAC,CAAC;IACF,MAAMoB,QAAQ,CAACM,OAAO,EAAE;EAC1B;EAEA,MAAMG,QAAQA,CAACzE,IAAY,EAAEF,KAAqC,EAAmB;IACnF,MAAMgE,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAM4E,OAAO,GAAG,MAAMxG,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAACiE,OAAO,CAACb,MAAM,CAAC;IACtE,OAAOY,OAAO;EAChB;EAEA,MAAME,UAAUA,CAAC5E,IAAY,EAAEF,KAAqC,EAAiB;IACnF,MAAMgE,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,CAAC;IAChD,MAAM5B,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAACmE,MAAM,CAACf,MAAM,CAAC;EACvD;EAEA,MAAMgB,QAAQA,CAAC9E,IAAY,EAAEF,KAAqC,EAA8C;IAC9G,MAAMgE,MAAM,GAAG,MAAM,IAAI,CAACrB,SAAS,CAACzC,IAAI,EAAEF,KAAK,EAAE,KAAK,CAAC;IACvD,MAAM+C,IAA6B,GAAG,MAAM,CAC1C,MAAM3E,oBAAoB,CAACC,KAAK,CAACuC,KAAK,CAAChC,GAAG,CAACoF,MAAM,EAAG;MAClD/B,MAAM,EAAE;IACV,CAAC,CAAC,EACFqB,IAAI,EAAE;IAER,OAAO;MACL2B,IAAI,EAAElC,IAAI,CAACkC,IAAI,IAAI,CAAC;MACpBC,WAAW,EAAE,IAAIC,IAAI,CAACpC,IAAI,CAACqC,WAAW,CAAE,CAACC,OAAO,EAAE;MAClDC,OAAO,EAAE,IAAIH,IAAI,CAACpC,IAAI,CAACwC,YAAY,CAAE,CAACF,OAAO,EAAE;MAC/CG,WAAW,EAAEzC,IAAI,CAAC/B,QAAQ,KAAKC,6CAAS,CAACC,MAAM;MAC/CuE,MAAM,EAAE1C,IAAI,CAAC/B,QAAQ,KAAKC,6CAAS,CAACC;IACtC,CAAC;EACH;AACF;AAACwE,OAAA,CAAAvH,OAAA,GAAAC,oBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_RNCloudStorage","_interopRequireDefault","require","_native","_main","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useCloudFile","_useIsCloudAvailable","_CloudStorageError","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,kBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AAA0D,SAAAD,uBAAAmB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,
|
|
1
|
+
{"version":3,"names":["_RNCloudStorage","_interopRequireDefault","require","_native","_main","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useCloudFile","_useIsCloudAvailable","_CloudStorageError","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,kBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AAA0D,SAAAD,uBAAAmB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAG3CC,uBAAc;AAAAX,OAAA,CAAAS,OAAA,GAAAC,QAAA"}
|
|
@@ -6,8 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.CloudStorageErrorCode = void 0;
|
|
7
7
|
let CloudStorageErrorCode = /*#__PURE__*/function (CloudStorageErrorCode) {
|
|
8
8
|
CloudStorageErrorCode["FILE_NOT_FOUND"] = "ERR_FILE_NOT_FOUND";
|
|
9
|
+
CloudStorageErrorCode["PATH_IS_DIRECTORY"] = "ERR_PATH_IS_DIRECTORY";
|
|
9
10
|
CloudStorageErrorCode["DIRECTORY_NOT_FOUND"] = "ERR_NO_DIRECTORY_FOUND";
|
|
10
11
|
CloudStorageErrorCode["FILE_ALREADY_EXISTS"] = "ERR_FILE_EXISTS";
|
|
12
|
+
CloudStorageErrorCode["MULTIPLE_FILES_SAME_NAME"] = "ERR_MULTIPLE_FILES_SAME_NAME";
|
|
13
|
+
CloudStorageErrorCode["AUTHENTICATION_FAILED"] = "ERR_AUTHENTICATION_FAILED";
|
|
11
14
|
CloudStorageErrorCode["WRITE_ERROR"] = "ERR_WRITE_ERROR";
|
|
12
15
|
CloudStorageErrorCode["READ_ERROR"] = "ERR_READ_ERROR";
|
|
13
16
|
CloudStorageErrorCode["DELETE_ERROR"] = "ERR_DELETE_ERROR";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CloudStorageErrorCode","exports"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":";;;;;;IAUYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAAAC,OAAA,CAAAD,qBAAA,GAAAA,qBAAA"}
|
|
1
|
+
{"version":3,"names":["CloudStorageErrorCode","exports"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":";;;;;;IAUYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAAAC,OAAA,CAAAD,qBAAA,GAAAA,qBAAA"}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import createRNCloudStorage from './createRNCloudStorage';
|
|
2
2
|
import GoogleDriveApiClient from './google-drive';
|
|
3
|
+
import { Platform } from 'react-native';
|
|
3
4
|
const nativeInstance = createRNCloudStorage();
|
|
4
5
|
const RNCloudStorage = {
|
|
5
6
|
getGoogleDriveAccessToken: () => GoogleDriveApiClient.accessToken,
|
|
6
7
|
setGoogleDriveAccessToken: accessToken => GoogleDriveApiClient.accessToken = accessToken,
|
|
8
|
+
setThrowOnFilesWithSameName: enable => GoogleDriveApiClient.throwOnFilesWithSameName = enable,
|
|
9
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
10
|
+
subscribeToFilesWithSameName: Platform.OS === 'ios' ?
|
|
11
|
+
// @ts-expect-error - subscriber is undefined; just a mock
|
|
12
|
+
subscriber => ({
|
|
13
|
+
remove: () => {}
|
|
14
|
+
}) : nativeInstance.subscribeToFilesWithSameName.bind(nativeInstance),
|
|
15
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
16
|
+
|
|
7
17
|
/**
|
|
8
18
|
* Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
|
|
9
19
|
* unavailable right after app launch or if the user is not logged in.
|
|
@@ -31,6 +41,15 @@ const RNCloudStorage = {
|
|
|
31
41
|
writeFile: (path, data, scope) => {
|
|
32
42
|
return nativeInstance.createFile(path, data, scope, true);
|
|
33
43
|
},
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new directory at the given path.
|
|
46
|
+
* @param path The directory to create.
|
|
47
|
+
* @param scope The directory scope the path is in.
|
|
48
|
+
* @returns A promise that resolves when the directory has been created.
|
|
49
|
+
*/
|
|
50
|
+
mkdir: (path, scope) => {
|
|
51
|
+
return nativeInstance.createDirectory(path, scope);
|
|
52
|
+
},
|
|
34
53
|
/**
|
|
35
54
|
* Reads the contents of the file at the given path.
|
|
36
55
|
* @param path The file to read.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createRNCloudStorage","GoogleDriveApiClient","nativeInstance","RNCloudStorage","getGoogleDriveAccessToken","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;
|
|
1
|
+
{"version":3,"names":["createRNCloudStorage","GoogleDriveApiClient","Platform","nativeInstance","RNCloudStorage","getGoogleDriveAccessToken","accessToken","setGoogleDriveAccessToken","setThrowOnFilesWithSameName","enable","throwOnFilesWithSameName","subscribeToFilesWithSameName","OS","subscriber","remove","bind","isCloudAvailable","exists","path","scope","fileExists","writeFile","data","createFile","mkdir","createDirectory","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;AAEjD,SAASC,QAAQ,QAAQ,cAAc;AAEvC,MAAMC,cAAc,GAAGH,oBAAoB,EAAE;AAE7C,MAAMI,cAAc,GAAG;EACrBC,yBAAyB,EAAEA,CAAA,KAAMJ,oBAAoB,CAACK,WAAW;EACjEC,yBAAyB,EAAGD,WAAmB,IAAML,oBAAoB,CAACK,WAAW,GAAGA,WAAY;EACpGE,2BAA2B,EAAGC,MAAe,IAAMR,oBAAoB,CAACS,wBAAwB,GAAGD,MAAO;EAC1G;EACAE,4BAA4B,EAC1BT,QAAQ,CAACU,EAAE,KAAK,KAAK;EACjB;EACCC,UAA4E,KAAM;IAAEC,MAAM,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAC,CAAC,GACvGX,cAAc,CAA0BQ,4BAA4B,CAACI,IAAI,CAACZ,cAAc,CAAC;EAChG;;EAEA;AACF;AACA;AACA;AACA;EACEa,gBAAgB,EAAE,MAAAA,CAAA,KAA8B;IAC9C,OAAOb,cAAc,CAACa,gBAAgB,EAAE;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAEA,CAACC,IAAY,EAAEC,KAAwB,KAAuB;IACpE,OAAOhB,cAAc,CAACiB,UAAU,CAACF,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,SAAS,EAAEA,CAACH,IAAY,EAAEI,IAAY,EAAEH,KAAwB,KAAoB;IAClF,OAAOhB,cAAc,CAACoB,UAAU,CAACL,IAAI,EAAEI,IAAI,EAAEH,KAAK,EAAE,IAAI,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEK,KAAK,EAAEA,CAACN,IAAY,EAAEC,KAAwB,KAAoB;IAChE,OAAOhB,cAAc,CAACsB,eAAe,CAACP,IAAI,EAAEC,KAAK,CAAC;EACpD,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEO,QAAQ,EAAEA,CAACR,IAAY,EAAEC,KAAwB,KAAsB;IACrE,OAAOhB,cAAc,CAACuB,QAAQ,CAACR,IAAI,EAAEC,KAAK,CAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEQ,MAAM,EAAEA,CAACT,IAAY,EAAEC,KAAwB,KAAoB;IACjE,OAAOhB,cAAc,CAACyB,UAAU,CAACV,IAAI,EAAEC,KAAK,CAAC;EAC/C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEU,IAAI,EAAE,MAAAA,CAAOX,IAAY,EAAEC,KAAwB,KAAoC;IACrF,MAAMW,MAAM,GAAG,MAAM3B,cAAc,CAAC4B,QAAQ,CAACb,IAAI,EAAEC,KAAK,CAAC;IAEzD,OAAO;MACL,GAAGW,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,eAAelC,cAAc"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { GDrive, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
|
|
1
|
+
import { GDrive, HttpError, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
|
|
2
2
|
import { CloudStorageErrorCode } from '../types/native';
|
|
3
3
|
import CloudStorageError from '../utils/CloudStorageError';
|
|
4
|
-
class GoogleDriveApiClient {
|
|
4
|
+
export default class GoogleDriveApiClient {
|
|
5
5
|
static drive = new GDrive();
|
|
6
|
+
static throwOnFilesWithSameName = false;
|
|
6
7
|
constructor() {
|
|
8
|
+
this.filesWithSameNameSubscribers = [];
|
|
7
9
|
GoogleDriveApiClient.drive.fetchTimeout = 3000;
|
|
8
10
|
return new Proxy(this, {
|
|
9
11
|
// before calling any function, check if the access token is set
|
|
10
12
|
get(target, prop) {
|
|
11
|
-
|
|
13
|
+
const allowedFunctions = ['isCloudAvailable', 'subscribeToFilesWithSameName'];
|
|
14
|
+
if (typeof target[prop] === 'function' && !allowedFunctions.includes(prop.toString())) {
|
|
12
15
|
if (!GoogleDriveApiClient.drive.accessToken) {
|
|
13
16
|
throw new CloudStorageError(`Google Drive access token is not set, cannot call function ${prop.toString()}`, CloudStorageErrorCode.GOOGLE_DRIVE_ACCESS_TOKEN_MISSING);
|
|
14
17
|
}
|
|
@@ -25,6 +28,14 @@ class GoogleDriveApiClient {
|
|
|
25
28
|
static get accessToken() {
|
|
26
29
|
return GoogleDriveApiClient.drive.accessToken;
|
|
27
30
|
}
|
|
31
|
+
subscribeToFilesWithSameName(subscriber) {
|
|
32
|
+
this.filesWithSameNameSubscribers.push(subscriber);
|
|
33
|
+
return {
|
|
34
|
+
remove: () => {
|
|
35
|
+
this.filesWithSameNameSubscribers = this.filesWithSameNameSubscribers.filter(s => s !== subscriber);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
28
39
|
isCloudAvailable = async () => {
|
|
29
40
|
var _GoogleDriveApiClient;
|
|
30
41
|
return !!((_GoogleDriveApiClient = GoogleDriveApiClient.accessToken) !== null && _GoogleDriveApiClient !== void 0 && _GoogleDriveApiClient.length);
|
|
@@ -85,27 +96,60 @@ class GoogleDriveApiClient {
|
|
|
85
96
|
});
|
|
86
97
|
return files.files;
|
|
87
98
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (
|
|
97
|
-
|
|
98
|
-
and the first parent has an id which does not exist in the files array */
|
|
99
|
-
file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
|
|
99
|
+
checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId) {
|
|
100
|
+
let possibleFiles;
|
|
101
|
+
if (parentDirectoryId) {
|
|
102
|
+
possibleFiles = files.filter(f => f.name === filename && f.parents[0] === parentDirectoryId);
|
|
103
|
+
} else {
|
|
104
|
+
possibleFiles = files.filter(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
|
|
105
|
+
}
|
|
106
|
+
if (possibleFiles.length <= 1) return;
|
|
107
|
+
if (GoogleDriveApiClient.throwOnFilesWithSameName) {
|
|
108
|
+
throw new CloudStorageError(`Multiple files with the same name found at path ${path}: ${possibleFiles.map(f => f.id).join(', ')}`, CloudStorageErrorCode.MULTIPLE_FILES_SAME_NAME);
|
|
100
109
|
} else {
|
|
101
|
-
|
|
110
|
+
this.filesWithSameNameSubscribers.forEach(s => s({
|
|
111
|
+
path,
|
|
112
|
+
fileIds: possibleFiles.map(f => f.id)
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async getFileId(path, scope) {
|
|
117
|
+
let throwIfDirectory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
118
|
+
try {
|
|
119
|
+
const files = await this.listFiles(scope);
|
|
120
|
+
const {
|
|
121
|
+
directories,
|
|
122
|
+
filename
|
|
123
|
+
} = this.resolvePathToDirectories(path);
|
|
124
|
+
const parentDirectoryId = this.findParentDirectoryId(files, directories);
|
|
125
|
+
let file;
|
|
126
|
+
if (parentDirectoryId === null) {
|
|
127
|
+
this.checkIfMultipleFilesWithSameName(path, files, filename, null);
|
|
128
|
+
/* when the file is supposed to be in the root directory, we need to get the file where the name is the filename
|
|
129
|
+
and the first parent has an id which does not exist in the files array */
|
|
130
|
+
file = files.find(f => f.name === filename && !files.find(f2 => f2.id === f.parents[0]));
|
|
131
|
+
} else {
|
|
132
|
+
this.checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId);
|
|
133
|
+
file = files.find(f => f.name === filename && f.parents[0] === parentDirectoryId);
|
|
134
|
+
}
|
|
135
|
+
if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
|
|
136
|
+
if (file.mimeType === MimeTypes.FOLDER && throwIfDirectory) {
|
|
137
|
+
throw new CloudStorageError(`Path ${path} is a directory`, CloudStorageErrorCode.PATH_IS_DIRECTORY);
|
|
138
|
+
}
|
|
139
|
+
return file.id;
|
|
140
|
+
} catch (e) {
|
|
141
|
+
var _e$json, _e$json$error;
|
|
142
|
+
if (e instanceof HttpError && ((_e$json = e.json) === null || _e$json === void 0 ? void 0 : (_e$json$error = _e$json.error) === null || _e$json$error === void 0 ? void 0 : _e$json$error.status) === 'UNAUTHENTICATED') {
|
|
143
|
+
throw new CloudStorageError(`Could not authenticate with Google Drive`, CloudStorageErrorCode.AUTHENTICATION_FAILED, e.json);
|
|
144
|
+
} else {
|
|
145
|
+
if (e instanceof CloudStorageError) throw e;
|
|
146
|
+
throw new CloudStorageError(`Could not get file id for path ${path}`, CloudStorageErrorCode.UNKNOWN, e);
|
|
147
|
+
}
|
|
102
148
|
}
|
|
103
|
-
if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
|
|
104
|
-
return file.id;
|
|
105
149
|
}
|
|
106
150
|
async fileExists(path, scope) {
|
|
107
151
|
try {
|
|
108
|
-
await this.getFileId(path, scope);
|
|
152
|
+
await this.getFileId(path, scope, false);
|
|
109
153
|
return true;
|
|
110
154
|
} catch (e) {
|
|
111
155
|
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) return false;else throw e;
|
|
@@ -117,7 +161,22 @@ class GoogleDriveApiClient {
|
|
|
117
161
|
try {
|
|
118
162
|
fileId = await this.getFileId(path, scope);
|
|
119
163
|
} catch (e) {
|
|
120
|
-
|
|
164
|
+
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
165
|
+
/* do nothing, simply create the file */
|
|
166
|
+
} else {
|
|
167
|
+
throw e;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
} else {
|
|
171
|
+
try {
|
|
172
|
+
await this.getFileId(path, scope);
|
|
173
|
+
throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
174
|
+
} catch (e) {
|
|
175
|
+
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
176
|
+
/* do nothing, simply create the file */
|
|
177
|
+
} else {
|
|
178
|
+
throw e;
|
|
179
|
+
}
|
|
121
180
|
}
|
|
122
181
|
}
|
|
123
182
|
const uploader = GoogleDriveApiClient.drive.files.newMultipartUploader().setData(data, MimeTypes.TEXT);
|
|
@@ -135,6 +194,33 @@ class GoogleDriveApiClient {
|
|
|
135
194
|
}
|
|
136
195
|
await uploader.execute();
|
|
137
196
|
}
|
|
197
|
+
async createDirectory(path, scope) {
|
|
198
|
+
try {
|
|
199
|
+
await this.getFileId(path, scope);
|
|
200
|
+
throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
201
|
+
} catch (e) {
|
|
202
|
+
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
203
|
+
/* do nothing, simply create the file */
|
|
204
|
+
} else if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.PATH_IS_DIRECTORY) {
|
|
205
|
+
throw new CloudStorageError(`Directory ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
206
|
+
} else {
|
|
207
|
+
throw e;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const uploader = GoogleDriveApiClient.drive.files.newMetadataOnlyUploader();
|
|
211
|
+
const files = await this.listFiles(scope);
|
|
212
|
+
const {
|
|
213
|
+
directories,
|
|
214
|
+
filename
|
|
215
|
+
} = this.resolvePathToDirectories(path);
|
|
216
|
+
const parentDirectoryId = this.findParentDirectoryId(files, directories);
|
|
217
|
+
uploader.setRequestBody({
|
|
218
|
+
name: filename,
|
|
219
|
+
mimeType: MimeTypes.FOLDER,
|
|
220
|
+
parents: parentDirectoryId ? [parentDirectoryId] : scope === 'app_data' ? [this.getRootDirectory(scope)] : undefined
|
|
221
|
+
});
|
|
222
|
+
await uploader.execute();
|
|
223
|
+
}
|
|
138
224
|
async readFile(path, scope) {
|
|
139
225
|
const fileId = await this.getFileId(path, scope);
|
|
140
226
|
const content = await GoogleDriveApiClient.drive.files.getText(fileId);
|
|
@@ -145,10 +231,10 @@ class GoogleDriveApiClient {
|
|
|
145
231
|
await GoogleDriveApiClient.drive.files.delete(fileId);
|
|
146
232
|
}
|
|
147
233
|
async statFile(path, scope) {
|
|
148
|
-
const fileId = await this.getFileId(path, scope);
|
|
149
|
-
const file = await GoogleDriveApiClient.drive.files.get(fileId, {
|
|
234
|
+
const fileId = await this.getFileId(path, scope, false);
|
|
235
|
+
const file = await (await GoogleDriveApiClient.drive.files.get(fileId, {
|
|
150
236
|
fields: 'id,kind,mimeType,name,parents,spaces,size,createdTime,modifiedTime'
|
|
151
|
-
});
|
|
237
|
+
})).json();
|
|
152
238
|
return {
|
|
153
239
|
size: file.size ?? 0,
|
|
154
240
|
birthtimeMs: new Date(file.createdTime).getTime(),
|
|
@@ -158,5 +244,4 @@ class GoogleDriveApiClient {
|
|
|
158
244
|
};
|
|
159
245
|
}
|
|
160
246
|
}
|
|
161
|
-
export default GoogleDriveApiClient;
|
|
162
247
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GDrive","MimeTypes","CloudStorageErrorCode","CloudStorageError","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":"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"}
|
|
1
|
+
{"version":3,"names":["GDrive","HttpError","MimeTypes","CloudStorageErrorCode","CloudStorageError","GoogleDriveApiClient","drive","throwOnFilesWithSameName","constructor","filesWithSameNameSubscribers","fetchTimeout","Proxy","get","target","prop","allowedFunctions","includes","toString","accessToken","GOOGLE_DRIVE_ACCESS_TOKEN_MISSING","subscribeToFilesWithSameName","subscriber","push","remove","filter","s","isCloudAvailable","_GoogleDriveApiClient","length","getRootDirectory","scope","resolvePathToDirectories","path","startsWith","slice","endsWith","directories","split","actualFilename","pop","filename","findParentDirectoryId","files","directoryTree","possibleTopDirectories","f","mimeType","FOLDER","name","topDirectoryId","id","possibleTopDirectory","find","parents","DIRECTORY_NOT_FOUND","currentDirectoryId","i","currentDirectory","nextDirectory","listFiles","list","spaces","fields","checkIfMultipleFilesWithSameName","parentDirectoryId","possibleFiles","f2","map","join","MULTIPLE_FILES_SAME_NAME","forEach","fileIds","getFileId","throwIfDirectory","arguments","undefined","file","FILE_NOT_FOUND","PATH_IS_DIRECTORY","e","_e$json","_e$json$error","json","error","status","AUTHENTICATION_FAILED","UNKNOWN","fileExists","code","createFile","data","overwrite","fileId","FILE_ALREADY_EXISTS","uploader","newMultipartUploader","setData","TEXT","setIdOfFileToUpdate","setRequestBody","execute","createDirectory","newMetadataOnlyUploader","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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"}
|
package/lib/module/index.js
CHANGED
|
@@ -4,7 +4,6 @@ export * from './types/main';
|
|
|
4
4
|
export * from './hooks/useCloudFile';
|
|
5
5
|
export * from './hooks/useIsCloudAvailable';
|
|
6
6
|
import CloudStorageError from './utils/CloudStorageError';
|
|
7
|
-
export { CloudStorageError };
|
|
8
|
-
export { CloudStorageErrorCode };
|
|
7
|
+
export { CloudStorageError, CloudStorageErrorCode };
|
|
9
8
|
export default RNCloudStorage;
|
|
10
9
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RNCloudStorage","CloudStorageErrorCode","CloudStorageError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAC7C,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,cAAc,cAAc;AAC5B,cAAc,sBAAsB;AACpC,cAAc,6BAA6B;AAC3C,OAAOC,iBAAiB,MAAM,2BAA2B;AAEzD,SAASA,iBAAiB
|
|
1
|
+
{"version":3,"names":["RNCloudStorage","CloudStorageErrorCode","CloudStorageError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAC7C,SAASC,qBAAqB,QAAQ,gBAAgB;AACtD,cAAc,cAAc;AAC5B,cAAc,sBAAsB;AACpC,cAAc,6BAA6B;AAC3C,OAAOC,iBAAiB,MAAM,2BAA2B;AAEzD,SAASA,iBAAiB,EAAED,qBAAqB;AACjD,eAAeD,cAAc"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export let CloudStorageErrorCode = /*#__PURE__*/function (CloudStorageErrorCode) {
|
|
2
2
|
CloudStorageErrorCode["FILE_NOT_FOUND"] = "ERR_FILE_NOT_FOUND";
|
|
3
|
+
CloudStorageErrorCode["PATH_IS_DIRECTORY"] = "ERR_PATH_IS_DIRECTORY";
|
|
3
4
|
CloudStorageErrorCode["DIRECTORY_NOT_FOUND"] = "ERR_NO_DIRECTORY_FOUND";
|
|
4
5
|
CloudStorageErrorCode["FILE_ALREADY_EXISTS"] = "ERR_FILE_EXISTS";
|
|
6
|
+
CloudStorageErrorCode["MULTIPLE_FILES_SAME_NAME"] = "ERR_MULTIPLE_FILES_SAME_NAME";
|
|
7
|
+
CloudStorageErrorCode["AUTHENTICATION_FAILED"] = "ERR_AUTHENTICATION_FAILED";
|
|
5
8
|
CloudStorageErrorCode["WRITE_ERROR"] = "ERR_WRITE_ERROR";
|
|
6
9
|
CloudStorageErrorCode["READ_ERROR"] = "ERR_READ_ERROR";
|
|
7
10
|
CloudStorageErrorCode["DELETE_ERROR"] = "ERR_DELETE_ERROR";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CloudStorageErrorCode"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":"AAUA,WAAYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA"}
|
|
1
|
+
{"version":3,"names":["CloudStorageErrorCode"],"sourceRoot":"../../../src","sources":["types/native.ts"],"mappings":"AAUA,WAAYA,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA"}
|
|
@@ -2,6 +2,13 @@ import type { CloudStorageFileStat, CloudStorageScope } from './types/main';
|
|
|
2
2
|
declare const RNCloudStorage: {
|
|
3
3
|
getGoogleDriveAccessToken: () => string | undefined;
|
|
4
4
|
setGoogleDriveAccessToken: (accessToken: string) => string;
|
|
5
|
+
setThrowOnFilesWithSameName: (enable: boolean) => boolean;
|
|
6
|
+
subscribeToFilesWithSameName: (subscriber: ({ path, fileIds }: {
|
|
7
|
+
path: string;
|
|
8
|
+
fileIds: string[];
|
|
9
|
+
}) => void) => {
|
|
10
|
+
remove: () => void;
|
|
11
|
+
};
|
|
5
12
|
/**
|
|
6
13
|
* Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
|
|
7
14
|
* unavailable right after app launch or if the user is not logged in.
|
|
@@ -23,6 +30,13 @@ declare const RNCloudStorage: {
|
|
|
23
30
|
* @returns A promise that resolves when the file has been written.
|
|
24
31
|
*/
|
|
25
32
|
writeFile: (path: string, data: string, scope: CloudStorageScope) => Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new directory at the given path.
|
|
35
|
+
* @param path The directory to create.
|
|
36
|
+
* @param scope The directory scope the path is in.
|
|
37
|
+
* @returns A promise that resolves when the directory has been created.
|
|
38
|
+
*/
|
|
39
|
+
mkdir: (path: string, scope: CloudStorageScope) => Promise<void>;
|
|
26
40
|
/**
|
|
27
41
|
* Reads the contents of the file at the given path.
|
|
28
42
|
* @param path The file to read.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/RNCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"RNCloudStorage.d.ts","sourceRoot":"","sources":["../../src/RNCloudStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAK5E,QAAA,MAAM,cAAc;;6CAEuB,MAAM;0CACT,OAAO;;;;;;;IAS7C;;;;OAIG;4BACyB,QAAQ,OAAO,CAAC;IAI5C;;;;;OAKG;mBACY,MAAM,SAAS,iBAAiB,KAAG,QAAQ,OAAO,CAAC;IAIlE;;;;;;OAMG;sBACe,MAAM,QAAQ,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAIhF;;;;;OAKG;kBACW,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAI9D;;;;;OAKG;qBACc,MAAM,SAAS,iBAAiB,KAAG,QAAQ,MAAM,CAAC;IAInE;;;;;OAKG;mBACY,MAAM,SAAS,iBAAiB,KAAG,QAAQ,IAAI,CAAC;IAI/D;;;;;OAKG;iBACgB,MAAM,SAAS,iBAAiB,KAAG,QAAQ,oBAAoB,CAAC;CAWpF,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
import type NativeRNCloudStorage from '../types/native';
|
|
2
2
|
import { type NativeRNCloudCloudStorageFileStat, type NativeRNCloudCloudStorageScope } from '../types/native';
|
|
3
|
-
|
|
3
|
+
export default class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
4
4
|
private static drive;
|
|
5
|
+
static throwOnFilesWithSameName: boolean;
|
|
6
|
+
filesWithSameNameSubscribers: (({ path, fileIds }: {
|
|
7
|
+
path: string;
|
|
8
|
+
fileIds: string[];
|
|
9
|
+
}) => void)[];
|
|
5
10
|
constructor();
|
|
6
11
|
static set accessToken(accessToken: string | undefined);
|
|
7
12
|
static get accessToken(): string | undefined;
|
|
13
|
+
subscribeToFilesWithSameName(subscriber: ({ path, fileIds }: {
|
|
14
|
+
path: string;
|
|
15
|
+
fileIds: string[];
|
|
16
|
+
}) => void): {
|
|
17
|
+
remove: () => void;
|
|
18
|
+
};
|
|
8
19
|
isCloudAvailable: () => Promise<boolean>;
|
|
9
20
|
private getRootDirectory;
|
|
10
21
|
private resolvePathToDirectories;
|
|
11
22
|
private findParentDirectoryId;
|
|
12
23
|
private listFiles;
|
|
24
|
+
private checkIfMultipleFilesWithSameName;
|
|
13
25
|
private getFileId;
|
|
14
26
|
fileExists(path: string, scope: NativeRNCloudCloudStorageScope): Promise<boolean>;
|
|
15
27
|
createFile(path: string, data: string, scope: NativeRNCloudCloudStorageScope, overwrite: boolean): Promise<void>;
|
|
28
|
+
createDirectory(path: string, scope: NativeRNCloudCloudStorageScope): Promise<void>;
|
|
16
29
|
readFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<string>;
|
|
17
30
|
deleteFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<void>;
|
|
18
31
|
statFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<NativeRNCloudCloudStorageFileStat>;
|
|
19
32
|
}
|
|
20
|
-
export default GoogleDriveApiClient;
|
|
21
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,iCAAiC,EACtC,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AAIzB,
|
|
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,iCAAiC,EACtC,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AAIzB,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,oBAAoB;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAwB;IAC5C,OAAc,wBAAwB,UAAS;IACxC,4BAA4B,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,CAAC,EAAE,CAAC;;IAwB1G,WAAkB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAE5D;IAED,WAAkB,WAAW,IAAI,MAAM,GAAG,SAAS,CAElD;IAEM,4BAA4B,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,IAAI,GAAG;QACjH,MAAM,EAAE,MAAM,IAAI,CAAC;KACpB;IAUM,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAA0D;IAEzG,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,qBAAqB;YAiDf,SAAS;IASvB,OAAO,CAAC,gCAAgC;YAyB1B,SAAS;IAsCjB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAUjF,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,8BAA8B,EACrC,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,IAAI,CAAC;IA2CV,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,iCAAiC,CAAC;CAgBhH"}
|
|
@@ -4,7 +4,6 @@ export * from './types/main';
|
|
|
4
4
|
export * from './hooks/useCloudFile';
|
|
5
5
|
export * from './hooks/useIsCloudAvailable';
|
|
6
6
|
import CloudStorageError from './utils/CloudStorageError';
|
|
7
|
-
export { CloudStorageError };
|
|
8
|
-
export { CloudStorageErrorCode };
|
|
7
|
+
export { CloudStorageError, CloudStorageErrorCode };
|
|
9
8
|
export default RNCloudStorage;
|
|
10
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AACpD,eAAe,cAAc,CAAC"}
|
|
@@ -8,8 +8,11 @@ export interface NativeRNCloudCloudStorageFileStat {
|
|
|
8
8
|
}
|
|
9
9
|
export declare enum CloudStorageErrorCode {
|
|
10
10
|
FILE_NOT_FOUND = "ERR_FILE_NOT_FOUND",
|
|
11
|
+
PATH_IS_DIRECTORY = "ERR_PATH_IS_DIRECTORY",
|
|
11
12
|
DIRECTORY_NOT_FOUND = "ERR_NO_DIRECTORY_FOUND",
|
|
12
13
|
FILE_ALREADY_EXISTS = "ERR_FILE_EXISTS",
|
|
14
|
+
MULTIPLE_FILES_SAME_NAME = "ERR_MULTIPLE_FILES_SAME_NAME",
|
|
15
|
+
AUTHENTICATION_FAILED = "ERR_AUTHENTICATION_FAILED",
|
|
13
16
|
WRITE_ERROR = "ERR_WRITE_ERROR",
|
|
14
17
|
READ_ERROR = "ERR_READ_ERROR",
|
|
15
18
|
DELETE_ERROR = "ERR_DELETE_ERROR",
|
|
@@ -20,6 +23,7 @@ export declare enum CloudStorageErrorCode {
|
|
|
20
23
|
export default interface NativeRNCloudStorage {
|
|
21
24
|
fileExists: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<boolean>;
|
|
22
25
|
createFile: (path: string, data: string, scope: NativeRNCloudCloudStorageScope, overwrite: boolean) => Promise<void>;
|
|
26
|
+
createDirectory: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
|
|
23
27
|
readFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<string>;
|
|
24
28
|
deleteFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
|
|
25
29
|
statFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<NativeRNCloudCloudStorageFileStat>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/types/native.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,8BAA8B,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iCAAiC;IAChD,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,qBAAqB;IAC/B,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,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC9G,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C"}
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/types/native.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,8BAA8B,GAAG,WAAW,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,iCAAiC;IAChD,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,qBAAqB;IAC/B,cAAc,uBAAuB;IACrC,iBAAiB,0BAA0B;IAC3C,mBAAmB,2BAA2B;IAC9C,mBAAmB,oBAAoB;IACvC,wBAAwB,iCAAiC;IACzD,qBAAqB,8BAA8B;IACnD,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,8BAA8B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,KAAK,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAC9G,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C"}
|
package/package.json
CHANGED
package/src/RNCloudStorage.ts
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import createRNCloudStorage from './createRNCloudStorage';
|
|
2
2
|
import GoogleDriveApiClient from './google-drive';
|
|
3
3
|
import type { CloudStorageFileStat, CloudStorageScope } from './types/main';
|
|
4
|
+
import { Platform } from 'react-native';
|
|
4
5
|
|
|
5
6
|
const nativeInstance = createRNCloudStorage();
|
|
7
|
+
|
|
6
8
|
const RNCloudStorage = {
|
|
7
9
|
getGoogleDriveAccessToken: () => GoogleDriveApiClient.accessToken,
|
|
8
10
|
setGoogleDriveAccessToken: (accessToken: string) => (GoogleDriveApiClient.accessToken = accessToken),
|
|
11
|
+
setThrowOnFilesWithSameName: (enable: boolean) => (GoogleDriveApiClient.throwOnFilesWithSameName = enable),
|
|
12
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
13
|
+
subscribeToFilesWithSameName:
|
|
14
|
+
Platform.OS === 'ios'
|
|
15
|
+
? // @ts-expect-error - subscriber is undefined; just a mock
|
|
16
|
+
(subscriber: ({ path, fileIds }: { path: string; fileIds: string[] }) => void) => ({ remove: () => {} })
|
|
17
|
+
: (nativeInstance as GoogleDriveApiClient).subscribeToFilesWithSameName.bind(nativeInstance),
|
|
18
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
9
19
|
|
|
10
20
|
/**
|
|
11
21
|
* Tests whether or not the cloud storage is available. Always returns true for Google Drive. iCloud may be
|
|
@@ -37,6 +47,16 @@ const RNCloudStorage = {
|
|
|
37
47
|
return nativeInstance.createFile(path, data, scope, true);
|
|
38
48
|
},
|
|
39
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Creates a new directory at the given path.
|
|
52
|
+
* @param path The directory to create.
|
|
53
|
+
* @param scope The directory scope the path is in.
|
|
54
|
+
* @returns A promise that resolves when the directory has been created.
|
|
55
|
+
*/
|
|
56
|
+
mkdir: (path: string, scope: CloudStorageScope): Promise<void> => {
|
|
57
|
+
return nativeInstance.createDirectory(path, scope);
|
|
58
|
+
},
|
|
59
|
+
|
|
40
60
|
/**
|
|
41
61
|
* Reads the contents of the file at the given path.
|
|
42
62
|
* @param path The file to read.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GDrive, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
|
|
1
|
+
import { GDrive, HttpError, MimeTypes } from 'react-native-google-drive-api-wrapper-js';
|
|
2
2
|
import type NativeRNCloudStorage from '../types/native';
|
|
3
3
|
import {
|
|
4
4
|
CloudStorageErrorCode,
|
|
@@ -8,15 +8,19 @@ import {
|
|
|
8
8
|
import type { GoogleDriveDetailedFile, GoogleDriveFile, GoogleDriveListOperationResponse } from './types';
|
|
9
9
|
import CloudStorageError from '../utils/CloudStorageError';
|
|
10
10
|
|
|
11
|
-
class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
11
|
+
export default class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
12
12
|
private static drive: GDrive = new GDrive();
|
|
13
|
+
public static throwOnFilesWithSameName = false;
|
|
14
|
+
public filesWithSameNameSubscribers: (({ path, fileIds }: { path: string; fileIds: string[] }) => void)[];
|
|
13
15
|
|
|
14
16
|
constructor() {
|
|
17
|
+
this.filesWithSameNameSubscribers = [];
|
|
15
18
|
GoogleDriveApiClient.drive.fetchTimeout = 3000;
|
|
16
19
|
return new Proxy(this, {
|
|
17
20
|
// before calling any function, check if the access token is set
|
|
18
21
|
get(target: GoogleDriveApiClient, prop: keyof GoogleDriveApiClient) {
|
|
19
|
-
|
|
22
|
+
const allowedFunctions = ['isCloudAvailable', 'subscribeToFilesWithSameName'];
|
|
23
|
+
if (typeof target[prop] === 'function' && !allowedFunctions.includes(prop.toString())) {
|
|
20
24
|
if (!GoogleDriveApiClient.drive.accessToken) {
|
|
21
25
|
throw new CloudStorageError(
|
|
22
26
|
`Google Drive access token is not set, cannot call function ${prop.toString()}`,
|
|
@@ -39,6 +43,18 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
|
39
43
|
return GoogleDriveApiClient.drive.accessToken;
|
|
40
44
|
}
|
|
41
45
|
|
|
46
|
+
public subscribeToFilesWithSameName(subscriber: ({ path, fileIds }: { path: string; fileIds: string[] }) => void): {
|
|
47
|
+
remove: () => void;
|
|
48
|
+
} {
|
|
49
|
+
this.filesWithSameNameSubscribers.push(subscriber);
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
remove: () => {
|
|
53
|
+
this.filesWithSameNameSubscribers = this.filesWithSameNameSubscribers.filter((s) => s !== subscriber);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
42
58
|
public isCloudAvailable: () => Promise<boolean> = async () => !!GoogleDriveApiClient.accessToken?.length;
|
|
43
59
|
|
|
44
60
|
private getRootDirectory(scope: NativeRNCloudCloudStorageScope): 'drive' | 'appDataFolder' {
|
|
@@ -116,25 +132,72 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
|
116
132
|
return files.files;
|
|
117
133
|
}
|
|
118
134
|
|
|
119
|
-
private
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
135
|
+
private checkIfMultipleFilesWithSameName(
|
|
136
|
+
path: string,
|
|
137
|
+
files: GoogleDriveFile[],
|
|
138
|
+
filename: string,
|
|
139
|
+
parentDirectoryId: string | null
|
|
140
|
+
) {
|
|
141
|
+
let possibleFiles: GoogleDriveFile[];
|
|
142
|
+
if (parentDirectoryId) {
|
|
143
|
+
possibleFiles = files.filter((f) => f.name === filename && f.parents![0] === parentDirectoryId);
|
|
128
144
|
} else {
|
|
129
|
-
|
|
145
|
+
possibleFiles = files.filter((f) => f.name === filename && !files.find((f2) => f2.id === f.parents![0]));
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (possibleFiles.length <= 1) return;
|
|
149
|
+
|
|
150
|
+
if (GoogleDriveApiClient.throwOnFilesWithSameName) {
|
|
151
|
+
throw new CloudStorageError(
|
|
152
|
+
`Multiple files with the same name found at path ${path}: ${possibleFiles.map((f) => f.id).join(', ')}`,
|
|
153
|
+
CloudStorageErrorCode.MULTIPLE_FILES_SAME_NAME
|
|
154
|
+
);
|
|
155
|
+
} else {
|
|
156
|
+
this.filesWithSameNameSubscribers.forEach((s) => s({ path, fileIds: possibleFiles.map((f) => f.id) }));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
private async getFileId(
|
|
161
|
+
path: string,
|
|
162
|
+
scope: NativeRNCloudCloudStorageScope,
|
|
163
|
+
throwIfDirectory = true
|
|
164
|
+
): Promise<string> {
|
|
165
|
+
try {
|
|
166
|
+
const files = await this.listFiles(scope);
|
|
167
|
+
const { directories, filename } = this.resolvePathToDirectories(path);
|
|
168
|
+
const parentDirectoryId = this.findParentDirectoryId(files, directories);
|
|
169
|
+
let file: GoogleDriveFile | undefined;
|
|
170
|
+
if (parentDirectoryId === null) {
|
|
171
|
+
this.checkIfMultipleFilesWithSameName(path, files, filename, null);
|
|
172
|
+
/* when the file is supposed to be in the root directory, we need to get the file where the name is the filename
|
|
173
|
+
and the first parent has an id which does not exist in the files array */
|
|
174
|
+
file = files.find((f) => f.name === filename && !files.find((f2) => f2.id === f.parents![0]));
|
|
175
|
+
} else {
|
|
176
|
+
this.checkIfMultipleFilesWithSameName(path, files, filename, parentDirectoryId);
|
|
177
|
+
file = files.find((f) => f.name === filename && f.parents![0] === parentDirectoryId);
|
|
178
|
+
}
|
|
179
|
+
if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
|
|
180
|
+
if (file.mimeType === MimeTypes.FOLDER && throwIfDirectory) {
|
|
181
|
+
throw new CloudStorageError(`Path ${path} is a directory`, CloudStorageErrorCode.PATH_IS_DIRECTORY);
|
|
182
|
+
}
|
|
183
|
+
return file.id;
|
|
184
|
+
} catch (e: unknown) {
|
|
185
|
+
if (e instanceof HttpError && e.json?.error?.status === 'UNAUTHENTICATED') {
|
|
186
|
+
throw new CloudStorageError(
|
|
187
|
+
`Could not authenticate with Google Drive`,
|
|
188
|
+
CloudStorageErrorCode.AUTHENTICATION_FAILED,
|
|
189
|
+
e.json
|
|
190
|
+
);
|
|
191
|
+
} else {
|
|
192
|
+
if (e instanceof CloudStorageError) throw e;
|
|
193
|
+
throw new CloudStorageError(`Could not get file id for path ${path}`, CloudStorageErrorCode.UNKNOWN, e);
|
|
194
|
+
}
|
|
130
195
|
}
|
|
131
|
-
if (!file) throw new CloudStorageError(`File not found`, CloudStorageErrorCode.FILE_NOT_FOUND);
|
|
132
|
-
return file.id;
|
|
133
196
|
}
|
|
134
197
|
|
|
135
198
|
async fileExists(path: string, scope: NativeRNCloudCloudStorageScope): Promise<boolean> {
|
|
136
199
|
try {
|
|
137
|
-
await this.getFileId(path, scope);
|
|
200
|
+
await this.getFileId(path, scope, false);
|
|
138
201
|
return true;
|
|
139
202
|
} catch (e: any) {
|
|
140
203
|
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) return false;
|
|
@@ -153,9 +216,25 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
|
153
216
|
try {
|
|
154
217
|
fileId = await this.getFileId(path, scope);
|
|
155
218
|
} catch (e: any) {
|
|
156
|
-
|
|
219
|
+
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
220
|
+
/* do nothing, simply create the file */
|
|
221
|
+
} else {
|
|
222
|
+
throw e;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
try {
|
|
227
|
+
await this.getFileId(path, scope);
|
|
228
|
+
throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
229
|
+
} catch (e: any) {
|
|
230
|
+
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
231
|
+
/* do nothing, simply create the file */
|
|
232
|
+
} else {
|
|
233
|
+
throw e;
|
|
234
|
+
}
|
|
157
235
|
}
|
|
158
236
|
}
|
|
237
|
+
|
|
159
238
|
const uploader = GoogleDriveApiClient.drive.files.newMultipartUploader().setData(data, MimeTypes.TEXT);
|
|
160
239
|
if (fileId) uploader.setIdOfFileToUpdate(fileId);
|
|
161
240
|
else {
|
|
@@ -174,6 +253,36 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
|
174
253
|
await uploader.execute();
|
|
175
254
|
}
|
|
176
255
|
|
|
256
|
+
async createDirectory(path: string, scope: NativeRNCloudCloudStorageScope): Promise<void> {
|
|
257
|
+
try {
|
|
258
|
+
await this.getFileId(path, scope);
|
|
259
|
+
throw new CloudStorageError(`File ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
260
|
+
} catch (e: any) {
|
|
261
|
+
if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.FILE_NOT_FOUND) {
|
|
262
|
+
/* do nothing, simply create the file */
|
|
263
|
+
} else if (e instanceof CloudStorageError && e.code === CloudStorageErrorCode.PATH_IS_DIRECTORY) {
|
|
264
|
+
throw new CloudStorageError(`Directory ${path} already exists`, CloudStorageErrorCode.FILE_ALREADY_EXISTS);
|
|
265
|
+
} else {
|
|
266
|
+
throw e;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
const uploader = GoogleDriveApiClient.drive.files.newMetadataOnlyUploader();
|
|
271
|
+
const files = await this.listFiles(scope);
|
|
272
|
+
const { directories, filename } = this.resolvePathToDirectories(path);
|
|
273
|
+
const parentDirectoryId = this.findParentDirectoryId(files, directories);
|
|
274
|
+
uploader.setRequestBody({
|
|
275
|
+
name: filename,
|
|
276
|
+
mimeType: MimeTypes.FOLDER,
|
|
277
|
+
parents: parentDirectoryId
|
|
278
|
+
? [parentDirectoryId]
|
|
279
|
+
: scope === 'app_data'
|
|
280
|
+
? [this.getRootDirectory(scope)]
|
|
281
|
+
: undefined,
|
|
282
|
+
});
|
|
283
|
+
await uploader.execute();
|
|
284
|
+
}
|
|
285
|
+
|
|
177
286
|
async readFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<string> {
|
|
178
287
|
const fileId = await this.getFileId(path, scope);
|
|
179
288
|
const content = await GoogleDriveApiClient.drive.files.getText(fileId);
|
|
@@ -186,10 +295,13 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
|
186
295
|
}
|
|
187
296
|
|
|
188
297
|
async statFile(path: string, scope: NativeRNCloudCloudStorageScope): Promise<NativeRNCloudCloudStorageFileStat> {
|
|
189
|
-
const fileId = await this.getFileId(path, scope);
|
|
190
|
-
const file: GoogleDriveDetailedFile = await
|
|
191
|
-
|
|
192
|
-
|
|
298
|
+
const fileId = await this.getFileId(path, scope, false);
|
|
299
|
+
const file: GoogleDriveDetailedFile = await (
|
|
300
|
+
await GoogleDriveApiClient.drive.files.get(fileId!, {
|
|
301
|
+
fields: 'id,kind,mimeType,name,parents,spaces,size,createdTime,modifiedTime',
|
|
302
|
+
})
|
|
303
|
+
).json();
|
|
304
|
+
|
|
193
305
|
return {
|
|
194
306
|
size: file.size ?? 0,
|
|
195
307
|
birthtimeMs: new Date(file.createdTime!).getTime(),
|
|
@@ -199,5 +311,3 @@ class GoogleDriveApiClient implements NativeRNCloudStorage {
|
|
|
199
311
|
};
|
|
200
312
|
}
|
|
201
313
|
}
|
|
202
|
-
|
|
203
|
-
export default GoogleDriveApiClient;
|
package/src/index.ts
CHANGED
|
@@ -5,6 +5,5 @@ export * from './hooks/useCloudFile';
|
|
|
5
5
|
export * from './hooks/useIsCloudAvailable';
|
|
6
6
|
import CloudStorageError from './utils/CloudStorageError';
|
|
7
7
|
|
|
8
|
-
export { CloudStorageError };
|
|
9
|
-
export { CloudStorageErrorCode };
|
|
8
|
+
export { CloudStorageError, CloudStorageErrorCode };
|
|
10
9
|
export default RNCloudStorage;
|
package/src/types/native.ts
CHANGED
|
@@ -10,8 +10,11 @@ export interface NativeRNCloudCloudStorageFileStat {
|
|
|
10
10
|
|
|
11
11
|
export enum CloudStorageErrorCode {
|
|
12
12
|
FILE_NOT_FOUND = 'ERR_FILE_NOT_FOUND',
|
|
13
|
+
PATH_IS_DIRECTORY = 'ERR_PATH_IS_DIRECTORY',
|
|
13
14
|
DIRECTORY_NOT_FOUND = 'ERR_NO_DIRECTORY_FOUND',
|
|
14
15
|
FILE_ALREADY_EXISTS = 'ERR_FILE_EXISTS',
|
|
16
|
+
MULTIPLE_FILES_SAME_NAME = 'ERR_MULTIPLE_FILES_SAME_NAME',
|
|
17
|
+
AUTHENTICATION_FAILED = 'ERR_AUTHENTICATION_FAILED',
|
|
15
18
|
WRITE_ERROR = 'ERR_WRITE_ERROR',
|
|
16
19
|
READ_ERROR = 'ERR_READ_ERROR',
|
|
17
20
|
DELETE_ERROR = 'ERR_DELETE_ERROR',
|
|
@@ -23,6 +26,7 @@ export enum CloudStorageErrorCode {
|
|
|
23
26
|
export default interface NativeRNCloudStorage {
|
|
24
27
|
fileExists: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<boolean>;
|
|
25
28
|
createFile: (path: string, data: string, scope: NativeRNCloudCloudStorageScope, overwrite: boolean) => Promise<void>;
|
|
29
|
+
createDirectory: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
|
|
26
30
|
readFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<string>;
|
|
27
31
|
deleteFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<void>;
|
|
28
32
|
statFile: (path: string, scope: NativeRNCloudCloudStorageScope) => Promise<NativeRNCloudCloudStorageFileStat>;
|