Browse Source

Fix lists not showing on the subscriber form

Kailash Nadh 6 years ago
parent
commit
348e65f1ec
2 changed files with 222 additions and 222 deletions
  1. 77 77
      frontend/src/Subscriber.js
  2. 145 145
      frontend/src/Subscribers.js

+ 77 - 77
frontend/src/Subscriber.js

@@ -1,4 +1,4 @@
-import React from "react"
+import React from "react";
 import {
 import {
   Row,
   Row,
   Col,
   Col,
@@ -10,72 +10,72 @@ import {
   Spin,
   Spin,
   Popconfirm,
   Popconfirm,
   notification
   notification
-} from "antd"
+} from "antd";
 
 
-import * as cs from "./constants"
+import * as cs from "./constants";
 
 
 const tagColors = {
 const tagColors = {
   enabled: "green",
   enabled: "green",
   blacklisted: "red"
   blacklisted: "red"
-}
+};
 const formItemLayoutModal = {
 const formItemLayoutModal = {
   labelCol: { xs: { span: 24 }, sm: { span: 4 } },
   labelCol: { xs: { span: 24 }, sm: { span: 4 } },
   wrapperCol: { xs: { span: 24 }, sm: { span: 18 } }
   wrapperCol: { xs: { span: 24 }, sm: { span: 18 } }
-}
+};
 const formItemLayout = {
 const formItemLayout = {
   labelCol: { xs: { span: 16 }, sm: { span: 4 } },
   labelCol: { xs: { span: 16 }, sm: { span: 4 } },
   wrapperCol: { xs: { span: 16 }, sm: { span: 10 } }
   wrapperCol: { xs: { span: 16 }, sm: { span: 10 } }
-}
+};
 const formItemTailLayout = {
 const formItemTailLayout = {
   wrapperCol: { xs: { span: 24, offset: 0 }, sm: { span: 10, offset: 4 } }
   wrapperCol: { xs: { span: 24, offset: 0 }, sm: { span: 10, offset: 4 } }
-}
+};
 
 
 class CreateFormDef extends React.PureComponent {
 class CreateFormDef extends React.PureComponent {
   state = {
   state = {
     confirmDirty: false,
     confirmDirty: false,
     loading: false
     loading: false
-  }
+  };
 
 
   // Handle create / edit form submission.
   // Handle create / edit form submission.
   handleSubmit = (e, cb) => {
   handleSubmit = (e, cb) => {
-    e.preventDefault()
+    e.preventDefault();
     if (!cb) {
     if (!cb) {
       // Set a fake callback.
       // Set a fake callback.
-      cb = () => {}
+      cb = () => {};
     }
     }
 
 
     var err = null,
     var err = null,
-      values = {}
+      values = {};
     this.props.form.validateFields((e, v) => {
     this.props.form.validateFields((e, v) => {
-      err = e
-      values = v
-    })
+      err = e;
+      values = v;
+    });
     if (err) {
     if (err) {
-      return
+      return;
     }
     }
 
 
-    let a = values["attribs"]
-    values["attribs"] = {}
+    let a = values["attribs"];
+    values["attribs"] = {};
     if (a && a.length > 0) {
     if (a && a.length > 0) {
       try {
       try {
-        values["attribs"] = JSON.parse(a)
+        values["attribs"] = JSON.parse(a);
         if (values["attribs"] instanceof Array) {
         if (values["attribs"] instanceof Array) {
           notification["error"]({
           notification["error"]({
             message: "Invalid JSON type",
             message: "Invalid JSON type",
             description: "Attributes should be a map {} and not an array []"
             description: "Attributes should be a map {} and not an array []"
-          })
-          return
+          });
+          return;
         }
         }
       } catch (e) {
       } catch (e) {
         notification["error"]({
         notification["error"]({
           message: "Invalid JSON in attributes",
           message: "Invalid JSON in attributes",
           description: e.toString()
           description: e.toString()
-        })
-        return
+        });
+        return;
       }
       }
     }
     }
 
 
-    this.setState({ loading: true })
+    this.setState({ loading: true });
     if (this.props.formType === cs.FormCreate) {
     if (this.props.formType === cs.FormCreate) {
       // Add a subscriber.
       // Add a subscriber.
       this.props
       this.props
@@ -89,22 +89,22 @@ class CreateFormDef extends React.PureComponent {
           notification["success"]({
           notification["success"]({
             message: "Subscriber added",
             message: "Subscriber added",
             description: `${values["email"]} added`
             description: `${values["email"]} added`
-          })
+          });
           if (!this.props.isModal) {
           if (!this.props.isModal) {
-            this.props.fetchRecord(this.props.record.id)
+            this.props.fetchRecord(this.props.record.id);
           }
           }
-          cb(true)
-          this.setState({ loading: false })
+          cb(true);
+          this.setState({ loading: false });
         })
         })
         .catch(e => {
         .catch(e => {
-          notification["error"]({ message: "Error", description: e.message })
-          cb(false)
-          this.setState({ loading: false })
-        })
+          notification["error"]({ message: "Error", description: e.message });
+          cb(false);
+          this.setState({ loading: false });
+        });
     } else {
     } else {
       // Edit a subscriber.
       // Edit a subscriber.
-      delete values["keys"]
-      delete values["vals"]
+      delete values["keys"];
+      delete values["vals"];
       this.props
       this.props
         .modelRequest(
         .modelRequest(
           cs.ModelSubscribers,
           cs.ModelSubscribers,
@@ -116,20 +116,20 @@ class CreateFormDef extends React.PureComponent {
           notification["success"]({
           notification["success"]({
             message: "Subscriber modified",
             message: "Subscriber modified",
             description: `${values["email"]} modified`
             description: `${values["email"]} modified`
-          })
+          });
           if (!this.props.isModal) {
           if (!this.props.isModal) {
-            this.props.fetchRecord(this.props.record.id)
+            this.props.fetchRecord(this.props.record.id);
           }
           }
-          cb(true)
-          this.setState({ loading: false })
+          cb(true);
+          this.setState({ loading: false });
         })
         })
         .catch(e => {
         .catch(e => {
-          notification["error"]({ message: "Error", description: e.message })
-          cb(false)
-          this.setState({ loading: false })
-        })
+          notification["error"]({ message: "Error", description: e.message });
+          cb(false);
+          this.setState({ loading: false });
+        });
     }
     }
-  }
+  };
 
 
   handleDeleteRecord = record => {
   handleDeleteRecord = record => {
     this.props
     this.props
@@ -143,40 +143,40 @@ class CreateFormDef extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Subscriber deleted",
           message: "Subscriber deleted",
           description: `${record.email} deleted`
           description: `${record.email} deleted`
-        })
+        });
 
 
         this.props.route.history.push({
         this.props.route.history.push({
           pathname: cs.Routes.ViewSubscribers
           pathname: cs.Routes.ViewSubscribers
-        })
+        });
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+      });
+  };
 
 
   render() {
   render() {
-    const { formType, record } = this.props
-    const { getFieldDecorator } = this.props.form
+    const { formType, record } = this.props;
+    const { getFieldDecorator } = this.props.form;
 
 
     if (formType === null) {
     if (formType === null) {
-      return null
+      return null;
     }
     }
 
 
-    let subListIDs = []
-    let subStatuses = {}
+    let subListIDs = [];
+    let subStatuses = {};
     if (this.props.record && this.props.record.lists) {
     if (this.props.record && this.props.record.lists) {
       subListIDs = this.props.record.lists.map(v => {
       subListIDs = this.props.record.lists.map(v => {
-        return v["id"]
-      })
+        return v["id"];
+      });
       subStatuses = this.props.record.lists.reduce(
       subStatuses = this.props.record.lists.reduce(
         (o, item) => ({ ...o, [item.id]: item.subscription_status }),
         (o, item) => ({ ...o, [item.id]: item.subscription_status }),
         {}
         {}
-      )
+      );
     } else if (this.props.list) {
     } else if (this.props.list) {
-      subListIDs = [this.props.list.id]
+      subListIDs = [this.props.list.id];
     }
     }
 
 
-    const layout = this.props.isModal ? formItemLayoutModal : formItemLayout
+    const layout = this.props.isModal ? formItemLayoutModal : formItemLayout;
     return (
     return (
       <Spin spinning={this.state.loading}>
       <Spin spinning={this.state.loading}>
         <Form onSubmit={this.handleSubmit}>
         <Form onSubmit={this.handleSubmit}>
@@ -273,7 +273,7 @@ class CreateFormDef extends React.PureComponent {
                 <Popconfirm
                 <Popconfirm
                   title="Are you sure?"
                   title="Are you sure?"
                   onConfirm={() => {
                   onConfirm={() => {
-                    this.handleDeleteRecord(record)
+                    this.handleDeleteRecord(record);
                   }}
                   }}
                 >
                 >
                   <Button icon="delete">Delete</Button>
                   <Button icon="delete">Delete</Button>
@@ -283,11 +283,11 @@ class CreateFormDef extends React.PureComponent {
           )}
           )}
         </Form>
         </Form>
       </Spin>
       </Spin>
-    )
+    );
   }
   }
 }
 }
 
 
