@bigbinary/neeto-message-templates-frontend 0.1.0 → 0.2.0

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 CHANGED
@@ -21,10 +21,10 @@ the creation of SMS, Email and Whatsapp templates.
21
21
  bundle install
22
22
  ```
23
23
 
24
- 3. Configure the organization model in the host application.
24
+ 3. Configure the owner model in the host application.
25
25
 
26
26
  ```ruby
27
- has_many :message_templates, class_name: "NeetoMessageTemplatesEngine::MessageTemplate", dependent: :destroy
27
+ has_many :message_templates, as: :owner, class_name: "NeetoMessageTemplatesEngine::MessageTemplate", dependent: :destroy
28
28
  ```
29
29
 
30
30
  4. Add this line to your application's `config/routes.rb` file
@@ -55,6 +55,15 @@ the creation of SMS, Email and Whatsapp templates.
55
55
  end
56
56
  ```
57
57
 
58
+ 7. Create an initializer file in the host app under
59
+ `configs/initializers/neeto-message-templates.rb` & provide the name of owner
60
+ model for the message templates. The message_templates `belongs_to` this
61
+ `owner`.
62
+
63
+ ```ruby
64
+ NeetoMessageTemplatesEngine.owner_class = "Organization"
65
+ ```
66
+
58
67
  # Frontend Package Installation
59
68
 
60
69
  Install the latest `neetoMessageTemplates` package using the below command:
@@ -80,6 +89,10 @@ yarn add @bigbinary/neeto-message-templates-frontend
80
89
 
81
90
  - `templateVariables`: (optional) To add dynamic variables to form body field.
82
91
 
92
+ - `ownerId`: (optional) To provide the `id` of the owner if it is not an
93
+ Organization model. If the owner is an Organization, this prop can be left
94
+ unspecified.
95
+
83
96
  ### Usage
84
97
 
85
98
  ```javascript
@@ -141,6 +154,10 @@ const App = () => {
141
154
 
142
155
  - `templateVariables`: (optional) To add dynamic variables to form body field.
143
156
 
157
+ - `ownerId`: (optional) To provide the `id` of the owner if it is not an
158
+ Organization model. If the owner is an Organization, this prop can be left
159
+ unspecified.
160
+
144
161
  ### Usage
145
162
 
146
163
  ```js
package/dist/index.cjs.js CHANGED
@@ -13,8 +13,8 @@ var ramda = require('ramda');
13
13
  var reactQuery = require('react-query');
14
14
  var devtools = require('react-query/devtools');
15
15
  var neetoIcons = require('@bigbinary/neeto-icons');
16
- var axios = require('axios');
17
16
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
17
+ var axios = require('axios');
18
18
  var zustand = require('zustand');
19
19
  var neetoEditor = require('@bigbinary/neeto-editor');
20
20
  var formik$1 = require('@bigbinary/neetoui/formik');
@@ -5284,6 +5284,7 @@ var template = {
5284
5284
  "delete": "Delete",
5285
5285
  edit: "Edit",
5286
5286
  saveChanges: "Save changes",
5287
+ send: "Send",
5287
5288
  cancel: "Cancel",
5288
5289
  emailAddress: "Email address",
5289
5290
  phoneNumber: "Phone number",
@@ -5426,18 +5427,31 @@ var fetchMessageTemplates = function fetchMessageTemplates(params) {
5426
5427
  params: params
5427
5428
  });
5428
5429
  };
