aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2020-10-10 17:49:41 -0400
committerbobzel <zzzman@gmail.com>2020-10-10 17:49:41 -0400
commitd123cac247bcc37aa00fe44a4933df86b71e93af (patch)
tree36060b427c7622d2b7d8c71e6df22c5517927315 /src/server
parent7314eace7c9df5d283b9c02cf08cc25857b88dd4 (diff)
split LinkDatbase into its own field in the user's registry. fixed sharing to set lastModified after modifying groups so that remote participants see the right data. fixed text boxes to show blue icon when there's an annotaitn entry
Diffstat (limited to 'src/server')
-rw-r--r--src/server/ApiManagers/UserManager.ts12
-rw-r--r--src/server/GarbageCollector.ts2
-rw-r--r--src/server/authentication/AuthenticationManager.ts1
-rw-r--r--src/server/authentication/DashUserModel.ts4
4 files changed, 14 insertions, 5 deletions
diff --git a/src/server/ApiManagers/UserManager.ts b/src/server/ApiManagers/UserManager.ts
index e5c0f3827..f36506b14 100644
--- a/src/server/ApiManagers/UserManager.ts
+++ b/src/server/ApiManagers/UserManager.ts
@@ -19,9 +19,9 @@ export default class UserManager extends ApiManager {
method: Method.GET,
subscription: "/getUsers",
secureHandler: async ({ res }) => {
- const cursor = await Database.Instance.query({}, { email: 1, sharingDocumentId: 1 }, "users");
+ const cursor = await Database.Instance.query({}, { email: 1, linkDatabaseId: 1, sharingDocumentId: 1 }, "users");
const results = await cursor.toArray();
- res.send(results.map(user => ({ email: user.email, sharingDocumentId: user.sharingDocumentId })));
+ res.send(results.map(user => ({ email: user.email, linkDatabaseId: user.linkDatabaseId, sharingDocumentId: user.sharingDocumentId })));
}
});
@@ -47,7 +47,7 @@ export default class UserManager extends ApiManager {
register({
method: Method.GET,
subscription: "/getUserDocumentIds",
- secureHandler: ({ res, user }) => res.send({ userDocumentId: user.userDocumentId, sharingDocumentId: user.sharingDocumentId })
+ secureHandler: ({ res, user }) => res.send({ userDocumentId: user.userDocumentId, linkDatabaseId: user.linkDatabaseId, sharingDocumentId: user.sharingDocumentId })
});
register({
@@ -58,6 +58,12 @@ export default class UserManager extends ApiManager {
register({
method: Method.GET,
+ subscription: "/getLinkDatabaseId",
+ secureHandler: ({ res, user }) => res.send(user.linkDatabaseId)
+ });
+
+ register({
+ method: Method.GET,
subscription: "/getCurrentUser",
secureHandler: ({ res, user: { _id, email, cacheDocumentIds } }) => res.send(JSON.stringify({ id: _id, email, cacheDocumentIds })),
publicHandler: ({ res }) => res.send(JSON.stringify({ id: "__guest__", email: "" }))
diff --git a/src/server/GarbageCollector.ts b/src/server/GarbageCollector.ts
index 6bd0e5163..7c441e3c0 100644
--- a/src/server/GarbageCollector.ts
+++ b/src/server/GarbageCollector.ts
@@ -65,7 +65,7 @@ async function GarbageCollect(full: boolean = true) {
// await new Promise(res => setTimeout(res, 3000));
const cursor = await Database.Instance.query({}, { userDocumentId: 1 }, 'users');
const users = await cursor.toArray();
- const ids: string[] = [...users.map(user => user.userDocumentId), ...users.map(user => user.sharingDocumentId)]];
+ const ids: string[] = [...users.map(user => user.userDocumentId), ...users.map(user => user.sharingDocumentId), ...users.map(user => user.linkDatabaseId)];
const visited = new Set<string>();
const files: { [name: string]: string[] } = {};
diff --git a/src/server/authentication/AuthenticationManager.ts b/src/server/authentication/AuthenticationManager.ts
index 84abd41a2..9eb4a328f 100644
--- a/src/server/authentication/AuthenticationManager.ts
+++ b/src/server/authentication/AuthenticationManager.ts
@@ -49,6 +49,7 @@ export let postSignup = (req: Request, res: Response, next: NextFunction) => {
password,
userDocumentId: Utils.GenerateGuid(),
sharingDocumentId: Utils.GenerateGuid(),
+ linkDatabaseId: Utils.GenerateGuid(),
cacheDocumentIds: ""
} as Partial<DashUserModel>;
diff --git a/src/server/authentication/DashUserModel.ts b/src/server/authentication/DashUserModel.ts
index 4f2856a78..bee28b96d 100644
--- a/src/server/authentication/DashUserModel.ts
+++ b/src/server/authentication/DashUserModel.ts
@@ -11,6 +11,7 @@ export type DashUserModel = mongoose.Document & {
userDocumentId: string;
sharingDocumentId: string;
+ linkDatabaseId: string;
cacheDocumentIds: string;
profile: {
@@ -39,7 +40,8 @@ const userSchema = new mongoose.Schema({
userDocumentId: String, // id that identifies a document which hosts all of a user's account data
sharingDocumentId: String, // id that identifies a document that stores documents shared to a user, their user color, and any additional info needed to communicate between users
- cacheDocumentIds: String,
+ linkDatabaseId: String,
+ cacheDocumentIds: String, // set of document ids to retreive on startup
facebook: String,
twitter: String,