-const CreateForm = Form.create()(CreateFormDef)
+const CreateForm = Form.create()(CreateFormDef);
 
 
 class Subscriber extends React.PureComponent {
 class Subscriber extends React.PureComponent {
   state = {
   state = {
@@ -297,19 +297,19 @@ class Subscriber extends React.PureComponent {
     subID: this.props.route.match.params
     subID: this.props.route.match.params
       ? parseInt(this.props.route.match.params.subID, 10)
       ? parseInt(this.props.route.match.params.subID, 10)
       : 0
       : 0
-  }
+  };
 
 
   componentDidMount() {
   componentDidMount() {
     // When this component is invoked within a modal from the subscribers list page,
     // When this component is invoked within a modal from the subscribers list page,
     // the necessary context is supplied and there's no need to fetch anything.
     // the necessary context is supplied and there's no need to fetch anything.
     if (!this.props.isModal) {
     if (!this.props.isModal) {
       // Fetch lists.
       // Fetch lists.
-      this.props.modelRequest(cs.ModelLists, cs.Routes.GetLists, cs.MethodGet)
+      this.props.modelRequest(cs.ModelLists, cs.Routes.GetLists, cs.MethodGet);
 
 
       // Fetch subscriber.
       // Fetch subscriber.
-      this.fetchRecord(this.state.subID)
+      this.fetchRecord(this.state.subID);
     } else {
     } else {
-      this.setState({ record: this.props.record, loading: false })
+      this.setState({ record: this.props.record, loading: false });
     }
     }
   }
   }
 
 
@@ -317,26 +317,26 @@ class Subscriber extends React.PureComponent {
     this.props
     this.props
       .request(cs.Routes.GetSubscriber, cs.MethodGet, { id: id })
       .request(cs.Routes.GetSubscriber, cs.MethodGet, { id: id })
       .then(r => {
       .then(r => {
-        this.setState({ record: r.data.data, loading: false })
+        this.setState({ record: r.data.data, loading: false });
       })
       })
       .catch(e => {
       .catch(e => {
         notification["error"]({
         notification["error"]({
           placement: cs.MsgPosition,
           placement: cs.MsgPosition,
           message: "Error",
           message: "Error",
           description: e.message
           description: e.message
-        })
-      })
-  }
+        });
+      });
+  };
 
 
   setFormRef = r => {
   setFormRef = r => {
-    this.setState({ formRef: r })
-  }
+    this.setState({ formRef: r });
+  };
 
 
   submitForm = (e, cb) => {
   submitForm = (e, cb) => {
     if (this.state.formRef) {
     if (this.state.formRef) {
-      this.state.formRef.handleSubmit(e, cb)
+      this.state.formRef.handleSubmit(e, cb);
     }
     }
-  }
+  };
 
 
   render() {
   render() {
     return (
     return (
@@ -375,23 +375,23 @@ class Subscriber extends React.PureComponent {
               formType={this.props.formType ? this.props.formType : cs.FormEdit}
               formType={this.props.formType ? this.props.formType : cs.FormEdit}
               record={this.state.record}
               record={this.state.record}
               fetchRecord={this.fetchRecord}
               fetchRecord={this.fetchRecord}
-              lists={this.props.data[cs.ModelLists]}
+              lists={this.props.data[cs.ModelLists].results}
               wrappedComponentRef={r => {
               wrappedComponentRef={r => {
                 if (!r) {
                 if (!r) {
-                  return
+                  return;
                 }
                 }
 
 
                 // Save the form's reference so that when this component
                 // Save the form's reference so that when this component
                 // is used as a modal, the invoker of the model can submit
                 // is used as a modal, the invoker of the model can submit
                 // it via submitForm()
                 // it via submitForm()
-                this.setState({ formRef: r })
+                this.setState({ formRef: r });
               }}
               }}
             />
             />
           </Spin>
           </Spin>
         </div>
         </div>
       </section>
       </section>
-    )
+    );
   }
   }
 }
 }
 
 
-export default Subscriber
+export default Subscriber;

+ 145 - 145
frontend/src/Subscribers.js

@@ -1,5 +1,5 @@
-import React from "react"
-import { Link } from "react-router-dom"
+import React from "react";
+import { Link } from "react-router-dom";
 import {
 import {
   Row,
   Row,
   Col,
   Col,
@@ -15,44 +15,44 @@ import {
   Popconfirm,
   Popconfirm,
   notification,
   notification,
   Radio
   Radio
-} from "antd"
+} from "antd";
 
 
-import Utils from "./utils"
-import Subscriber from "./Subscriber"
-import * as cs from "./constants"
+import Utils from "./utils";
+import Subscriber from "./Subscriber";
+import * as cs from "./constants";
 
 
 const tagColors = {
 const tagColors = {
   enabled: "green",
   enabled: "green",
   blacklisted: "red"
   blacklisted: "red"
-}
+};
 
 
 class ListsFormDef extends React.PureComponent {
 class ListsFormDef extends React.PureComponent {
   state = {
   state = {
     modalWaiting: false
     modalWaiting: false
-  }
+  };
 
 
   // Handle create / edit form submission.
   // Handle create / edit form submission.
   handleSubmit = e => {
   handleSubmit = e => {
-    e.preventDefault()
+    e.preventDefault();
 
 
     var err = null,
     var err = null,
-      values = {}
+      values = {};
     this.props.form.validateFields((e, v) => {
     this.props.form.validateFields((e, v) => {
-      err = e
-      values = v
-    })
+      err = e;
+      values = v;
+    });
     if (err) {
     if (err) {
-      return
+      return;
     }
     }
 
 
     if (this.props.allRowsSelected) {
     if (this.props.allRowsSelected) {
-      values["list_ids"] = this.props.listIDs
-      values["query"] = this.props.query
+      values["list_ids"] = this.props.listIDs;
+      values["query"] = this.props.query;
     } else {
     } else {
-      values["ids"] = this.props.selectedRows.map(r => r.id)
+      values["ids"] = this.props.selectedRows.map(r => r.id);
     }
     }
 
 
-    this.setState({ modalWaiting: true })
+    this.setState({ modalWaiting: true });
     this.props
     this.props
       .request(
       .request(
         !this.props.allRowsSelected
         !this.props.allRowsSelected
@@ -65,24 +65,24 @@ class ListsFormDef extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Lists changed",
           message: "Lists changed",
           description: `Lists changed for selected subscribers`
           description: `Lists changed for selected subscribers`
-        })
-        this.props.clearSelectedRows()
-        this.props.fetchRecords()
-        this.setState({ modalWaiting: false })
-        this.props.onClose()
+        });
+        this.props.clearSelectedRows();
+        this.props.fetchRecords();
+        this.setState({ modalWaiting: false });
+        this.props.onClose();
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-        this.setState({ modalWaiting: false })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+        this.setState({ modalWaiting: false });
+      });
+  };
 
 
   render() {
   render() {
-    const { getFieldDecorator } = this.props.form
+    const { getFieldDecorator } = this.props.form;
     const formItemLayout = {
     const formItemLayout = {
       labelCol: { xs: { span: 16 }, sm: { span: 4 } },
       labelCol: { xs: { span: 16 }, sm: { span: 4 } },
       wrapperCol: { xs: { span: 16 }, sm: { span: 18 } }
       wrapperCol: { xs: { span: 16 }, sm: { span: 18 } }
-    }
+    };
 
 
     return (
     return (
       <Modal
       <Modal
@@ -123,14 +123,14 @@ class ListsFormDef extends React.PureComponent {
           </Form.Item>
           </Form.Item>
         </Form>
         </Form>
       </Modal>
       </Modal>
-    )
+    );
   }
   }
 }
 }
 
 
