53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import { Meteor } from 'meteor/meteor';
|
|
import { Accounts } from 'meteor/accounts-base';
|
|
import { OHIF } from 'meteor/ohif:core';
|
|
|
|
// Manipulate user's persistent data
|
|
class UserData {
|
|
|
|
// Get the persistent data by key
|
|
static get(key) {
|
|
// Check if there is an user logged in
|
|
OHIF.MongoUtils.validateUser();
|
|
|
|
// Get the user's profile data
|
|
const profileData = Meteor.user().profile;
|
|
|
|
// Return the data if it is set
|
|
if (profileData.persistent) {
|
|
return profileData.persistent[key];
|
|
}
|
|
}
|
|
|
|
// Store the persistent data by giving a key and a value to store
|
|
static set(key, value) {
|
|
// Check if there is an user logged in
|
|
OHIF.MongoUtils.validateUser();
|
|
|
|
// Get the user data
|
|
const user = Meteor.user();
|
|
|
|
// Build the path to the persistent data with the given key
|
|
const persistentPath = `profile.persistent.${key}`;
|
|
|
|
// Build the query to update the user's data
|
|
let query;
|
|
if (!user.profile.persistent) {
|
|
const persistentData = OHIF.object.getNestedObject({ [key]: value });
|
|
query = { $set: { 'profile.persistent': persistentData } };
|
|
} else {
|
|
query = { $set: { [persistentPath]: value } };
|
|
}
|
|
|
|
// Update the user's profile data with the persistent information
|
|
Accounts.users.update(user._id, query, OHIF.MongoUtils.writeCallback);
|
|
}
|
|
|
|
}
|
|
|
|
// Register the methods
|
|
Meteor.methods({
|
|
'ohif.user.data.get': key => UserData.get(key),
|
|
'ohif.user.data.set': (key, value) => UserData.set(key, value)
|
|
});
|