5429
- var createMessageTemplate = function createMessageTemplate(params) {
5430
+ var createMessageTemplate = function createMessageTemplate(_ref) {
5431
+ var messageTemplate = _ref.messageTemplate,
5432
+ ownerId = _ref.ownerId;
5430
5433
  return axios__default["default"].post(MESSAGE_TEMPLATE_BASE_URL, {
5431
- messageTemplate: params
5434
+ messageTemplate: messageTemplate,
5435
+ ownerId: ownerId
5432
5436
  });
5433
5437
  };
5434
- var updateMessageTemplate = function updateMessageTemplate(id, params) {
5438
+ var updateMessageTemplate = function updateMessageTemplate(_ref2) {
5439
+ var id = _ref2.id,
5440
+ messageTemplate = _ref2.messageTemplate,
5441
+ ownerId = _ref2.ownerId;
5435
5442
  return axios__default["default"].patch("".concat(MESSAGE_TEMPLATE_BASE_URL, "/").concat(id), {
5436
- messageTemplate: params
5443
+ messageTemplate: messageTemplate,
5444
+ ownerId: ownerId
5437
5445
  });
5438
5446
  };
5439
- var deleteMessageTemplate = function deleteMessageTemplate(id) {
5440
- return axios__default["default"]["delete"]("".concat(MESSAGE_TEMPLATE_BASE_URL, "/").concat(id));
5447
+ var deleteMessageTemplate = function deleteMessageTemplate(_ref3) {
5448
+ var id = _ref3.id,
5449
+ ownerId = _ref3.ownerId;
5450
+ return axios__default["default"]["delete"]("".concat(MESSAGE_TEMPLATE_BASE_URL, "/").concat(id), {
5451
+ data: {
5452
+ ownerId: ownerId
5453
+ }
5454
+ });
5441
5455
  };
5442
5456
  var messageTemplatesApi = {
5443
5457
  fetchAll: fetchMessageTemplates,
@@ -5450,42 +5464,46 @@ var QUERY_KEYS = {
5450
5464
  MESSAGE_TEMPLATE: "message-templates"
5451
5465
  };
5452
5466
 
5467
+ var ownerIdValue = function ownerIdValue(ownerId) {
5468
+ return ramda.isEmpty(ownerId) ? undefined : ownerId;
5469
+ };
5453
5470
  var useFetchTemplates = function useFetchTemplates(params) {
5454
5471
  return reactQuery.useQuery([QUERY_KEYS.MESSAGE_TEMPLATE, params], function () {
5455
5472
  return messageTemplatesApi.fetchAll(params);
5456
5473
  });
5457
5474
  };
5458
- var useCreateTemplate = function useCreateTemplate(options) {
5459
- var queryClient = reactQuery.useQueryClient();
5460
- return reactQuery.useMutation(function (payload) {
5461
- return messageTemplatesApi.create(payload);
5475
+ var useCreateTemplate = function useCreateTemplate(ownerId, options) {
5476
+ return reactUtils.useMutationWithInvalidation(function (messageTemplate) {
5477
+ return messageTemplatesApi.create({
5478
+ messageTemplate: messageTemplate,
5479
+ ownerId: ownerIdValue(ownerId)
5480
+ });
5462
5481
  }, {
5463
- onSuccess: function onSuccess() {
5464
- queryClient.invalidateQueries(QUERY_KEYS.MESSAGE_TEMPLATE);
5465
- options === null || options === void 0 ? void 0 : options.onSuccess();
5466
- }
5482
+ keysToInvalidate: [QUERY_KEYS.MESSAGE_TEMPLATE],
5483
+ onSuccess: options === null || options === void 0 ? void 0 : options.onSuccess
5467
5484
  });
5468
5485
  };
5469
- var useUpdateTemplate = function useUpdateTemplate() {
5470
- var queryClient = reactQuery.useQueryClient();
5471
- return reactQuery.useMutation(function (_ref) {
5486
+ var useUpdateTemplate = function useUpdateTemplate(ownerId) {
5487
+ return reactUtils.useMutationWithInvalidation(function (_ref) {
5472
5488
  var id = _ref.id,
5473
5489
  payload = _ref.payload;
5474
- return messageTemplatesApi.update(id, payload);
5490
+ return messageTemplatesApi.update({
5491
+ id: id,
5492
+ messageTemplate: payload,
5493
+ ownerId: ownerIdValue(ownerId)
5494
+ });
5475
5495
  }, {
5476
- onSuccess: function onSuccess() {
5477
- queryClient.invalidateQueries(QUERY_KEYS.MESSAGE_TEMPLATE);
5478
- }
5496
+ keysToInvalidate: [QUERY_KEYS.MESSAGE_TEMPLATE]
5479
5497
  });
5480
5498
  };
5481
- var useDeleteTemplate = function useDeleteTemplate() {
5482
- var queryClient = reactQuery.useQueryClient();
5483
- return reactQuery.useMutation(function (id) {
5484
- return messageTemplatesApi["delete"](id);
5499
+ var useDeleteTemplate = function useDeleteTemplate(ownerId) {
5500
+ return reactUtils.useMutationWithInvalidation(function (id) {
5501
+ return messageTemplatesApi["delete"]({
5502
+ id: id,
5503
+ ownerId: ownerIdValue(ownerId)
5504
+ });
5485
5505
  }, {
5486
- onSuccess: function onSuccess() {
5487
- queryClient.invalidateQueries(QUERY_KEYS.MESSAGE_TEMPLATE);
5488
- }
5506
+ keysToInvalidate: [QUERY_KEYS.MESSAGE_TEMPLATE]
5489
5507
  });
5490
5508
  };
5491
5509
 
@@ -5501,10 +5519,11 @@ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if
5501
5519
  function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5502
5520
  var RowActions = function RowActions(_ref) {
5503
5521
  var template = _ref.template,
5504
- setManageTemplatePane = _ref.setManageTemplatePane;
5522
+ setManageTemplatePane = _ref.setManageTemplatePane,
5523
+ ownerId = _ref.ownerId;
5505
5524
  var _useTranslation = useTranslation(),
5506
5525
  t = _useTranslation.t;
5507
- var _useUpdateTemplate = useUpdateTemplate(),
5526
+ var _useUpdateTemplate = useUpdateTemplate(ownerId),
5508
5527
  update = _useUpdateTemplate.mutate;
5509
5528
  var Menu = neetoui.Dropdown.Menu,
5510
5529
  MenuItem = neetoui.Dropdown.MenuItem;
@@ -5562,7 +5581,7 @@ var renderSearchProps = function renderSearchProps(label, setSearchTerm, searchT
5562
5581
  value: searchTerm
5563
5582
  };
5564
5583
  };
5565
- var buildTableColumnData = function buildTableColumnData(setManageTemplatePane) {
5584
+ var buildTableColumnData = function buildTableColumnData(setManageTemplatePane, ownerId) {
5566
5585
  return [{
5567
5586
  dataIndex: "name",
5568
5587
  key: "name",
@@ -5576,6 +5595,7 @@ var buildTableColumnData = function buildTableColumnData(setManageTemplatePane)
5576
5595
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
5577
5596
  style: "body2"
5578
5597
  }, name), /*#__PURE__*/React__default["default"].createElement(RowActions, {
5598
+ ownerId: ownerId,
5579
5599
  setManageTemplatePane: setManageTemplatePane,
5580
5600
  template: template
5581
5601
  }));
@@ -6240,7 +6260,7 @@ var useFilters = function useFilters() {
6240
6260
  };
6241
6261
  };
6242
6262
 
6243
- var useTemplates = function useTemplates(type) {
6263
+ var useTemplates = function useTemplates(type, ownerId) {
6244
6264
  var _useState = React.useState(neetoFiltersFrontend.buildFiltersFromURL(buildTableColumnData().filter(ramda.prop("node")))),
6245
6265
  _useState2 = _slicedToArray(_useState, 2),
6246
6266
  filters = _useState2[0],
@@ -6255,16 +6275,17 @@ var useTemplates = function useTemplates(type) {
6255
6275
  pageIndex: pageIndex,
6256
6276
  pageSize: pageSize,
6257
6277
  filters: JSON.stringify(filters),
6258
- templateType: MESSAGE_TEMPLATES[type].value
6278
+ templateType: MESSAGE_TEMPLATES[type].value,
6279
+ ownerId: ramda.isEmpty(ownerId) ? undefined : ownerId
6259
6280
  };
6260
6281
  var _useFetchTemplates = useFetchTemplates(templateParams),
6261
6282
  _useFetchTemplates$da = _useFetchTemplates.data,
6262
6283
  templatesData = _useFetchTemplates$da === void 0 ? {} : _useFetchTemplates$da,
6263
6284
  isLoadingTemplates = _useFetchTemplates.isLoading,
6264
6285
  isFetching = _useFetchTemplates.isFetching;
6265
- var _useCreateTemplate = useCreateTemplate(),
6286
+ var _useCreateTemplate = useCreateTemplate(ownerId),
6266
6287
  create = _useCreateTemplate.mutate;
6267
- var _useUpdateTemplate = useUpdateTemplate(),
6288
+ var _useUpdateTemplate = useUpdateTemplate(ownerId),
6268
6289
  update = _useUpdateTemplate.mutate;
6269
6290
  var createUpdateTemplate = function createUpdateTemplate(_ref, options) {
6270
6291
  var isEdit = _ref.isEdit,
@@ -6298,10 +6319,11 @@ var List = function List(_ref) {
6298
6319
  pageProperties = _ref.pageProperties,
6299
6320
  label = _ref.label,
6300
6321
  addText = _ref.addText,
6301
- isFilterApplied = _ref.isFilterApplied;
6322
+ isFilterApplied = _ref.isFilterApplied,
6323
+ ownerId = _ref.ownerId;
6302
6324
  var _useTranslation = useTranslation(),
6303
6325
  t = _useTranslation.t;
6304
- var _useDeleteTemplate = useDeleteTemplate(),
6326
+ var _useDeleteTemplate = useDeleteTemplate(ownerId),
6305
6327
  deleteTemplate = _useDeleteTemplate.mutate,
6306
6328
  isDeleting = _useDeleteTemplate.isLoading;
6307
6329
  var templates = templatesData.templates,
@@ -6322,7 +6344,7 @@ var List = function List(_ref) {
6322
6344
  }, !ramda.isEmpty(templates) ? /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
6323
6345
  hasPagination: totalCount > pageSize
6324
6346
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, {
6325
- columnData: buildTableColumnData(setManageTemplatePane),
6347
+ columnData: buildTableColumnData(setManageTemplatePane, ownerId),
6326
6348
  currentPageNumber: pageIndex,
6327
6349
  defaultPageSize: pageSize,
6328
6350
  loading: isLoading,
@@ -6384,7 +6406,9 @@ var MessageTemplates = function MessageTemplates(_ref) {
6384
6406
  _ref$shouldIncludeTes = _ref.shouldIncludeTestTemplate,
6385
6407
  shouldIncludeTestTemplate = _ref$shouldIncludeTes === void 0 ? true : _ref$shouldIncludeTes,
6386
6408
  _ref$templateVariable = _ref.templateVariables,
6387
- templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable;
6409
+ templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable,
6410
+ _ref$ownerId = _ref.ownerId,
6411
+ ownerId = _ref$ownerId === void 0 ? "" : _ref$ownerId;
6388
6412
  var _useState = React.useState(MESSAGE_TEMPLATE_INITIAL_STATE),
6389
6413
  _useState2 = _slicedToArray(_useState, 2),
6390
6414
  manageTemplatePane = _useState2[0],
@@ -6398,7 +6422,7 @@ var MessageTemplates = function MessageTemplates(_ref) {
6398
6422
  filterColumns = _useFilters.filterColumns,
6399
6423
  setSearchTerm = _useFilters.setSearchTerm,
6400
6424
  searchTerm = _useFilters.searchTerm;
6401
- var _useTemplates = useTemplates(type),
6425
+ var _useTemplates = useTemplates(type, ownerId),
6402
6426
  isLoading = _useTemplates.isLoading,
6403
6427
  templatesData = _useTemplates.templatesData,
6404
6428
  createUpdateTemplate = _useTemplates.createUpdateTemplate,
@@ -6459,6 +6483,7 @@ var MessageTemplates = function MessageTemplates(_ref) {
6459
6483
  label: label,
6460
6484
  labelSingular: labelSingular,
6461
6485
  manageTemplatePane: manageTemplatePane,
6486
+ ownerId: ownerId,
6462
6487
  pageProperties: pageProperties,
6463
6488
  setManageTemplatePane: setManageTemplatePane,
6464
6489
  setPageProperties: setPageProperties,
@@ -6582,7 +6607,7 @@ var EmailAndSms = function EmailAndSms(_ref) {
6582
6607
  className: "absolute bottom-0 left-0 flex gap-x-2"
6583
6608
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
6584
6609
  disabled: !dirty || isSubmitting,
6585
- label: t("template.saveChanges"),
6610
+ label: t("template.send"),
6586
6611
  loading: isSubmitting,
6587
6612
  type: "submit"
6588
6613
  }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
@@ -6701,7 +6726,7 @@ var Whatsapp = function Whatsapp(_ref) {
6701
6726
  className: "absolute bottom-0 left-0 flex gap-x-2"
6702
6727
  }, /*#__PURE__*/React__default["default"].createElement(formik$1.Button, {
6703
6728
  disabled: !dirty || isSubmitting,
6704
- label: t("template.saveChanges"),
6729
+ label: t("template.send"),
6705
6730
  loading: isSubmitting,
6706
6731
  type: "submit"
6707
6732
  }), /*#__PURE__*/React__default["default"].createElement(formik$1.Button, {
@@ -6729,7 +6754,9 @@ var SendMessagePane = function SendMessagePane(_ref) {
6729
6754
  _ref$customFieldsVali = _ref.customFieldsValidationSchema,
6730
6755
  customFieldsValidationSchema = _ref$customFieldsVali === void 0 ? {} : _ref$customFieldsVali,
6731
6756
  _ref$templateVariable = _ref.templateVariables,
6732
- templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable;
6757
+ templateVariables = _ref$templateVariable === void 0 ? {} : _ref$templateVariable,
6758
+ _ref$ownerId = _ref.ownerId,
6759
+ ownerId = _ref$ownerId === void 0 ? "" : _ref$ownerId;
6733
6760
  var _useTranslation = useTranslation(),
6734
6761
  t = _useTranslation.t;
6735
6762
  var initialFocusField = React.useRef();
@@ -6739,7 +6766,8 @@ var SendMessagePane = function SendMessagePane(_ref) {
6739
6766
  var value = MESSAGE_TEMPLATES[type].value;
6740
6767
  var templateParams = {
6741
6768
  status: "active",
6742
- templateType: value
6769
+ templateType: value,
6770
+ ownerId: ownerId
6743
6771
  };
6744
6772
  var _useFetchTemplates = useFetchTemplates(templateParams),
6745
6773
  _useFetchTemplates$da = _useFetchTemplates.data,