-const ListsForm = Form.create()(ListsFormDef)
+const ListsForm = Form.create()(ListsFormDef);
 
 
 class Subscribers extends React.PureComponent {
 class Subscribers extends React.PureComponent {
-  defaultPerPage = 20
+  defaultPerPage = 20;
 
 
   state = {
   state = {
     formType: null,
     formType: null,
@@ -151,7 +151,7 @@ class Subscribers extends React.PureComponent {
     listModalVisible: false,
     listModalVisible: false,
     allRowsSelected: false,
     allRowsSelected: false,
     selectedRows: []
     selectedRows: []
-  }
+  };
 
 
   // Pagination config.
   // Pagination config.
   paginationOptions = {
   paginationOptions = {
@@ -163,15 +163,15 @@ class Subscribers extends React.PureComponent {
     position: "both",
     position: "both",
     showTotal: (total, range) => `${range[0]} to ${range[1]} of ${total}`,
     showTotal: (total, range) => `${range[0]} to ${range[1]} of ${total}`,
     onChange: (page, perPage) => {
     onChange: (page, perPage) => {
-      this.fetchRecords({ page: page, per_page: perPage })
+      this.fetchRecords({ page: page, per_page: perPage });
     },
     },
     onShowSizeChange: (page, perPage) => {
     onShowSizeChange: (page, perPage) => {
-      this.fetchRecords({ page: page, per_page: perPage })
+      this.fetchRecords({ page: page, per_page: perPage });
     }
     }
-  }
+  };
 
 
   constructor(props) {
   constructor(props) {
-    super(props)
+    super(props);
 
 
     // Table layout.
     // Table layout.
     this.columns = [
     this.columns = [
@@ -181,7 +181,7 @@ class Subscribers extends React.PureComponent {
         sorter: true,
         sorter: true,
         width: "25%",
         width: "25%",
         render: (text, record) => {
         render: (text, record) => {
-          const out = []
+          const out = [];
           out.push(
           out.push(
             <div key={`sub-email-${record.id}`} className="sub-name">
             <div key={`sub-email-${record.id}`} className="sub-name">
               <Link
               <Link
@@ -190,15 +190,15 @@ class Subscribers extends React.PureComponent {
                   // Open the individual subscriber page on ctrl+click
                   // Open the individual subscriber page on ctrl+click
                   // and the modal otherwise.
                   // and the modal otherwise.
                   if (!e.ctrlKey) {
                   if (!e.ctrlKey) {
-                    this.handleShowEditForm(record)
-                    e.preventDefault()
+                    this.handleShowEditForm(record);
+                    e.preventDefault();
                   }
                   }
                 }}
                 }}
               >
               >
                 {text}
                 {text}
               </Link>
               </Link>
             </div>
             </div>
-          )
+          );
 
 
           if (record.lists.length > 0) {
           if (record.lists.length > 0) {
             for (let i = 0; i < record.lists.length; i++) {
             for (let i = 0; i < record.lists.length; i++) {
@@ -220,11 +220,11 @@ class Subscribers extends React.PureComponent {
                     {record.lists[i].subscription_status}
                     {record.lists[i].subscription_status}
                   </sup>
                   </sup>
                 </Tag>
                 </Tag>
-              )
+              );
             }
             }
           }
           }
 
 
-          return out
+          return out;
         }
         }
       },
       },
       {
       {
@@ -240,14 +240,14 @@ class Subscribers extends React.PureComponent {
                 // Open the individual subscriber page on ctrl+click
                 // Open the individual subscriber page on ctrl+click
                 // and the modal otherwise.
                 // and the modal otherwise.
                 if (!e.ctrlKey) {
                 if (!e.ctrlKey) {
-                  this.handleShowEditForm(record)
-                  e.preventDefault()
+                  this.handleShowEditForm(record);
+                  e.preventDefault();
                 }
                 }
               }}
               }}
             >
             >
               {text}
               {text}
             </Link>
             </Link>
-          )
+          );
         }
         }
       },
       },
       {
       {
@@ -261,7 +261,7 @@ class Subscribers extends React.PureComponent {
             >
             >
               {status}
               {status}
             </Tag>
             </Tag>
-          )
+          );
         }
         }
       },
       },
       {
       {
@@ -282,7 +282,7 @@ class Subscribers extends React.PureComponent {
                 0
                 0
               )}
               )}
             </span>
             </span>
