@vigilant-broccoli/slackbots 0.0.1

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.
Files changed (50) hide show
  1. package/README.md +7 -0
  2. package/package.json +18 -0
  3. package/src/index.d.ts +6 -0
  4. package/src/index.js +11 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/consts.d.ts +3 -0
  7. package/src/lib/consts.js +8 -0
  8. package/src/lib/consts.js.map +1 -0
  9. package/src/lib/utils/modal.utils.d.ts +13 -0
  10. package/src/lib/utils/modal.utils.js +63 -0
  11. package/src/lib/utils/modal.utils.js.map +1 -0
  12. package/src/lib/utils/utils.d.ts +13 -0
  13. package/src/lib/utils/utils.js +54 -0
  14. package/src/lib/utils/utils.js.map +1 -0
  15. package/src/lib/utils/view-builder.utils.d.ts +22 -0
  16. package/src/lib/utils/view-builder.utils.js +34 -0
  17. package/src/lib/utils/view-builder.utils.js.map +1 -0
  18. package/src/office-presence-app/app-reminder.d.ts +2 -0
  19. package/src/office-presence-app/app-reminder.js +69 -0
  20. package/src/office-presence-app/app-reminder.js.map +1 -0
  21. package/src/office-presence-app/consts/app-copy.const.d.ts +54 -0
  22. package/src/office-presence-app/consts/app-copy.const.js +66 -0
  23. package/src/office-presence-app/consts/app-copy.const.js.map +1 -0
  24. package/src/office-presence-app/consts/app.consts.d.ts +10 -0
  25. package/src/office-presence-app/consts/app.consts.js +14 -0
  26. package/src/office-presence-app/consts/app.consts.js.map +1 -0
  27. package/src/office-presence-app/consts/data.consts.d.ts +2 -0
  28. package/src/office-presence-app/consts/data.consts.js +27 -0
  29. package/src/office-presence-app/consts/data.consts.js.map +1 -0
  30. package/src/office-presence-app/consts/modals.const.d.ts +5 -0
  31. package/src/office-presence-app/consts/modals.const.js +199 -0
  32. package/src/office-presence-app/consts/modals.const.js.map +1 -0
  33. package/src/office-presence-app/office-presence-app.d.ts +10 -0
  34. package/src/office-presence-app/office-presence-app.js +100 -0
  35. package/src/office-presence-app/office-presence-app.js.map +1 -0
  36. package/src/office-presence-app/types.d.ts +25 -0
  37. package/src/office-presence-app/types.js +9 -0
  38. package/src/office-presence-app/types.js.map +1 -0
  39. package/src/office-presence-app/utils/action.utils.d.ts +6 -0
  40. package/src/office-presence-app/utils/action.utils.js +83 -0
  41. package/src/office-presence-app/utils/action.utils.js.map +1 -0
  42. package/src/office-presence-app/utils/date.utils.d.ts +4 -0
  43. package/src/office-presence-app/utils/date.utils.js +43 -0
  44. package/src/office-presence-app/utils/date.utils.js.map +1 -0
  45. package/src/office-presence-app/utils/db.utils.d.ts +4 -0
  46. package/src/office-presence-app/utils/db.utils.js +66 -0
  47. package/src/office-presence-app/utils/db.utils.js.map +1 -0
  48. package/src/office-presence-app/utils/view.utils.d.ts +12 -0
  49. package/src/office-presence-app/utils/view.utils.js +130 -0
  50. package/src/office-presence-app/utils/view.utils.js.map +1 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPublishHomeView = createPublishHomeView;
