@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.
- package/README.md +7 -0
- package/package.json +18 -0
- package/src/index.d.ts +6 -0
- package/src/index.js +11 -0
- package/src/index.js.map +1 -0
- package/src/lib/consts.d.ts +3 -0
- package/src/lib/consts.js +8 -0
- package/src/lib/consts.js.map +1 -0
- package/src/lib/utils/modal.utils.d.ts +13 -0
- package/src/lib/utils/modal.utils.js +63 -0
- package/src/lib/utils/modal.utils.js.map +1 -0
- package/src/lib/utils/utils.d.ts +13 -0
- package/src/lib/utils/utils.js +54 -0
- package/src/lib/utils/utils.js.map +1 -0
- package/src/lib/utils/view-builder.utils.d.ts +22 -0
- package/src/lib/utils/view-builder.utils.js +34 -0
- package/src/lib/utils/view-builder.utils.js.map +1 -0
- package/src/office-presence-app/app-reminder.d.ts +2 -0
- package/src/office-presence-app/app-reminder.js +69 -0
- package/src/office-presence-app/app-reminder.js.map +1 -0
- package/src/office-presence-app/consts/app-copy.const.d.ts +54 -0
- package/src/office-presence-app/consts/app-copy.const.js +66 -0
- package/src/office-presence-app/consts/app-copy.const.js.map +1 -0
- package/src/office-presence-app/consts/app.consts.d.ts +10 -0
- package/src/office-presence-app/consts/app.consts.js +14 -0
- package/src/office-presence-app/consts/app.consts.js.map +1 -0
- package/src/office-presence-app/consts/data.consts.d.ts +2 -0
- package/src/office-presence-app/consts/data.consts.js +27 -0
- package/src/office-presence-app/consts/data.consts.js.map +1 -0
- package/src/office-presence-app/consts/modals.const.d.ts +5 -0
- package/src/office-presence-app/consts/modals.const.js +199 -0
- package/src/office-presence-app/consts/modals.const.js.map +1 -0
- package/src/office-presence-app/office-presence-app.d.ts +10 -0
- package/src/office-presence-app/office-presence-app.js +100 -0
- package/src/office-presence-app/office-presence-app.js.map +1 -0
- package/src/office-presence-app/types.d.ts +25 -0
- package/src/office-presence-app/types.js +9 -0
- package/src/office-presence-app/types.js.map +1 -0
- package/src/office-presence-app/utils/action.utils.d.ts +6 -0
- package/src/office-presence-app/utils/action.utils.js +83 -0
- package/src/office-presence-app/utils/action.utils.js.map +1 -0
- package/src/office-presence-app/utils/date.utils.d.ts +4 -0
- package/src/office-presence-app/utils/date.utils.js +43 -0
- package/src/office-presence-app/utils/date.utils.js.map +1 -0
- package/src/office-presence-app/utils/db.utils.d.ts +4 -0
- package/src/office-presence-app/utils/db.utils.js +66 -0
- package/src/office-presence-app/utils/db.utils.js.map +1 -0
- package/src/office-presence-app/utils/view.utils.d.ts +12 -0
- package/src/office-presence-app/utils/view.utils.js +130 -0
- 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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"}
|