brought out the UsersResponse interface (#119)

This commit is contained in:
hagen-danswer 2024-06-21 19:36:31 -07:00 committed by Chris Weaver
parent 3af81ca96b
commit 5c12a3e872
6 changed files with 40 additions and 13 deletions

View File

@ -85,12 +85,15 @@ async def demote_admin(
@router.get("/manage/users")
def list_all_users(
q: str,
accepted_page: int,
invited_page: int,
q: str | None = None,
accepted_page: int | None = None,
invited_page: int | None = None,
_: User | None = Depends(current_admin_user),
db_session: Session = Depends(get_session),
) -> AllUsersResponse:
if not q:
q = ""
users = [
user
for user in list_users(db_session, q=q)
@ -106,6 +109,26 @@ def list_all_users(
accepted_count = len(accepted_emails)
invited_count = len(invited_emails)
# If any of q, accepted_page, or invited_page is None, return all users
if accepted_page is None or invited_page is None:
return AllUsersResponse(
accepted=[
FullUserSnapshot(
id=user.id,
email=user.email,
role=user.role,
status=UserStatus.LIVE
if user.is_active
else UserStatus.DEACTIVATED,
)
for user in users
],
invited=[InvitedUserSnapshot(email=email) for email in invited_emails],
accepted_pages=1,
invited_pages=1,
)
# Otherwise, return paginated results
return AllUsersResponse(
accepted=[
FullUserSnapshot(

View File

@ -17,6 +17,7 @@ import useSWR, { mutate } from "swr";
import { ErrorCallout } from "@/components/ErrorCallout";
import { HidableSection } from "@/app/admin/assistants/HidableSection";
import BulkAdd from "@/components/admin/users/BulkAdd";
import { UsersResponse } from "@/lib/users/interfaces";
const ValidDomainsDisplay = ({ validDomains }: { validDomains: string[] }) => {
if (!validDomains.length) {
@ -51,13 +52,6 @@ const ValidDomainsDisplay = ({ validDomains }: { validDomains: string[] }) => {
);
};
interface UsersResponse {
accepted: User[];
invited: User[];
accepted_pages: number;
invited_pages: number;
}
const UsersTables = ({
q,
setPopup,

View File

@ -61,7 +61,7 @@ const Page = ({ params }: { params: { groupId: string } }) => {
{userGroup ? (
<GroupDisplay
users={users}
users={users.accepted}
ccPairs={ccPairs}
userGroup={userGroup}
refreshUserGroup={refreshUserGroup}

View File

@ -73,7 +73,7 @@ const Main = () => {
setShowForm(false);
}}
setPopup={setPopup}
users={users}
users={users.accepted}
ccPairs={ccPairs}
/>
)}

View File

@ -14,6 +14,7 @@ import { SourceMetadata } from "./search/interfaces";
import { EE_ENABLED } from "./constants";
import { destructureValue } from "./llm/utils";
import { ChatSession } from "@/app/chat/interfaces";
import { UsersResponse } from "./users/interfaces";
const CREDENTIAL_URL = "/api/manage/admin/credential";
@ -119,7 +120,8 @@ export function useFilters(): FilterManager {
export const useUsers = () => {
const url = "/api/manage/users";
const swrResponse = useSWR<User[]>(url, errorHandlingFetcher);
const swrResponse = useSWR<UsersResponse>(url, errorHandlingFetcher);
return {
...swrResponse,

View File

@ -0,0 +1,8 @@
import { User } from "../types";
export interface UsersResponse {
accepted: User[];
invited: User[];
accepted_pages: number;
invited_pages: number;
}