@paro.io/expert-shared-components 1.12.3 → 1.12.5

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.
@@ -0,0 +1,6 @@
1
+ interface DownloadFileParams {
2
+ fileKey: string;
3
+ downloadDocumentUrl: string;
4
+ }
5
+ export declare const fileDownloader: ({ fileKey, downloadDocumentUrl, }: DownloadFileParams) => Promise<Blob | string | null>;
6
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.fileDownloader = void 0;
16
+ const DownloadClient_1 = __importDefault(require("../shared/DownloadClient"));
17
+ const utils_1 = require("../shared/utils");
18
+ const fileDownloader = (_a) => __awaiter(void 0, [_a], void 0, function* ({ fileKey, downloadDocumentUrl, }) {
19
+ try {
20
+ (0, utils_1.showToast)("success", "Starting Document Download");
21
+ const downloadClient = new DownloadClient_1.default({
22
+ fileKey,
23
+ downloadDocumentUrl,
24
+ });
25
+ const result = yield downloadClient.downloadDocument();
26
+ if (result instanceof Blob) {
27
+ // Handle Blob (e.g., save to file or display)
28
+ (0, utils_1.showToast)("success", "Document Download Successful");
29
+ return result;
30
+ }
31
+ else if (typeof result === "string") {
32
+ // Handle text or JSON response
33
+ (0, utils_1.showToast)("success", "Document Download Successful");
34
+ return result;
35
+ }
36
+ else {
37
+ throw new Error("Unexpected response type");
38
+ }
39
+ }
40
+ catch (error) {
41
+ console.error(`Error Downloading File: ${error}`);
42
+ (0, utils_1.showToast)("warning", "Error downloading file. Please try again.");
43
+ return null;
44
+ }
45
+ });
46
+ exports.fileDownloader = fileDownloader;
@@ -31,9 +31,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
31
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
32
32
  });
33
33
  };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
34
  Object.defineProperty(exports, "__esModule", { value: true });
38
35
  exports.ClientDisputeProjectCard = void 0;
39
36
  const react_1 = __importStar(require("react"));
@@ -42,7 +39,7 @@ const base_ui_2 = require("@paro.io/base-ui");
42
39
  const core_1 = require("@material-ui/core");
43
40
  const base_icons_1 = require("@paro.io/base-icons");
44
41
  const FileUploader_1 = require("../FileUploader");
45
- const DownloadClient_1 = __importDefault(require("../shared/DownloadClient"));
42
+ const FileDownloader_1 = require("../FileDownloader");
46
43
  const useStyles = (0, core_1.makeStyles)((theme) => ({
47
44
  root: {
48
45
  width: "100%",
@@ -134,8 +131,7 @@ const ClientDisputeProjectCard = ({ clientInvoice, updateClientInvoiceDisputeMut
134
131
  };
135
132
  const handleDownloadDocument = (projectId, fileName) => __awaiter(void 0, void 0, void 0, function* () {
136
133
  const downloadFileName = `project-${projectId}/${fileName}`;
137
- const downloadClient = new DownloadClient_1.default({ downloadDocumentUrl: downloadDocumentUrl, fileKey: downloadFileName });
138
- const downloadData = yield downloadClient.downloadDocument();
134
+ const downloadData = yield (0, FileDownloader_1.fileDownloader)({ downloadDocumentUrl: downloadDocumentUrl, fileKey: downloadFileName });
139
135
  handleDownloadPdf({ fileData: downloadData, downloadFilename: fileName, streamData: true });
140
136
  });
141
137
  (0, react_1.useEffect)(() => {
@@ -16,5 +16,5 @@ interface DiscussionSectionProps {
16
16
  onCreateMessage: (variables: any) => Promise<any>;
17
17
  isInternal?: boolean;
18
18
  }
19
- export declare const DiscussionSection: ({ disputeId, currentUser, messages, onCreateMessage, isInternal }: DiscussionSectionProps) => JSX.Element;
19
+ export declare const DiscussionSection: ({ disputeId, currentUser, messages, onCreateMessage, isInternal, }: DiscussionSectionProps) => JSX.Element;
20
20
  export {};
@@ -39,7 +39,8 @@ exports.DiscussionSection = void 0;
39
39
  const react_1 = __importStar(require("react"));
40
40
  const base_ui_1 = require("@paro.io/base-ui");
41
41
  const dayjs_1 = __importDefault(require("dayjs"));
42
- const DiscussionSection = ({ disputeId, currentUser, messages, onCreateMessage, isInternal }) => {
42
+ const base_icons_1 = require("@paro.io/base-icons");
43
+ const DiscussionSection = ({ disputeId, currentUser, messages, onCreateMessage, isInternal = false, }) => {
43
44
  const [newMessage, setNewMessage] = (0, react_1.useState)('');
44
45
  const [visibility, setVisibility] = (0, react_1.useState)('ALL');
45
46
  const [isLoading, setIsLoading] = (0, react_1.useState)(false);
@@ -61,7 +62,7 @@ const DiscussionSection = ({ disputeId, currentUser, messages, onCreateMessage,
61
62
  disputeId,
62
63
  messageText: newMessage,
63
64
  visibility,
64
- senderId: (_a = currentUser === null || currentUser === void 0 ? void 0 : currentUser.app_metadata) === null || _a === void 0 ? void 0 : _a.userId,
65
+ senderId: isInternal ? (_a = currentUser === null || currentUser === void 0 ? void 0 : currentUser.app_metadata) === null || _a === void 0 ? void 0 : _a.userId : currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
65
66
  },
66
67
  },
67
68
  });
@@ -120,7 +121,22 @@ const DiscussionSection = ({ disputeId, currentUser, messages, onCreateMessage,
120
121
  };
121
122
  return (react_1.default.createElement("div", { className: "space-y-6" },
122
123
  react_1.default.createElement("div", { className: "flex items-center justify-between" },
123
- react_1.default.createElement("div", { className: "text-lg font-bold text-[#333333]" }, "Discussion Thread")),
124
+ react_1.default.createElement("div", { className: "text-lg font-bold text-[#333333]" },
125
+ "Discussion Thread",
126
+ react_1.default.createElement("br", null),
127
+ react_1.default.createElement("div", { className: "flex items-center space-x-2 text-xs font-normal" },
128
+ react_1.default.createElement("div", { className: "flex items-center space-x-1" },
129
+ react_1.default.createElement("span", { className: "w-2 h-2 rounded-full", style: { backgroundColor: '#643E0C' } }),
130
+ react_1.default.createElement("span", null, "\u00A0Expert")),
131
+ react_1.default.createElement("div", { className: "flex items-center space-x-1" },
132
+ react_1.default.createElement("span", { className: "w-2 h-2 rounded-full", style: { backgroundColor: '#195C5C' } }),
133
+ react_1.default.createElement("span", null, "\u00A0Client")),
134
+ react_1.default.createElement("div", { className: "flex items-center space-x-1" },
135
+ react_1.default.createElement("span", { className: "w-2 h-2 rounded-full", style: { backgroundColor: '#2196F3' } }),
136
+ react_1.default.createElement("span", null, "\u00A0Paro Support")))),
137
+ react_1.default.createElement("div", { className: "flex flex-row justify-start mr-4 text-gray-600" },
138
+ react_1.default.createElement(base_icons_1.IconChat, { size: "sm", className: "text-blue-600 mr-2" }),
139
+ react_1.default.createElement("p", null, "This discussion applies to all projects in this dispute."))),
124
140
  react_1.default.createElement("div", { className: "rounded" },
125
141
  messages.length ? react_1.default.createElement("div", { className: "flex-1 max-h-[40vh] overflow-y-auto border rounded-md p-2 space-y-6" }, messages.map((message) => (react_1.default.createElement("div", { key: message.id, className: `flex ${getMessageAlignment(message.sender.userTypeId)}` },
126
142
  react_1.default.createElement("div", { className: `flex space-x-4 ${getMessageOrder(message.sender.userTypeId)} ${getMessageAlignment(message.sender.userTypeId)}` },
@@ -1 +1,2 @@
1
1
  export { InvoiceCard } from './InvoiceCard';
2
+ export { DiscussionSection } from './DiscussionSection';
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InvoiceCard = void 0;
3
+ exports.DiscussionSection = exports.InvoiceCard = void 0;
4
4
  var InvoiceCard_1 = require("./InvoiceCard");
5
5
  Object.defineProperty(exports, "InvoiceCard", { enumerable: true, get: function () { return InvoiceCard_1.InvoiceCard; } });
6
+ var DiscussionSection_1 = require("./DiscussionSection");
7
+ Object.defineProperty(exports, "DiscussionSection", { enumerable: true, get: function () { return DiscussionSection_1.DiscussionSection; } });
package/lib/index.d.ts CHANGED
@@ -13,3 +13,5 @@ export { ActiveProjectCard } from './components/ProjectCard/ActiveProjectCard';
13
13
  export { InvoiceCard } from './components/Invoices/InvoiceCard';
14
14
  export { DiscussionThread } from './components/DiscussionThread';
15
15
  export { fileUploader } from './components/FileUploader';
16
+ export { DiscussionSection } from './components/Invoices/DiscussionSection';
17
+ export { fileDownloader } from './components/FileDownloader';
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fileUploader = exports.DiscussionThread = exports.InvoiceCard = exports.ActiveProjectCard = exports.sharedUtils = exports.ServiceLinesTemplate = exports.HeaderNavBar = exports.DocumentCenter = exports.ProfileCompletedPercentage = exports.ExpertProfileHeader = exports.OrganizationChart = exports.FirmEmployeeSection = exports.ClientReferenceSection = exports.Reviews = exports.ReviewsTab = void 0;
3
+ exports.fileDownloader = exports.DiscussionSection = exports.fileUploader = exports.DiscussionThread = exports.InvoiceCard = exports.ActiveProjectCard = exports.sharedUtils = exports.ServiceLinesTemplate = exports.HeaderNavBar = exports.DocumentCenter = exports.ProfileCompletedPercentage = exports.ExpertProfileHeader = exports.OrganizationChart = exports.FirmEmployeeSection = exports.ClientReferenceSection = exports.Reviews = exports.ReviewsTab = void 0;
4
4
  var ReviewsTab_1 = require("./components/ReviewsTab");
5
5
  Object.defineProperty(exports, "ReviewsTab", { enumerable: true, get: function () { return ReviewsTab_1.ReviewsTab; } });
6
6
  var Reviews_1 = require("./components/Reviews");
@@ -31,3 +31,7 @@ var DiscussionThread_1 = require("./components/DiscussionThread");
31
31
  Object.defineProperty(exports, "DiscussionThread", { enumerable: true, get: function () { return DiscussionThread_1.DiscussionThread; } });
32
32
  var FileUploader_1 = require("./components/FileUploader");
33
33
  Object.defineProperty(exports, "fileUploader", { enumerable: true, get: function () { return FileUploader_1.fileUploader; } });
34
+ var DiscussionSection_1 = require("./components/Invoices/DiscussionSection");
35
+ Object.defineProperty(exports, "DiscussionSection", { enumerable: true, get: function () { return DiscussionSection_1.DiscussionSection; } });
36
+ var FileDownloader_1 = require("./components/FileDownloader");
37
+ Object.defineProperty(exports, "fileDownloader", { enumerable: true, get: function () { return FileDownloader_1.fileDownloader; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paro.io/expert-shared-components",
3
- "version": "1.12.3",
3
+ "version": "1.12.5",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {