@app-connect/core 0.0.3 → 1.6.4

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/handlers/user.js CHANGED
@@ -1,102 +1,102 @@
1
- const axios = require('axios');
2
- const { AdminConfigModel } = require('../models/adminConfigModel');
3
- const { getHashValue } = require('../lib/util');
4
- const adapterRegistry = require('../adapter/registry');
5
-
6
- async function getUserSettingsByAdmin({ rcAccessToken, rcAccountId }) {
7
- let hashedRcAccountId = null;
8
- if (rcAccountId) {
9
- hashedRcAccountId = rcAccountId;
10
- }
11
- else {
12
- const rcExtensionResponse = await axios.get(
13
- 'https://platform.ringcentral.com/restapi/v1.0/account/~/extension/~',
14
- {
15
- headers: {
16
- Authorization: `Bearer ${rcAccessToken}`,
17
- },
18
- });
19
- hashedRcAccountId = getHashValue(rcExtensionResponse.data.account.id, process.env.HASH_KEY);
20
- }
21
- const adminConfig = await AdminConfigModel.findByPk(hashedRcAccountId);
22
- return {
23
- customManifestUrl: adminConfig?.customAdapter,
24
- userSettings: adminConfig?.userSettings
25
- };
26
- }
27
-
28
- async function getUserSettings({ user, rcAccessToken, rcAccountId }) {
29
- let userSettingsByAdmin = [];
30
- if (rcAccessToken || rcAccountId) {
31
- try {
32
- userSettingsByAdmin = await getUserSettingsByAdmin({ rcAccessToken, rcAccountId });
33
- }
34
- catch (e) {
35
- userSettingsByAdmin = [];
36
- }
37
- }
38
-
39
- // For non-readonly admin settings, user use its own setting
40
- let userSettings = await user?.userSettings;
41
- let result = {};
42
- if (!userSettingsByAdmin?.userSettings) {
43
- result = userSettings;
44
- }
45
- else {
46
- if (!!userSettingsByAdmin?.userSettings && !!userSettings) {
47
- const keys = Object.keys(userSettingsByAdmin.userSettings).concat(Object.keys(userSettings));
48
- // distinct keys
49
- for (const key of new Set(keys)) {
50
- // from user's own settings
51
- if ((userSettingsByAdmin.userSettings[key] === undefined || userSettingsByAdmin.userSettings[key].customizable) && userSettings[key] !== undefined) {
52
- result[key] = {
53
- customizable: true,
54
- value: userSettings[key].value,
55
- defaultValue: userSettings[key].defaultValue,
56
- options: userSettings[key].options
57
- };
58
- }
59
- // from admin settings
60
- else {
61
- result[key] = userSettingsByAdmin.userSettings[key];
62
- }
63
- }
64
- }
65
- }
66
- return result;
67
- }
68
-
69
- async function updateUserSettings({ user, userSettings, platformName }) {
70
- const keys = Object.keys(userSettings || {});
71
- let updatedSettings = {
72
- ...(user.userSettings || {})
73
- };
74
- for (const k of keys) {
75
- updatedSettings[k] = userSettings[k];
76
- }
77
- const platformModule = adapterRegistry.getAdapter(platformName);
78
- if (platformModule.onUpdateUserSettings) {
79
- const { successful, returnMessage } = await platformModule.onUpdateUserSettings({ user, userSettings, updatedSettings });
80
- if (successful) {
81
- await user.update({
82
- userSettings: updatedSettings
83
- });
84
- }
85
- return {
86
- successful,
87
- returnMessage
88
- };
89
- }
90
- else {
91
- await user.update({
92
- userSettings: updatedSettings
93
- });
94
- }
95
- return {
96
- userSettings: user.userSettings
97
- };
98
- }
99
-
100
- exports.getUserSettingsByAdmin = getUserSettingsByAdmin;
101
- exports.getUserSettings = getUserSettings;
1
+ const axios = require('axios');
2
+ const { AdminConfigModel } = require('../models/adminConfigModel');
3
+ const { getHashValue } = require('../lib/util');
4
+ const adapterRegistry = require('../adapter/registry');
5
+
6
+ async function getUserSettingsByAdmin({ rcAccessToken, rcAccountId }) {
7
+ let hashedRcAccountId = null;
8
+ if (rcAccountId) {
9
+ hashedRcAccountId = rcAccountId;
10
+ }
11
+ else {
12
+ const rcExtensionResponse = await axios.get(
13
+ 'https://platform.ringcentral.com/restapi/v1.0/account/~/extension/~',
14
+ {
15
+ headers: {
16
+ Authorization: `Bearer ${rcAccessToken}`,
17
+ },
18
+ });
19
+ hashedRcAccountId = getHashValue(rcExtensionResponse.data.account.id, process.env.HASH_KEY);
20
+ }
21
+ const adminConfig = await AdminConfigModel.findByPk(hashedRcAccountId);
22
+ return {
23
+ customManifestUrl: adminConfig?.customAdapter,
24
+ userSettings: adminConfig?.userSettings
25
+ };
26
+ }
27
+
28
+ async function getUserSettings({ user, rcAccessToken, rcAccountId }) {
29
+ let userSettingsByAdmin = [];
30
+ if (rcAccessToken || rcAccountId) {
31
+ try {
32
+ userSettingsByAdmin = await getUserSettingsByAdmin({ rcAccessToken, rcAccountId });
33
+ }
34
+ catch (e) {
35
+ userSettingsByAdmin = [];
36
+ }
37
+ }
38
+
39
+ // For non-readonly admin settings, user use its own setting
40
+ let userSettings = await user?.userSettings;
41
+ let result = {};
42
+ if (!userSettingsByAdmin?.userSettings) {
43
+ result = userSettings;
44
+ }
45
+ else {
46
+ if (!!userSettingsByAdmin?.userSettings && !!userSettings) {
47
+ const keys = Object.keys(userSettingsByAdmin.userSettings).concat(Object.keys(userSettings));
48
+ // distinct keys
49
+ for (const key of new Set(keys)) {
50
+ // from user's own settings
51
+ if ((userSettingsByAdmin.userSettings[key] === undefined || userSettingsByAdmin.userSettings[key].customizable) && userSettings[key] !== undefined) {
52
+ result[key] = {
53
+ customizable: true,
54
+ value: userSettings[key].value,
55
+ defaultValue: userSettings[key].defaultValue,
56
+ options: userSettings[key].options
57
+ };
58
+ }
59
+ // from admin settings
60
+ else {
61
+ result[key] = userSettingsByAdmin.userSettings[key];
62
+ }
63
+ }
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+
69
+ async function updateUserSettings({ user, userSettings, platformName }) {
70
+ const keys = Object.keys(userSettings || {});
71
+ let updatedSettings = {
72
+ ...(user.userSettings || {})
73
+ };
74
+ for (const k of keys) {
75
+ updatedSettings[k] = userSettings[k];
76
+ }
77
+ const platformModule = adapterRegistry.getAdapter(platformName);
78
+ if (platformModule.onUpdateUserSettings) {
79
+ const { successful, returnMessage } = await platformModule.onUpdateUserSettings({ user, userSettings, updatedSettings });
80
+ if (successful) {
81
+ await user.update({
82
+ userSettings: updatedSettings
83
+ });
84
+ }
85
+ return {
86
+ successful,
87
+ returnMessage
88
+ };
89
+ }
90
+ else {
91
+ await user.update({
92
+ userSettings: updatedSettings
93
+ });
94
+ }
95
+ return {
96
+ userSettings: user.userSettings
97
+ };
98
+ }
99
+
100
+ exports.getUserSettingsByAdmin = getUserSettingsByAdmin;
101
+ exports.getUserSettings = getUserSettings;
102
102
  exports.updateUserSettings = updateUserSettings;