4
+ exports.buildModalDateOptionSlackBlocks = buildModalDateOptionSlackBlocks;
5
+ const tslib_1 = require("tslib");
6
+ const db_utils_1 = require("./db.utils");
7
+ const types_1 = require("../types");
8
+ const utils_1 = require("../../lib/utils/utils");
9
+ const view_builder_utils_1 = require("../../lib/utils/view-builder.utils");
10
+ const app_copy_const_1 = require("../consts/app-copy.const");
11
+ const date_utils_1 = require("./date.utils");
12
+ const app_consts_1 = require("../consts/app.consts");
13
+ function createPublishHomeView(appConfig) {
14
+ return function publishHomeView(client, source) {
15
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
16
+ const userId = typeof source.user === 'string' ? source.user : source.user.id;
17
+ const isAdmin = yield utils_1.SlackUtils.getIsAdmin(source, client);
18
+ yield client.views.publish({
19
+ user_id: userId,
20
+ view: getHomeView(userId, isAdmin, appConfig),
21
+ });
22
+ });
23
+ };
24
+ }
25
+ function buildModalDateOptionSlackBlocks(dates) {
26
+ return dates.map(date => ({
27
+ text: view_builder_utils_1.SlackViewBuilder.generatePlainText((0, date_utils_1.formatDateShort)(date)),
28
+ value: (0, date_utils_1.formatISODateLocal)(date),
29
+ }));
30
+ }
31
+ function getHomeView(userId, isAdmin, appConfig) {
32
+ const userPresences = (0, db_utils_1.loadAllPresences)();
33
+ if (!userPresences[userId]) {
34
+ userPresences[userId] = {};
35
+ }
36
+ const selected = Object.keys(userPresences[userId]);
37
+ const dates = (0, date_utils_1.getUpcomingWeekdays)(10);
38
+ const options = buildModalDateOptionSlackBlocks(dates);
39
+ const initial = options.filter(opt => selected.includes(opt.value));
40
+ const today = (0, date_utils_1.formatISODateLocal)(new Date());
41
+ const isCheckedInToday = selected.includes(today);
42
+ return {
43
+ type: 'home',
44
+ blocks: [
45
+ view_builder_utils_1.SlackViewBuilder.generateHeader(appConfig.APP_NAME),
46
+ view_builder_utils_1.SlackViewBuilder.generateMarkdownSection(app_copy_const_1.APP_COPY.getAppDescription(appConfig.APP_NAME)),
47
+ ...(isCheckedInToday || isAdmin
48
+ ? [
49
+ {
50
+ type: 'actions',
51
+ elements: [
52
+ ...(isCheckedInToday
53
+ ? [
54
+ {
55
+ type: 'button',
56
+ text: view_builder_utils_1.SlackViewBuilder.generatePlainText(app_copy_const_1.APP_COPY.HOME_VIEW.ASK_LUNCH_BUTTON),
57
+ action_id: app_consts_1.APP_ACTION.OPEN_ASK_LUNCH_MODAL,
58
+ style: 'primary',
59
+ },
60
+ {
61
+ type: 'button',
62
+ text: view_builder_utils_1.SlackViewBuilder.generatePlainText(app_copy_const_1.APP_COPY.HOME_VIEW.CHECKOUT_BUTTON),
63
+ action_id: app_consts_1.APP_ACTION.SUBMIT_CHECKOUT,
64
+ style: 'primary',
65
+ },
66
+ ]
67
+ : []),
68
+ ...(isAdmin
69
+ ? [
70
+ {
71
+ type: 'button',
72
+ text: view_builder_utils_1.SlackViewBuilder.generatePlainText(app_copy_const_1.APP_COPY.HOME_VIEW.ADMIN_SETTINGS_BUTTON),
73
+ action_id: app_consts_1.APP_ACTION.OPEN_SETTINGS_MODAL,
74
+ },
75
+ ]
76
+ : []),
77
+ ],
78
+ },
79
+ view_builder_utils_1.SlackViewBuilder.DIVIDER,
80
+ ]
81
+ : []),
82
+ Object.assign(Object.assign({}, view_builder_utils_1.SlackViewBuilder.generateMarkdownSection(app_copy_const_1.APP_COPY.HOME_VIEW.SELECT_OFFICE_DAYS_MARKDOWN)), { accessory: Object.assign({ type: 'checkboxes', action_id: app_consts_1.APP_ACTION.WORKDAY_CHECKBOXES, options }, (initial.length > 0 && { initial_options: initial })) }),
83
+ {
84
+ type: 'actions',
85
+ elements: [
86
+ {
87
+ type: 'button',
88
+ text: view_builder_utils_1.SlackViewBuilder.generatePlainText(app_copy_const_1.APP_COPY.HOME_VIEW.ADD_VISIT_DETAILS_BUTTON),
89
+ action_id: app_consts_1.APP_ACTION.OPEN_SCHEDULE_MODAL,
90
+ },
91
+ ],
92
+ },
93
+ view_builder_utils_1.SlackViewBuilder.DIVIDER,
94
+ view_builder_utils_1.SlackViewBuilder.generateMarkdownSection(buildPresence(dates, userPresences)),
95
+ ],
96
+ };
97
+ }
98
+ function buildPresence(days, userPresences) {
99
+ const lines = [app_copy_const_1.APP_COPY.HOME_VIEW.WHO_IS_IN_OFFICE_MARKDOWN];
100
+ for (const date of days) {
101
+ const iso = (0, date_utils_1.formatISODateLocal)(date);
102
+ const formattedPresences = Object.entries(userPresences)
103
+ .filter(([_, presence]) => presence === null || presence === void 0 ? void 0 : presence[iso])
104
+ .map(([u, presence]) => {
105
+ const dayPresence = presence[iso];
106
+ return formatPresence(u, dayPresence);
107
+ });
108
+ lines.push(`*${(0, date_utils_1.formatDateLong)(date)}*\n${formattedPresences.length > 0
109
+ ? formattedPresences.join('\n')
110
+ : app_copy_const_1.APP_COPY.HOME_VIEW.NO_ONE_SCHEDULED_MARKDOWN}`);
111
+ }
112
+ return lines.join('\n\n');
113
+ }
114
+ function formatPresence(u, presence) {
115
+ if (!presence)
116
+ return `<@${u}>`;
117
+ const parts = [];
118
+ if (presence.isBringingDog)
119
+ parts.push(' 🐶');
120
+ if (presence.office)
121
+ parts.push('🏢 ' + presence.office);
122
+ if (presence.presenceTime === types_1.PRESENCE_TIME.AFTERNOON)
123
+ parts.push(app_copy_const_1.APP_COPY.HOME_VIEW.AFTERNOON_ONLY);
124
+ if (presence.presenceTime === types_1.PRESENCE_TIME.MORNING)
125
+ parts.push(app_copy_const_1.APP_COPY.HOME_VIEW.MORNING_ONLY);
126
+ if (presence.message)
127
+ parts.push(` | 💬 _${presence.message}_`);
128
+ return `<@${u}> ${parts.join(' ')}`.trim();
129
+ }
130
+ //# sourceMappingURL=view.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.utils.js","sourceRoot":"","sources":["../../../../../../../libs/@vigilant-broccoli/slackbots/src/office-presence-app/utils/view.utils.ts"],"names":[],"mappings":"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"}