-          )
+          );
         }
         }
       },
       },
       {
       {
@@ -290,7 +290,7 @@ class Subscribers extends React.PureComponent {
         width: "10%",
         width: "10%",
         dataIndex: "created_at",
         dataIndex: "created_at",
         render: (date, _) => {
         render: (date, _) => {
-          return Utils.DateString(date)
+          return Utils.DateString(date);
         }
         }
       },
       },
       {
       {
@@ -298,7 +298,7 @@ class Subscribers extends React.PureComponent {
         width: "10%",
         width: "10%",
         dataIndex: "updated_at",
         dataIndex: "updated_at",
         render: (date, _) => {
         render: (date, _) => {
-          return Utils.DateString(date)
+          return Utils.DateString(date);
         }
         }
       },
       },
       {
       {
@@ -328,10 +328,10 @@ class Subscribers extends React.PureComponent {
                 </Tooltip>
                 </Tooltip>
               </Popconfirm>
               </Popconfirm>
             </div>
             </div>
-          )
+          );
         }
         }
       }
       }
-    ]
+    ];
   }
   }
 
 
   componentDidMount() {
   componentDidMount() {
@@ -341,18 +341,18 @@ class Subscribers extends React.PureComponent {
       .then(() => {
       .then(() => {
         // If this is an individual list's view, pick up that list.
         // If this is an individual list's view, pick up that list.
         if (this.state.queryParams.listID) {
         if (this.state.queryParams.listID) {
-          this.props.data[cs.ModelLists].forEach(l => {
+          this.props.data[cs.ModelLists].results.forEach(l => {
             if (l.id === this.state.queryParams.listID) {
             if (l.id === this.state.queryParams.listID) {
               this.setState({
               this.setState({
                 queryParams: { ...this.state.queryParams, list: l }
                 queryParams: { ...this.state.queryParams, list: l }
-              })
-              return false
+              });
+              return false;
             }
             }
-          })
+          });
         }
         }
-      })
+      });
 
 
-    this.fetchRecords()
+    this.fetchRecords();
   }
   }
 
 
   fetchRecords = params => {
   fetchRecords = params => {
@@ -361,15 +361,15 @@ class Subscribers extends React.PureComponent {
       per_page: this.state.queryParams.per_page,
       per_page: this.state.queryParams.per_page,
       list_id: this.state.queryParams.listID,
       list_id: this.state.queryParams.listID,
       query: this.state.queryParams.query
       query: this.state.queryParams.query
-    }
+    };
 
 
     // The records are for a specific list.
     // The records are for a specific list.
     if (this.state.queryParams.listID) {
     if (this.state.queryParams.listID) {
-      qParams.list_id = this.state.queryParams.listID
+      qParams.list_id = this.state.queryParams.listID;
     }
     }
 
 
     if (params) {
     if (params) {
-      qParams = { ...qParams, ...params }
+      qParams = { ...qParams, ...params };
     }
     }
 
 
     this.props
     this.props
@@ -388,9 +388,9 @@ class Subscribers extends React.PureComponent {
             page: this.props.data[cs.ModelSubscribers].page,
             page: this.props.data[cs.ModelSubscribers].page,
             query: this.props.data[cs.ModelSubscribers].query
             query: this.props.data[cs.ModelSubscribers].query
           }
           }
-        })
-      })
-  }
+        });
+      });
+  };
 
 
   handleDeleteRecord = record => {
   handleDeleteRecord = record => {
     this.props
     this.props
@@ -404,15 +404,15 @@ class Subscribers extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Subscriber deleted",
           message: "Subscriber deleted",
           description: `${record.email} deleted`
           description: `${record.email} deleted`
-        })
+        });
 
 
         // Reload the table.
         // Reload the table.
-        this.fetchRecords()
+        this.fetchRecords();
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+      });
+  };
 
 
   handleDeleteRecords = records => {
   handleDeleteRecords = records => {
     this.props
     this.props
@@ -426,15 +426,15 @@ class Subscribers extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Subscriber(s) deleted",
           message: "Subscriber(s) deleted",
           description: "Selected subscribers deleted"
           description: "Selected subscribers deleted"
-        })
+        });
 
 
         // Reload the table.
         // Reload the table.
-        this.fetchRecords()
+        this.fetchRecords();
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+      });
+  };
 
 
   handleBlacklistSubscribers = records => {
   handleBlacklistSubscribers = records => {
     this.props
     this.props
@@ -445,15 +445,15 @@ class Subscribers extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Subscriber(s) blacklisted",
           message: "Subscriber(s) blacklisted",
           description: "Selected subscribers blacklisted"
           description: "Selected subscribers blacklisted"
-        })
+        });
 
 
         // Reload the table.
         // Reload the table.
-        this.fetchRecords()
+        this.fetchRecords();
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+      });
+  };
 
 
   // Arbitrary query based calls.
   // Arbitrary query based calls.
   handleDeleteRecordsByQuery = (listIDs, query) => {
   handleDeleteRecordsByQuery = (listIDs, query) => {
@@ -468,15 +468,15 @@ class Subscribers extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Subscriber(s) deleted",
           message: "Subscriber(s) deleted",
           description: "Selected subscribers have been deleted"
           description: "Selected subscribers have been deleted"
-        })
+        });
 
 
         // Reload the table.
         // Reload the table.
-        this.fetchRecords()
+        this.fetchRecords();
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+      });
+  };
 
 
   handleBlacklistSubscribersByQuery = (listIDs, query) => {
   handleBlacklistSubscribersByQuery = (listIDs, query) => {
     this.props
     this.props
@@ -488,22 +488,22 @@ class Subscribers extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Subscriber(s) blacklisted",
           message: "Subscriber(s) blacklisted",
           description: "Selected subscribers have been blacklisted"
           description: "Selected subscribers have been blacklisted"
-        })
+        });
 
 
         // Reload the table.
         // Reload the table.
-        this.fetchRecords()
+        this.fetchRecords();
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+      });
+  };
 
 
   handleQuerySubscribersIntoLists = (query, sourceList, targetLists) => {
   handleQuerySubscribersIntoLists = (query, sourceList, targetLists) => {
     let params = {
     let params = {
       query: query,
       query: query,
       source_list: sourceList,
       source_list: sourceList,
       target_lists: targetLists
       target_lists: targetLists
-    }
+    };
 
 
     this.props
     this.props
       .request(cs.Routes.QuerySubscribersIntoLists, cs.MethodPost, params)
       .request(cs.Routes.QuerySubscribersIntoLists, cs.MethodPost, params)
@@ -511,75 +511,75 @@ class Subscribers extends React.PureComponent {
         notification["success"]({
         notification["success"]({
           message: "Subscriber(s) added",
           message: "Subscriber(s) added",
           description: `${res.data.data.count} added`
           description: `${res.data.data.count} added`
-        })
-        this.handleToggleListModal()
+        });
+        this.handleToggleListModal();
       })
       })
       .catch(e => {
       .catch(e => {
-        notification["error"]({ message: "Error", description: e.message })
-      })
-  }
+        notification["error"]({ message: "Error", description: e.message });
+      });
+  };
 
 
   handleHideForm = () => {
   handleHideForm = () => {
-    this.setState({ formType: null })
-  }
+    this.setState({ formType: null });
+  };
 
 
   handleShowCreateForm = () => {
   handleShowCreateForm = () => {
-    this.setState({ formType: cs.FormCreate, attribs: [], record: {} })
-  }
+    this.setState({ formType: cs.FormCreate, attribs: [], record: {} });
+  };
 
 
   handleShowEditForm = record => {
   handleShowEditForm = record => {
-    this.setState({ formType: cs.FormEdit, record: record })
-  }
+    this.setState({ formType: cs.FormEdit, record: record });
+  };
 
 
   handleToggleListsForm = () => {
   handleToggleListsForm = () => {
-    this.setState({ listsFormVisible: !this.state.listsFormVisible })
-  }
+    this.setState({ listsFormVisible: !this.state.listsFormVisible });
+  };
 
 
   handleSearch = q => {
   handleSearch = q => {
-    q = q.trim().toLowerCase()
+    q = q.trim().toLowerCase();
     if (q === "") {
     if (q === "") {
-      this.fetchRecords({ query: null })
-      return
+      this.fetchRecords({ query: null });
+      return;
     }
     }
 
 
-    q = q.replace(/'/g, "''")
-    const query = `(name ~* '${q}' OR email ~* '${q}')`
-    this.fetchRecords({ query: query })
-  }
+    q = q.replace(/'/g, "''");
+    const query = `(name ~* '${q}' OR email ~* '${q}')`;
+    this.fetchRecords({ query: query });
+  };
 
 
   handleSelectRow = (_, records) => {
   handleSelectRow = (_, records) => {
-    this.setState({ allRowsSelected: false, selectedRows: records })
-  }
+    this.setState({ allRowsSelected: false, selectedRows: records });
+  };
 
 
   handleSelectAllRows = () => {
   handleSelectAllRows = () => {
     this.setState({
     this.setState({
       allRowsSelected: true,
       allRowsSelected: true,
       selectedRows: this.props.data[cs.ModelSubscribers].results
       selectedRows: this.props.data[cs.ModelSubscribers].results
-    })
-  }
+    });
+  };
 
 
   clearSelectedRows = (_, records) => {
   clearSelectedRows = (_, records) => {
-    this.setState({ allRowsSelected: false, selectedRows: [] })
-  }
+    this.setState({ allRowsSelected: false, selectedRows: [] });
+  };
 
 
   handleToggleQueryForm = () => {
   handleToggleQueryForm = () => {
-    this.setState({ queryFormVisible: !this.state.queryFormVisible })
-  }
+    this.setState({ queryFormVisible: !this.state.queryFormVisible });
+  };
 
 
   handleToggleListModal = () => {
   handleToggleListModal = () => {
-    this.setState({ listModalVisible: !this.state.listModalVisible })
-  }
+    this.setState({ listModalVisible: !this.state.listModalVisible });
+  };
 
 
   render() {
   render() {
     const pagination = {
     const pagination = {
       ...this.paginationOptions,
       ...this.paginationOptions,
       ...this.state.queryParams
       ...this.state.queryParams
-    }
+    };
 
 
     if (this.state.queryParams.list) {
     if (this.state.queryParams.list) {
-      this.props.pageTitle(this.state.queryParams.list.name + " / Subscribers")
+      this.props.pageTitle(this.state.queryParams.list.name + " / Subscribers");
     } else {
     } else {
-      this.props.pageTitle("Subscribers")
+      this.props.pageTitle("Subscribers");
     }
     }
 
 
     return (
     return (
@@ -644,7 +644,7 @@ class Subscribers extends React.PureComponent {
                             ...this.state.queryParams,
                             ...this.state.queryParams,
                             query: e.target.value
                             query: e.target.value
                           }
                           }
-                        })
+                        });
                       }}
                       }}
                       value={this.state.queryParams.query}
                       value={this.state.queryParams.query}
                       autosize={{ minRows: 2, maxRows: 10 }}
                       autosize={{ minRows: 2, maxRows: 10 }}
@@ -661,7 +661,7 @@ class Subscribers extends React.PureComponent {
                       type="primary"
                       type="primary"
                       icon="search"
                       icon="search"
                       onClick={() => {
                       onClick={() => {
-                        this.fetchRecords()
+                        this.fetchRecords();
                       }}
                       }}
                     >
                     >
                       Query
                       Query
@@ -670,7 +670,7 @@ class Subscribers extends React.PureComponent {
                       disabled={this.state.queryParams.query === ""}
                       disabled={this.state.queryParams.query === ""}
                       icon="refresh"
                       icon="refresh"
                       onClick={() => {
                       onClick={() => {
-                        this.fetchRecords({ query: null })
+                        this.fetchRecords({ query: null });
                       }}
                       }}
                     >
                     >
                       Reset
                       Reset
@@ -717,11 +717,11 @@ class Subscribers extends React.PureComponent {
                               ? [this.state.queryParams.listID]
                               ? [this.state.queryParams.listID]
                               : [],
                               : [],
                             this.state.queryParams.query
                             this.state.queryParams.query
-                          )
-                          this.clearSelectedRows()
+                          );
+                          this.clearSelectedRows();
                         } else {
                         } else {
-                          this.handleDeleteRecords(this.state.selectedRows)
-                          this.clearSelectedRows()
+                          this.handleDeleteRecords(this.state.selectedRows);
+                          this.clearSelectedRows();
                         }
                         }
                       }}
                       }}
                     >
                     >
@@ -738,13 +738,13 @@ class Subscribers extends React.PureComponent {
                               ? [this.state.queryParams.listID]
                               ? [this.state.queryParams.listID]
                               : [],
                               : [],
                             this.state.queryParams.query
                             this.state.queryParams.query
-                          )
-                          this.clearSelectedRows()
+                          );
+                          this.clearSelectedRows();
                         } else {
                         } else {
                           this.handleBlacklistSubscribers(
                           this.handleBlacklistSubscribers(
                             this.state.selectedRows
                             this.state.selectedRows
-                          )
-                          this.clearSelectedRows()
+                          );
+                          this.clearSelectedRows();
                         }
                         }
                       }}
                       }}
                     >
                     >
@@ -767,9 +767,9 @@ class Subscribers extends React.PureComponent {
               !this.props.data[cs.ModelSubscribers] ||
               !this.props.data[cs.ModelSubscribers] ||
               !this.props.data[cs.ModelSubscribers].hasOwnProperty("results")
               !this.props.data[cs.ModelSubscribers].hasOwnProperty("results")
             ) {
             ) {
-              return []
+              return [];
             }
             }
-            return this.props.data[cs.ModelSubscribers].results
+            return this.props.data[cs.ModelSubscribers].results;
           })()}
           })()}
           loading={this.props.reqStates[cs.ModelSubscribers] !== cs.StateDone}
           loading={this.props.reqStates[cs.ModelSubscribers] !== cs.StateDone}
           pagination={pagination}
           pagination={pagination}
@@ -789,16 +789,16 @@ class Subscribers extends React.PureComponent {
             confirmLoading={this.state.modalWaiting}
             confirmLoading={this.state.modalWaiting}
             onOk={e => {
             onOk={e => {
               if (!this.state.modalForm) {
               if (!this.state.modalForm) {
-                return
+                return;
               }
               }
 
 
               // This submits the form embedded in the Subscriber component.
               // This submits the form embedded in the Subscriber component.
               this.state.modalForm.submitForm(e, ok => {
               this.state.modalForm.submitForm(e, ok => {
                 if (ok) {
                 if (ok) {
-                  this.handleHideForm()
-                  this.fetchRecords()
+                  this.handleHideForm();
+                  this.fetchRecords();
                 }
                 }
-              })
+              });
             }}
             }}
             onCancel={this.handleHideForm}
             onCancel={this.handleHideForm}
             okButtonProps={{
             okButtonProps={{
@@ -813,10 +813,10 @@ class Subscribers extends React.PureComponent {
               record={this.state.record}
               record={this.state.record}
               ref={r => {
               ref={r => {
                 if (!r) {
                 if (!r) {
-                  return
+                  return;
                 }
                 }
 
 
-                this.setState({ modalForm: r })
+                this.setState({ modalForm: r });
               }}
               }}
             />
             />
           </Modal>
           </Modal>
@@ -825,7 +825,7 @@ class Subscribers extends React.PureComponent {
         {this.state.listsFormVisible && (
         {this.state.listsFormVisible && (
           <ListsForm
           <ListsForm
             {...this.props}
             {...this.props}
-            lists={this.props.data[cs.ModelLists]}
+            lists={this.props.data[cs.ModelLists].results}
             allRowsSelected={this.state.allRowsSelected}
             allRowsSelected={this.state.allRowsSelected}
             selectedRows={this.state.selectedRows}
             selectedRows={this.state.selectedRows}
             selectedLists={
             selectedLists={
@@ -840,8 +840,8 @@ class Subscribers extends React.PureComponent {
           />
           />
         )}
         )}
       </section>
       </section>
-    )
+    );
   }
   }
 }
 }
 
 
-export default Subscribers
+export default Subscribers;