batch import csv
This commit is contained in:
parent
a679775f57
commit
dd0ceef665
20 changed files with 1614 additions and 190 deletions
|
|
@ -12,6 +12,7 @@ import {
|
|||
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||
import { listOrgMembers } from "../api";
|
||||
import AddEmployeeForm from "./AddEmployeeForm";
|
||||
import ImportUsersPanel from "./ImportUsersPanel";
|
||||
|
||||
const STATUS_TABS = [
|
||||
{ key: "all", label: "All users" },
|
||||
|
|
@ -101,6 +102,7 @@ export default function CompanyPeople({ account }) {
|
|||
const [search, setSearch] = useState("");
|
||||
const [roleFilter, setRoleFilter] = useState("all");
|
||||
const [drawerOpen, setDrawerOpen] = useState(false);
|
||||
const [importOpen, setImportOpen] = useState(false);
|
||||
const [notice, setNotice] = useState("");
|
||||
|
||||
const loadMembers = useCallback(async () => {
|
||||
|
|
@ -121,6 +123,13 @@ export default function CompanyPeople({ account }) {
|
|||
loadMembers();
|
||||
}, [loadMembers]);
|
||||
|
||||
useEffect(() => {
|
||||
if (sessionStorage.getItem("agmail_open_people_import") === "1") {
|
||||
sessionStorage.removeItem("agmail_open_people_import");
|
||||
setImportOpen(true);
|
||||
}
|
||||
}, []);
|
||||
|
||||
const filteredMembers = useMemo(() => {
|
||||
const query = search.trim().toLowerCase();
|
||||
return members.filter((member) => {
|
||||
|
|
@ -147,7 +156,11 @@ export default function CompanyPeople({ account }) {
|
|||
<p>Manage your team members and their email accounts.</p>
|
||||
</div>
|
||||
<div className="company-people-actions">
|
||||
<button type="button" className="button button-outline people-import-btn" disabled title="Coming soon">
|
||||
<button
|
||||
type="button"
|
||||
className="button button-outline people-import-btn"
|
||||
onClick={() => setImportOpen(true)}
|
||||
>
|
||||
<Upload size={16} /> Import CSV
|
||||
</button>
|
||||
<button
|
||||
|
|
@ -250,6 +263,18 @@ export default function CompanyPeople({ account }) {
|
|||
</table>
|
||||
</div>
|
||||
|
||||
{importOpen && (
|
||||
<ImportUsersPanel
|
||||
companyDomain={companyDomain}
|
||||
onClose={() => setImportOpen(false)}
|
||||
onImported={(result) => {
|
||||
loadMembers();
|
||||
setNotice(`Imported ${result.created_count} users${result.error_count ? ` (${result.error_count} failed)` : ""}.`);
|
||||
window.setTimeout(() => setNotice(""), 6000);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
|
||||
{drawerOpen && (
|
||||
<AddUserPanel
|
||||
companyDomain={companyDomain}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue