@paro.io/expert-shared-components 1.6.5 → 1.6.7

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.
@@ -322,6 +322,11 @@ const ClientDocumentsTable = ({ legacyFreelancerId, expertFiles, setExpertClient
322
322
  }
323
323
  }
324
324
  });
325
+ (0, react_1.useEffect)(() => {
326
+ if (expertFiles && expertFiles.length > 0) {
327
+ setFiles(expertFiles);
328
+ }
329
+ }, [expertFiles]);
325
330
  const toggleDeleteModal = (fileName, fileId) => {
326
331
  setDeleteModalOpen(!isDeleteModalOpen);
327
332
  if (fileName) {
@@ -332,7 +337,7 @@ const ClientDocumentsTable = ({ legacyFreelancerId, expertFiles, setExpertClient
332
337
  return (react_1.default.createElement(react_1.default.Fragment, null,
333
338
  react_1.default.createElement(DocumentUploadRow_1.DocumentUploadRow, { clientAndProject: clientAndProject, setClientAndProject: setClientAndProject, clientAndProjectsList: clientAndProjectsList, docType: docType, setDocType: setDocType, paroDocuments: paroDocuments, uploadExpertClientFiles: uploadExpertClientFiles, refetchFiles: refetchFiles, legacyFreelancerId: legacyFreelancerId, freelancerName: freelancerName, freelancerEmail: freelancerEmail, isClientPortal: isClientPortal, documentUploadUrl: documentUploadUrl }),
334
339
  react_1.default.createElement(utils_1.CustomPaper, { style: { height: `${(files === null || files === void 0 ? void 0 : files.length) === 0 ? '30vh' : 'auto'}` } },
335
- (files === null || files === void 0 ? void 0 : files.length) > 0 && react_1.default.createElement("div", { className: 'w-1/3' },
340
+ react_1.default.createElement("div", { className: 'w-1/3' },
336
341
  react_1.default.createElement(base_ui_1.Input, { placeholder: "Search Documents", type: "text", value: searchText, onChange: (e) => setSearchText(e.target.value) })),
337
342
  react_1.default.createElement(core_1.Box, { mt: 2 }, (files === null || files === void 0 ? void 0 : files.length) > 0 ? react_1.default.createElement(core_1.Table, { style: { overflow: 'auto' } },
338
343
  react_1.default.createElement(core_1.TableHead, null,
@@ -4,6 +4,7 @@ interface DocumentCenterProps {
4
4
  setOpenModal: (openModal: boolean) => void;
5
5
  expertClientFilesLazyQuery: any;
6
6
  getClientAndProjectsLazyQuery?: any;
7
+ clientFilesData?: any[];
7
8
  uploadExpertClientFiles: any;
8
9
  uploadFileData?: any;
9
10
  deleteFileMutation?: any;
@@ -20,6 +21,7 @@ interface DocumentCenterProps {
20
21
  getFreelancerLazyQuery?: any;
21
22
  documentUploadUrl?: string;
22
23
  downloadDocumentUrl?: string;
24
+ loading?: boolean;
23
25
  }
24
- export declare const DocumentCenter: ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, }: DocumentCenterProps) => JSX.Element;
26
+ export declare const DocumentCenter: ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, clientFilesData, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, loading, }: DocumentCenterProps) => JSX.Element;
25
27
  export {};
@@ -80,41 +80,33 @@ const CustomDialogContent = (0, core_1.styled)(core_1.DialogContent)(({ theme })
80
80
  background: '#707070',
81
81
  },
82
82
  }));
83
- const DocumentCenter = ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal = false, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, }) => {
83
+ const DocumentCenter = ({ legacyFreelancerId, openModal, setOpenModal, expertClientFilesLazyQuery, getClientAndProjectsLazyQuery, clientFilesData, uploadExpertClientFiles, uploadFileData, deleteFileMutation, updateFreelancerExpiryMutation, foldername, getFilesLazyQuery, getFileLazyQuery, freelancerName, freelancerEmail, updateFileLastViewed, deleteExpertClientFile, isClientPortal = false, expertProjectsList, getFreelancerLazyQuery, documentUploadUrl, downloadDocumentUrl, loading, }) => {
84
84
  var _a;
85
85
  const [value, setValue] = (0, react_1.useState)(0);
86
- const [expertClientFiles, setExpertClientFiles] = (0, react_1.useState)([]);
86
+ const [expertClientFiles, setExpertClientFiles] = (0, react_1.useState)(clientFilesData !== null && clientFilesData !== void 0 ? clientFilesData : []);
87
87
  const [expertFiles, setExpertFiles] = (0, react_1.useState)([]);
88
88
  const [clientAndProjects, setClientAndProjects] = (0, react_1.useState)([]);
89
- const [loading, setLoading] = (0, react_1.useState)(false);
90
89
  const [insuranceExpiryDate, setInsuranceExpiryDate] = (0, react_1.useState)();
91
90
  const fetchQueries = () => __awaiter(void 0, void 0, void 0, function* () {
92
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
91
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
93
92
  try {
94
- setLoading(true);
93
+ loading = true;
95
94
  const freelancerIds = Array.isArray(legacyFreelancerId) ? legacyFreelancerId : [legacyFreelancerId];
96
95
  let clientFiles = [];
97
96
  let clientAndProjects = [];
98
97
  let expertFiles = [];
99
98
  let expiryDate = [];
100
- if (isClientPortal) {
101
- const clientFilesResponse = yield expertClientFilesLazyQuery();
102
- clientFiles = (_c = (_b = (_a = clientFilesResponse === null || clientFilesResponse === void 0 ? void 0 : clientFilesResponse.data) === null || _a === void 0 ? void 0 : _a.getExpertClientFiles) === null || _b === void 0 ? void 0 : _b.files) !== null && _c !== void 0 ? _c : [];
103
- }
104
- else {
105
- const [clientFilesResponse, clientAndProjectsResponse, expertFilesResponse, freelancerData] = yield Promise.all([
106
- expertClientFilesLazyQuery && expertClientFilesLazyQuery({ variables: { freelancerIds }, fetchPolicy: 'network-only', }),
107
- getClientAndProjectsLazyQuery && getClientAndProjectsLazyQuery({ variables: { legacyFreelancerId: legacyFreelancerId, forReviews: true }, fetchPolicy: 'network-only', }),
108
- getFilesLazyQuery && getFilesLazyQuery({ variables: { input: { foldername: foldername }, fetchPolicy: 'network-only', } }),
109
- getFreelancerLazyQuery && getFreelancerLazyQuery({ variables: { id: legacyFreelancerId }, fetchPolicy: 'network-only', })
110
- ]);
111
- clientFiles = (_f = (_e = (_d = clientFilesResponse === null || clientFilesResponse === void 0 ? void 0 : clientFilesResponse.data) === null || _d === void 0 ? void 0 : _d.getExpertClientFiles) === null || _e === void 0 ? void 0 : _e.files) !== null && _f !== void 0 ? _f : [];
112
- clientAndProjects = (_h = (_g = clientAndProjectsResponse === null || clientAndProjectsResponse === void 0 ? void 0 : clientAndProjectsResponse.data) === null || _g === void 0 ? void 0 : _g.getParoProjects) !== null && _h !== void 0 ? _h : [];
113
- expertFiles = (_k = (_j = expertFilesResponse === null || expertFilesResponse === void 0 ? void 0 : expertFilesResponse.data) === null || _j === void 0 ? void 0 : _j.getFiles) !== null && _k !== void 0 ? _k : [];
114
- expiryDate = (_m = (_l = freelancerData === null || freelancerData === void 0 ? void 0 : freelancerData.data) === null || _l === void 0 ? void 0 : _l.getFreelancer) === null || _m === void 0 ? void 0 : _m.insuranceExpiryDate;
115
- }
99
+ const [clientFilesResponse, clientAndProjectsResponse, expertFilesResponse, freelancerData] = yield Promise.all([
100
+ expertClientFilesLazyQuery && expertClientFilesLazyQuery({ variables: { freelancerIds }, fetchPolicy: 'network-only', }),
101
+ getClientAndProjectsLazyQuery && getClientAndProjectsLazyQuery({ variables: { legacyFreelancerId: legacyFreelancerId, forReviews: true }, fetchPolicy: 'network-only', }),
102
+ getFilesLazyQuery && getFilesLazyQuery({ variables: { input: { foldername: foldername }, fetchPolicy: 'network-only', } }),
103
+ getFreelancerLazyQuery && getFreelancerLazyQuery({ variables: { id: legacyFreelancerId }, fetchPolicy: 'network-only', })
104
+ ]);
105
+ clientFiles = (_c = (_b = (_a = clientFilesResponse === null || clientFilesResponse === void 0 ? void 0 : clientFilesResponse.data) === null || _a === void 0 ? void 0 : _a.getExpertClientFiles) === null || _b === void 0 ? void 0 : _b.files) !== null && _c !== void 0 ? _c : [];
106
+ clientAndProjects = (_e = (_d = clientAndProjectsResponse === null || clientAndProjectsResponse === void 0 ? void 0 : clientAndProjectsResponse.data) === null || _d === void 0 ? void 0 : _d.getParoProjects) !== null && _e !== void 0 ? _e : [];
107
+ expertFiles = (_g = (_f = expertFilesResponse === null || expertFilesResponse === void 0 ? void 0 : expertFilesResponse.data) === null || _f === void 0 ? void 0 : _f.getFiles) !== null && _g !== void 0 ? _g : [];
108
+ expiryDate = (_j = (_h = freelancerData === null || freelancerData === void 0 ? void 0 : freelancerData.data) === null || _h === void 0 ? void 0 : _h.getFreelancer) === null || _j === void 0 ? void 0 : _j.insuranceExpiryDate;
116
109
  const filterProjects = clientAndProjects.filter((p) => p.status !== 'Complete');
117
- setExpertClientFiles(clientFiles);
118
110
  setClientAndProjects(isClientPortal ? expertProjectsList : filterProjects);
119
111
  setExpertFiles(expertFiles);
120
112
  setInsuranceExpiryDate(expiryDate ? (0, utils_1.formatDate)(expiryDate) : '');
@@ -123,14 +115,22 @@ const DocumentCenter = ({ legacyFreelancerId, openModal, setOpenModal, expertCli
123
115
  console.error("Error fetching queries:", error);
124
116
  }
125
117
  finally {
126
- setLoading(false);
118
+ loading = false;
127
119
  }
128
120
  });
129
121
  (0, react_1.useEffect)(() => {
130
- if (openModal) {
122
+ if (openModal && !isClientPortal) {
131
123
  fetchQueries();
132
124
  }
133
125
  }, [openModal]);
126
+ (0, react_1.useEffect)(() => {
127
+ if (clientFilesData && clientFilesData.length > 0) {
128
+ setExpertClientFiles(clientFilesData !== null && clientFilesData !== void 0 ? clientFilesData : []);
129
+ setClientAndProjects(expertProjectsList !== null && expertProjectsList !== void 0 ? expertProjectsList : []);
130
+ setExpertFiles(clientFilesData);
131
+ loading = false;
132
+ }
133
+ }, [clientFilesData]);
134
134
  const handleChange = (event, newValue) => {
135
135
  if (newValue >= 0) {
136
136
  setValue(newValue);
@@ -321,7 +321,7 @@ const ParoDocumentsTable = ({ legacyFreelancerId, expiryDate, setExpiryDate, exp
321
321
  return (react_1.default.createElement(react_1.default.Fragment, null,
322
322
  react_1.default.createElement(DocumentUploadRow_1.DocumentUploadRow, { documentName: documentName, setDocumentName: setDocumentName, clientAndProject: clientAndProject, setClientAndProject: setClientAndProject, docType: docType, setDocType: setDocType, searchText: searchText, setSearchText: setSearchText, paroDocuments: paroDocuments, handleUpload: handleUpload, expiryDate: insuranceExpiryDate, handleDateChange: handleDateChange, error: error, isUploading: isUploading }),
323
323
  react_1.default.createElement(utils_1.CustomPaper, null,
324
- (files === null || files === void 0 ? void 0 : files.length) > 0 && react_1.default.createElement("div", { className: 'w-1/4' },
324
+ react_1.default.createElement("div", { className: 'w-1/4' },
325
325
  react_1.default.createElement(base_ui_1.Input, { placeholder: "Search Documents", type: "text", value: searchText, onChange: (e) => setSearchText(e.target.value) })),
326
326
  react_1.default.createElement(core_1.Box, { mt: 2 }, (files === null || files === void 0 ? void 0 : files.length) > 0 ?
327
327
  react_1.default.createElement(core_1.Table, { style: { overflow: 'auto' } },
@@ -62,13 +62,13 @@ exports.ProfilePhotoPreview = styled_components_1.default.img `
62
62
  object-position: top;
63
63
  `;
64
64
  const ProfileSection = ({ legacyFreelancerId, imageUrl, shouldAllowEditProfile, firstName, lastName, primaryServiceLine, editServiceLine, city, stateAbbreviation, email, phone, paroTenure, hourlyRate, setOpen, paroProjectsData, getUserDocument, uploadUserPhotoMutation, loadingNewImage, imageUpdateError, isInternal, getUserByEmail, updateUserEmail, updateUserMutation, getUserByEmailLazyQuery, updateUserPassword, verifyUserPassword, }) => {
65
+ var _a;
65
66
  const [openReviews, setOpenReviews] = (0, react_1.useState)(false);
66
67
  const [resetPasswordOpen, setResetPasswordOpen] = (0, react_1.useState)(false);
67
68
  const [changeEmailOpen, setChangeEmailOpen] = (0, react_1.useState)(false);
68
69
  const [updatedEmail, setUpdatedEmail] = (0, react_1.useState)(email);
69
70
  const filterProjectsWithRating = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.flatMap(({ client, rating }) => rating === null || rating === void 0 ? void 0 : rating.map((rating) => ({ client, rating })));
70
- const totalReviews = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((obj) => { if (obj.rating.length > 0)
71
- return obj.rating; }).length;
71
+ const totalReviews = (_a = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((obj) => obj.rating.length > 0)) === null || _a === void 0 ? void 0 : _a.flatMap((obj) => obj.rating).length;
72
72
  const avgRating = () => {
73
73
  const overallRatings = filterProjectsWithRating === null || filterProjectsWithRating === void 0 ? void 0 : filterProjectsWithRating.map((obj) => { var _a; return (_a = obj === null || obj === void 0 ? void 0 : obj.rating) === null || _a === void 0 ? void 0 : _a.overallRating; });
74
74
  if (overallRatings) {
@@ -111,7 +111,7 @@ const ProfileSection = ({ legacyFreelancerId, imageUrl, shouldAllowEditProfile,
111
111
  react_1.default.createElement(core_1.Grid, { item: true, container: true, xs: 12, direction: "row", justify: "center", spacing: 2 },
112
112
  react_1.default.createElement(core_1.Box, { mr: 1 },
113
113
  react_1.default.createElement(core_1.Typography, { variant: "h6" },
114
- react_1.default.createElement("b", null, Number(avgRating()).toFixed(2)))),
114
+ react_1.default.createElement("b", null, Number(avgRating()).toFixed(1)))),
115
115
  react_1.default.createElement(Rating_1.default, { name: "half-rating-read", readOnly: true, value: avgRating(), precision: 0.1, size: "medium", emptyIcon: react_1.default.createElement(Star_1.default, { fontSize: "inherit" }) })),
116
116
  react_1.default.createElement(core_1.Box, { mt: 1 },
117
117
  react_1.default.createElement(core_1.Typography, { variant: "body2", align: 'center' },
@@ -86,7 +86,7 @@ const ReviewsModal = ({ openReviews, setOpenReviews, paroProjectsData, filterPro
86
86
  react_1.default.createElement(core_1.Grid, { container: true, style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '20px', backgroundColor: '#F1F5F9', padding: '12px', width: '100%', } },
87
87
  react_1.default.createElement(core_1.Grid, { item: true },
88
88
  react_1.default.createElement(core_1.Typography, { variant: "h1", style: { marginLeft: '10px' }, align: 'center' },
89
- react_1.default.createElement("b", null, (avgRating).toFixed(2))),
89
+ react_1.default.createElement("b", null, (avgRating).toFixed(1))),
90
90
  react_1.default.createElement(Rating_1.default, { name: "read-only", value: avgRating, readOnly: true, precision: 0.5, size: "large" }),
91
91
  react_1.default.createElement(core_1.Typography, { variant: "h6", style: { marginLeft: '10px' }, align: 'center' },
92
92
  totalReviews,
@@ -295,6 +295,7 @@ const formatDate = (date, pattern = 'MM/dd/yyyy') => {
295
295
  return { label: formattedDate, value: convertToDateTime };
296
296
  };
297
297
  const Reviews = ({ paroProjectsData, legacyFreelancerId, expertName, refetchParoProjects, createOrUpdateRating, }) => {
298
+ var _a, _b;
298
299
  const classes = useStyles();
299
300
  const [loadingSubmitId, setLoadingSubmitId] = (0, react_1.useState)(null);
300
301
  const [openReviewModal, setOpenReviewModal] = (0, react_1.useState)(false);
@@ -390,7 +391,7 @@ const Reviews = ({ paroProjectsData, legacyFreelancerId, expertName, refetchParo
390
391
  const checkHighlighted = highlightedRatings.filter((p) => { var _a, _b; return ((_a = p === null || p === void 0 ? void 0 : p.rating[0]) === null || _a === void 0 ? void 0 : _a.id) === (rating === null || rating === void 0 ? void 0 : rating.id) && ((_b = p === null || p === void 0 ? void 0 : p.rating[0]) === null || _b === void 0 ? void 0 : _b.isHighlighted); }).length;
391
392
  return checkHighlighted > 0 ? true : false;
392
393
  };
393
- const reviewsGiven = highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.filter((p) => p.rating[0]).length;
394
+ const reviewsGiven = (_b = (_a = highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.filter((p) => p.rating.length > 0)) === null || _a === void 0 ? void 0 : _a.flatMap((p) => p.rating)) === null || _b === void 0 ? void 0 : _b.length;
394
395
  const reviewNotGiven = (highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.length) - reviewsGiven;
395
396
  // const customRound = (value: number): number => {
396
397
  // const decimalPart = value - Math.floor(value);
@@ -304,7 +304,7 @@ const ReviewsTab = ({ paroProjectsData, legacyFreelancerId, expertName, getParoP
304
304
  setOrderBy(buttonText);
305
305
  }
306
306
  };
307
- const reviewsGiven = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((p) => { var _a; return (_a = p === null || p === void 0 ? void 0 : p.rating) === null || _a === void 0 ? void 0 : _a[0]; }).map(p => p.rating).flat().length;
307
+ const reviewsGiven = paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.filter((p) => { var _a; return ((_a = p === null || p === void 0 ? void 0 : p.rating) === null || _a === void 0 ? void 0 : _a.length) > 0; }).flatMap(p => p.rating).length;
308
308
  const reviewNotGiven = Math.max(0, (paroProjectsData === null || paroProjectsData === void 0 ? void 0 : paroProjectsData.length) - reviewsGiven);
309
309
  const { overallRating, timelinessRating, communicationRating, professionalismRating, executionOfDeliverablesRating } = (0, ProjectReviewsSection_1.calculateAverageRatings)(paroProjectsData);
310
310
  const uniqueClients = highlightedRatings === null || highlightedRatings === void 0 ? void 0 : highlightedRatings.map((obj) => {
@@ -137,7 +137,7 @@ const handleDownloadPdf = ({ fileData, downloadFilename, streamData }) => {
137
137
  var _a, _b;
138
138
  let byteArray = streamData ? fileData : new Uint8Array();
139
139
  if (!streamData) {
140
- const byteCharacters = atob(fileData || ((_b = (_a = fileData === null || fileData === void 0 ? void 0 : fileData.data) === null || _a === void 0 ? void 0 : _a.getFile) === null || _b === void 0 ? void 0 : _b.data));
140
+ const byteCharacters = atob((_b = (_a = fileData === null || fileData === void 0 ? void 0 : fileData.data) === null || _a === void 0 ? void 0 : _a.getFile) === null || _b === void 0 ? void 0 : _b.data);
141
141
  const byteNumbers = new Array(byteCharacters.length);
142
142
  for (let i = 0; i < byteCharacters.length; i++) {
143
143
  byteNumbers[i] = byteCharacters.charCodeAt(i);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paro.io/expert-shared-components",
3
- "version": "1.6.5",
3
+ "version": "1.6.7",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {