batch import csv

This commit is contained in:
debu-2 2026-10-05 04:53:45 +05:30
parent a679775f57
commit dd0ceef665
20 changed files with 1614 additions and 190 deletions

View file

@ -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}