diff --git a/client/src/components/chat-messages-list/chat-message-list.styles.scss b/client/src/components/chat-messages-list/chat-message-list.styles.scss
index 7e9a1a021..7677012a8 100644
--- a/client/src/components/chat-messages-list/chat-message-list.styles.scss
+++ b/client/src/components/chat-messages-list/chat-message-list.styles.scss
@@ -31,10 +31,10 @@
//display: inline-block;
.message-img {
- max-width: 33%;
+ max-width: 3rem;
+ max-height: 3rem;
object-fit: contain;
}
-
}
.yours {
diff --git a/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx b/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx
index 9d68097fd..d0f70cea9 100644
--- a/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx
+++ b/client/src/components/invoices-by-vendor-list/invoices-by-vendor-list.component.jsx
@@ -1,5 +1,5 @@
import React, { useState } from "react";
-import { QUERY_INVOICES_BY_VENDOR } from "../../graphql/invoices.queries";
+import { QUERY_INVOICES_BY_VENDOR_PAGINATED } from "../../graphql/invoices.queries";
import { useQuery } from "@apollo/react-hooks";
import queryString from "query-string";
import { useHistory, useLocation } from "react-router-dom";
@@ -13,11 +13,28 @@ import CurrencyFormatter from "../../utils/CurrencyFormatter";
export default function InvoicesByVendorList() {
const search = queryString.parse(useLocation().search);
const history = useHistory();
+ const { page, sortcolumn, sortorder } = search;
- const { loading, error, data } = useQuery(QUERY_INVOICES_BY_VENDOR, {
- variables: { vendorId: search.vendorid },
- skip: !!!search.vendorid,
- });
+ const { loading, error, data } = useQuery(
+ QUERY_INVOICES_BY_VENDOR_PAGINATED,
+ {
+ variables: {
+ vendorId: search.vendorid,
+ offset: page ? (page - 1) * 25 : 0,
+ limit: 25,
+ order: [
+ {
+ [sortcolumn || "date"]: sortorder
+ ? sortorder === "descend"
+ ? "desc"
+ : "asc"
+ : "desc",
+ },
+ ],
+ },
+ skip: !!!search.vendorid,
+ }
+ );
const { t } = useTranslation();
@@ -28,6 +45,10 @@ export default function InvoicesByVendorList() {
const handleTableChange = (pagination, filters, sorter) => {
setState({ ...state, filteredInfo: filters, sortedInfo: sorter });
+ search.page = pagination.current;
+ search.sortcolumn = sorter.columnKey;
+ search.sortorder = sorter.order;
+ history.push({ search: queryString.stringify(search) });
};
const handleOnRowClick = (record) => {
@@ -90,7 +111,7 @@ export default function InvoicesByVendorList() {
)
: (data && data.invoices) || [];
- if (error) return ;
+ if (error) return ;
return (
{
diff --git a/client/src/graphql/invoices.queries.js b/client/src/graphql/invoices.queries.js
index 6d764d1bd..d2a765c3d 100644
--- a/client/src/graphql/invoices.queries.js
+++ b/client/src/graphql/invoices.queries.js
@@ -110,6 +110,36 @@ export const QUERY_INVOICES_BY_VENDOR = gql`
}
`;
+export const QUERY_INVOICES_BY_VENDOR_PAGINATED = gql`
+ query QUERY_INVOICES_BY_VENDOR_PAGINATED(
+ $vendorId: uuid!
+ $offset: Int
+ $limit: Int
+ $order: [invoices_order_by!]!
+ ) {
+ invoices(
+ where: { vendorid: { _eq: $vendorId } }
+ offset: $offset
+ limit: $limit
+ order_by: $order
+ ) {
+ id
+ job {
+ id
+ ro_number
+ }
+ total
+ invoice_number
+ date
+ }
+ invoices_aggregate(where: { vendorid: { _eq: $vendorId } }) {
+ aggregate {
+ count(distinct: true)
+ }
+ }
+ }
+`;
+
export const QUERY_INVOICE_BY_PK = gql`
query QUERY_INVOICE_BY_PK($invoiceid: uuid!) {
invoices_by_pk(id: $invoiceid) {
diff --git a/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/down.yaml b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/down.yaml
new file mode 100644
index 000000000..d4f9086a3
--- /dev/null
+++ b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/down.yaml
@@ -0,0 +1,41 @@
+- args:
+ role: user
+ table:
+ name: invoices
+ schema: public
+ type: drop_select_permission
+- args:
+ permission:
+ allow_aggregations: false
+ columns:
+ - created_at
+ - date
+ - due_date
+ - exported
+ - exported_at
+ - federal_tax_rate
+ - id
+ - invoice_number
+ - is_credit_memo
+ - jobid
+ - local_tax_rate
+ - state_tax_rate
+ - total
+ - updated_at
+ - vendorid
+ computed_fields: []
+ filter:
+ job:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ role: user
+ table:
+ name: invoices
+ schema: public
+ type: create_select_permission
diff --git a/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/up.yaml b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/up.yaml
new file mode 100644
index 000000000..5e57c7e8f
--- /dev/null
+++ b/hasura/migrations/1594836040740_update_permission_user_public_table_invoices/up.yaml
@@ -0,0 +1,41 @@
+- args:
+ role: user
+ table:
+ name: invoices
+ schema: public
+ type: drop_select_permission
+- args:
+ permission:
+ allow_aggregations: true
+ columns:
+ - created_at
+ - date
+ - due_date
+ - exported
+ - exported_at
+ - federal_tax_rate
+ - id
+ - invoice_number
+ - is_credit_memo
+ - jobid
+ - local_tax_rate
+ - state_tax_rate
+ - total
+ - updated_at
+ - vendorid
+ computed_fields: []
+ filter:
+ job:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ role: user
+ table:
+ name: invoices
+ schema: public
+ type: create_select_permission
diff --git a/hasura/migrations/metadata.yaml b/hasura/migrations/metadata.yaml
index d7f5263ff..3b47da12d 100644
--- a/hasura/migrations/metadata.yaml
+++ b/hasura/migrations/metadata.yaml
@@ -1474,6 +1474,7 @@ tables:
_eq: X-Hasura-User-Id
- active:
_eq: true
+ allow_aggregations: true
update_permissions:
- role: user
permission:
diff --git a/server/sms/receive.js b/server/sms/receive.js
index 9810e4d29..0b8c401f5 100644
--- a/server/sms/receive.js
+++ b/server/sms/receive.js
@@ -159,3 +159,7 @@ exports.receive = (req, res) => {
// [0] MediaUrl0: 'https://api.twilio.com/2010-04-01/Accounts/AC6c09d337d6b9c68ab6488c2052bd457c/Messages/MM14fa2851ba26e0dc2b62073f8e7cdf27/Media/MEf129dd37979852f395eb29ffb126e19e',
// [0] ApiVersion: '2010-04-01'
// [0] }
+
+
+// [0] MediaContentType0: 'image/jpeg',
+// MediaContentType0: 'video/3gpp',