diff --git a/backend/db/utils/fileUtils/index.ts b/backend/db/utils/fileUtils/index.ts index 43085fa..e553651 100644 --- a/backend/db/utils/fileUtils/index.ts +++ b/backend/db/utils/fileUtils/index.ts @@ -80,9 +80,10 @@ class DbUtil { // if (s3Enabled) { // query = {...query, "metadata.personalFile": true} - // } else if (!s3Enabled){ - // query = {...query, "metadata.personalFile": null} - // } + // } else + if (!s3Enabled){ + query = {...query, "metadata.personalFile": null} + } const fileList = await conn.db.collection("fs.files") .find(query) diff --git a/backend/db/utils/folderUtils/index.ts b/backend/db/utils/folderUtils/index.ts index dc62b70..581972c 100644 --- a/backend/db/utils/folderUtils/index.ts +++ b/backend/db/utils/folderUtils/index.ts @@ -33,6 +33,10 @@ class DbUtil { // query = {...query, "personalFolder": null} // } + if (!s3Enabled) { + query = {...query, "personalFolder": null} + } + if (type) { if (type === "mongo") { query = {...query, "personalFolder": null} @@ -48,8 +52,12 @@ class DbUtil { // if (storageType === "s3") { // query = {...query, "personalFolder": true} + // } else { + // query = {...query, "personalFolder": null} // } + console.log("folder query", query); + const folderList = await Folder.find(query) .sort(sortBy) as FolderInterface[]; diff --git a/backend/express-routers/userPersonal.ts b/backend/express-routers/userPersonal.ts index f66d6b3..9d979a1 100644 --- a/backend/express-routers/userPersonal.ts +++ b/backend/express-routers/userPersonal.ts @@ -7,7 +7,7 @@ const userPersonalController = new UserPersonalController(); const router = Router(); -router.get("/user-service/download-personal-file-list/:tempToken", auth, userPersonalController.downloadPersonalFileList); +router.get("/user-service/download-personal-file-list", auth, userPersonalController.downloadPersonalFileList); router.post("/user-service/upload-personal-file-list", auth, userPersonalController.uploadPersonalFileList); diff --git a/backend/models/file.ts b/backend/models/file.ts index 060e4ad..17d3ee9 100644 --- a/backend/models/file.ts +++ b/backend/models/file.ts @@ -1,5 +1,5 @@ import mongoose, {Document} from "mongoose"; -import { Binary } from "mongodb"; +import { Binary, ObjectID } from "mongodb"; const fileSchema = new mongoose.Schema({ @@ -68,7 +68,7 @@ export interface FileInterface extends Document { filename: string, lastErrorObject: {updatedExisting: any} metadata: { - owner: string, + owner: string | ObjectID, parent: string, parentList: string, hasThumbnail: boolean, diff --git a/backend/models/user.ts b/backend/models/user.ts index 5fbca33..b58b432 100644 --- a/backend/models/user.ts +++ b/backend/models/user.ts @@ -126,14 +126,17 @@ const userSchema = new mongoose.Schema({ personalStorageCanceledDate: Number, storageData: { storageSize: Number, - storageLimit: Number + storageLimit: Number, + failed: Boolean, }, storageDataPersonal: { storageSize: Number, + failed: Boolean, }, storageDataGoogle: { storageSize: Number, - storageLimit: Number + storageLimit: Number, + failed: Boolean, }, activeSubscription: Boolean, planID: String, @@ -177,14 +180,17 @@ export interface UserInterface extends Document { }, storageData?: { storageSize?: number, - storageLimit?: number + storageLimit?: number, + failed?: boolean, }, storageDataPersonal?: { - storageSize?: number + storageSize?: number, + failed?: boolean, }, storageDataGoogle?: { storageSize?: number, - storageLimit?: number + storageLimit?: number, + failed?: boolean, }, activeSubscription?: boolean, passwordLastModified?: number, diff --git a/backend/services/UserPersonalService/index.ts b/backend/services/UserPersonalService/index.ts index bbcf4a5..9b6b6f3 100644 --- a/backend/services/UserPersonalService/index.ts +++ b/backend/services/UserPersonalService/index.ts @@ -48,7 +48,7 @@ class UserPeronsalService { downloadPersonalFileList = async(user: userAccessType) => { - const fileList = await File.find({"metadata.owner": user._id, "metadata.personalFile": true}); + const fileList = await File.find({"metadata.owner": new ObjectID(user._id), "metadata.personalFile": true}); const folderList = await Folder.find({"owner": user._id.toString(), 'personalFolder': true}); @@ -80,9 +80,9 @@ class UserPeronsalService { for (let currentObj of personalFileList) { - await File.deleteMany({_id: currentObj._id, 'metadata.owner': user._id}); + await File.deleteMany({_id: new ObjectID(currentObj._id), 'metadata.owner': new ObjectID(user._id)}); - currentObj.metadata.owner = user._id; + currentObj.metadata.owner = new ObjectID(user._id); currentObj._id = new ObjectID(currentObj._id) const oldIV: any = currentObj.metadata.IV; const IV: any = Buffer.from(oldIV, 'base64'); @@ -98,7 +98,7 @@ class UserPeronsalService { for (let currentObj of personalFolderList) { - await Folder.deleteMany({_id: currentObj._id, owner: user._id.toString()}); + await Folder.deleteMany({_id: new ObjectID(currentObj._id), owner: user._id.toString()}); currentObj._id = new ObjectID(currentObj._id) currentObj.owner = user._id.toString(); @@ -111,7 +111,7 @@ class UserPeronsalService { for (let currentObj of personalThumbnailList) { - await Thumbnail.deleteMany({_id: currentObj._id, owner: user._id.toString()}); + await Thumbnail.deleteMany({_id: new ObjectID(currentObj._id), owner: user._id.toString()}); currentObj._id = new ObjectID(currentObj._id); currentObj.owner = user._id.toString(); @@ -131,15 +131,17 @@ class UserPeronsalService { removeS3Metadata = async(user: userAccessType) => { - const fileList = await File.find({"metadata.owner": user._id, + const fileList = await File.find({"metadata.owner": new ObjectID(user._id), "metadata.personalFile": true}) for (let currentFile of fileList) { + await File.deleteOne({_id: new ObjectID(currentFile._id)}); await File.deleteOne({_id: currentFile._id}); if (currentFile.metadata.hasThumbnail) { + await Thumbnail.deleteOne({_id: new ObjectID(currentFile.metadata.thumbnailID)}) await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID}) } } diff --git a/backend/services/UserService/index.ts b/backend/services/UserService/index.ts index 3bacd4b..516fc47 100644 --- a/backend/services/UserService/index.ts +++ b/backend/services/UserService/index.ts @@ -217,28 +217,44 @@ class UserService { if (!user) throw new NotFoundError("Cannot find user"); if (user.s3Enabled) { - const {bucket} = await user.decryptS3Data() - user.s3Data!.bucket = bucket; + + try { + const {bucket} = await user.decryptS3Data() + user.s3Data!.bucket = bucket; + } catch (e) { + console.log("getting s3 storage data error"); + user.storageDataPersonal = {storageSize: 0, failed: true} + } + } if (user.googleDriveEnabled) { + + try { + + const {clientID} = await user.decryptDriveIDandKey() - const {clientID} = await user.decryptDriveIDandKey() - - const oauth2Client = await getGoogleAuth(user); - const drive = google.drive({version:"v3", auth: oauth2Client}); - - const googleData = await drive.about.get({ - fields: "storageQuota" - }) - - user.storageDataGoogle = {storageLimit: +googleData.data.storageQuota!.limit!, storageSize: +googleData.data.storageQuota!.usage!} - user.googleDriveData!.id = clientID; + const oauth2Client = await getGoogleAuth(user); + const drive = google.drive({version:"v3", auth: oauth2Client}); + + const googleData = await drive.about.get({ + fields: "storageQuota" + }) + + user.storageDataGoogle = {storageLimit: +googleData.data.storageQuota!.limit!, storageSize: +googleData.data.storageQuota!.usage!} + user.googleDriveData!.id = clientID; + + } catch (e) { + + user.storageDataGoogle = {storageLimit: 0, storageSize: 0, failed: true} + console.log("get google drive storage data error", e.message); + } + } if (!user.storageData || (!user.storageData.storageSize && !user.storageData.storageLimit)) user.storageData = {storageLimit: 0, storageSize: 0} - if (!user.storageDataPersonal || (!user.storageDataPersonal.storageSize)) user.storageDataPersonal = {storageSize: 0} - if (!user.storageDataGoogle || (!user.storageDataGoogle.storageLimit && !user.storageDataGoogle.storageSize)) user.storageDataGoogle = {storageLimit: 0, storageSize: 0} + if (!user.storageDataPersonal || (!user.storageDataPersonal.storageSize && !user.storageDataPersonal.failed)) user.storageDataPersonal = {storageSize: 0} + if (!user.storageDataGoogle || (!user.storageDataGoogle.storageLimit && !user.storageDataGoogle.storageSize && !user.storageDataGoogle.failed)) user.storageDataGoogle = {storageLimit: 0, storageSize: 0} delete user.privateKey; delete user.publicKey; diff --git a/backend/utils/createQuery.ts b/backend/utils/createQuery.ts index 1c96019..0592842 100644 --- a/backend/utils/createQuery.ts +++ b/backend/utils/createQuery.ts @@ -55,9 +55,10 @@ const createQuery = (owner: string, parent: string, sortBy: string, startAt: num // if (s3Enabled) { // query = {...query, "metadata.personalFile": true} - // } else if (!s3Enabled) { - // query = {...query, "metadata.personalFile": null} - // } + // } else + if (!s3Enabled) { + query = {...query, "metadata.personalFile": null} + } // if (storageType === "s3") { // query = {...query, "metadata.personalFile": true} diff --git a/src/components/SettingsPage/index.js b/src/components/SettingsPage/index.js index a786de0..e4447dd 100644 --- a/src/components/SettingsPage/index.js +++ b/src/components/SettingsPage/index.js @@ -70,6 +70,8 @@ class SettingsPageContainer extends React.Component { env.emailAddress = response.data.email this.props.dispatch(setParent(uuid.v4())) + console.log("user detailed", response.data) + this.setState(() => { return { ...this.state, @@ -78,7 +80,7 @@ class SettingsPageContainer extends React.Component { } }, () => { - this.getInvoiceData(); + // this.getInvoiceData(); this.props.dispatch(setLoading(false)) }) @@ -640,11 +642,9 @@ class SettingsPageContainer extends React.Component { e.preventDefault() - axios.get('/file-service/download/get-token').then((response) => { + axios.post('/user-service/get-token').then((response) => { - const tempToken = response.data.tempToken; - - const finalUrl = `/user-service/download-personal-file-list/${tempToken}`; + const finalUrl = `/user-service/download-personal-file-list`; const link = document.createElement('a'); document.body.appendChild(link); @@ -831,6 +831,11 @@ class SettingsPageContainer extends React.Component { } render() { + + if (this.props.loading) { + return + } + return (
@@ -841,8 +846,6 @@ class SettingsPageContainer extends React.Component {
- -
- {!this.state.loaded ? "Loading..." : this.state.userDetails.googleDriveEnabled ? `${bytes(this.state.userDetails.storageDataGoogle.storageSize)} of - ${bytes(this.state.userDetails.storageDataGoogle.storageLimit)} used` : ""} + {this.state.userDetails.googleDriveEnabled ? !this.state.userDetails.storageDataGoogle.failed ? `${bytes(this.state.userDetails.storageDataGoogle.storageSize)} of + ${bytes(this.state.userDetails.storageDataGoogle.storageLimit)} used` : "Failed" : ""} +
@@ -1140,7 +1144,8 @@ class SettingsPageContainer extends React.Component { style={{backgroundColor:"#3c85ee", width:"100%"}} >
- {!this.state.loaded ? "Loading..." : this.state.userDetails.s3Enabled ? `${bytes(this.state.userDetails.storageDataPersonal.storageSize)} used` : ""} + {this.state.userDetails.s3Enabled ? !this.state.userDetails.storageDataPersonal.failed ? + `${bytes(this.state.userDetails.storageDataPersonal.storageSize)} used` : "Failed" : ""}